Skip to content

Настройка самостоятельных сущностей

Необходимо понимать, что для проведения настройки на текущем этапе, необходимо наличие уже настроенного сервера телефонии на базе Asterisk.

Сущности, которыми оперирует система, являются логически связанными между собой и имеют иерархию, поэтому создание и настройка некоторых из них требует наличия в системе уже настроенных связанных подсущностей. В связи с этим настройка системы будет описана начиная с сущностей, которые являются самостоятельными единицами - то есть их создание не требует наличия подсущностей. Чтобы лучше понять, о чём идёт речь, структуру системы с некоторыми опущениями можно представить в виде графа без циклов, листьями которого как раз являются указанные самостоятельные сущности.

Сервера телефонии

Сущность сервер телефонии необходима для коммуникации системы IqDialer с уже установленным и настроенным в call-центре сервером телефонии на базе Asterisk.

Создание, редактирование и удаление серверов телефонии доступно на странице /dialer/ui/superviser/#/telephony_servers

Для базового доступа к серверам телефонии (создание и редактирование) пользователю понадобятся следующие права доступа:

  • права на создание, чтение, изменение и удаление серверов телефонии alt_text
  • право на полный просмотр лицензий со всеми атрибутами alt_text

На рисунке ниже представлен пример заполнения полей формы при создании сущности сервер телефонии. Обязательные поля формы помечены красным символом звёздочки (*).

Поле Внешний ID, является необязательным к заполнению, оно используется при интеграции системы IqDialer с другими сервисами для того, чтобы сторонняя система была избавлена от необходимости хранить на своей стороне ID обрабатываемой в системе IqDialer сущности. При создании этой сущности в поле внешний ID указывается ID соответствующей ей сущности, но уже на стороне стороннего сервиса. Поле должно быть уникальным, ограничений на используемые символы нет.

Поле Название необходимо для идентификации сервера телефонии в рамках системы IqDialer. Поле должно быть уникальным, ограничений на используемые символы нет.

Поле Тип предназначено для указания версии сервера Asterisk, с которым будет связан IqDialer. В настоящее время в качестве доступных для выбора версий выступают 11, 13, 16.

Поле Активность. Если сервер телефонии неактивен, то все кампании, связанные с ним, работать не будут.

Поле Настройки принимает строку формата json, в которой содержатся необходимые для работы сервера Asterisk параметры. На рисунке представлен пример содержимого поля настройки.

Поле Операторы - суммарное количество операторов всех активных серверов телефонии. Ограничивается лимитом лицензии. Настройки лицензии можно разделить по серверам телефонии.

Поле Каналы - суммарное количество каналов всех активных серверов. Также ограничивается лимитом лицензии.

alt_text alt_text alt_text

Внизу формы создания сущности доступны несколько кнопок. Кнопка проверить настройки предназначена для валидации содержимого поля настройки.

Кнопка создать нужна для сохранения в IqDialer сущности с указанными выше параметрами.

В большинстве случаев для работы call-центра достаточно одного сервера телефонии. Но в случае, если одномоментно совершается более 200 звонков, одного сервера может не хватить. В таком случае в системе предусмотрена возможность создания и работы сразу с несколькими серверами.

При редактировании сервера телефонии на вкладке Связанные ссылки можно увидеть кампании, очереди и операторов, которые используют сущность в данный момент.

На вкладке История можно увидеть историю изменений данной сущности.

Календари

Сущность календари необходима для указания времени, в которое кампании могут работать. Календари позволяют исключить случаи обзвона клиентов в нерабочее время, если кто-то из операторов после завершения рабочего дня забыл выйти из системы и оставил контакты активными и готовыми к приёму звонков.

Создание доступно на странице /dialer/ui/superviser/#/calendars

Для базового доступа к календарям (создание и редактирование) пользователю нужны следующие права доступа:

  • права на чтение, создание, изменение и удаление календарей alt_text
  • право смотреть все ветки отделов alt_text

alt_text

Поле Название является обязательным к заполнению.

Интервалы включения и Интервалы исключения отвечают за то, когда кампания будет работать, а когда нет.

Интервалы включения нужны, чтобы явно указать время, в которое кампания будет активна. Так, например, кампания по информированию клиентов о скидках на кожгалантерею в ноябре будет проходить в октябре. Обзвон клиентов должен осуществляться каждый будний день октября, с 9:00 до 18:00 по часовому поясу UTC+6.

alt_text

Интервалы исключения, в отличие от включающих, напротив, предназначены для указания времени, когда кампании гарантированно не должны работать.

Например, 15 октября у компании будет юбилей - 20 лет с момента основания. В связи с этим сотрудники с 16:00 будут находиться на корпоративе. Это необходимо отразить в настройках календаря, для этого создаётся исключающий интервал с соответствующими параметрами.

alt_text

При редактировании календаря на вкладке Связанные ссылки можно увидеть кампании, которые сейчас используют данный календарь.

Планировщики звонков

Данная сущность призвана указать кампании, когда и по каким правилам будет происходить обзвон.

Поле название обязательно к заполнению.

alt_text

Шаги представляют собой этапы, которые проходит лид после попадания в систему. У каждого планировщика может быть несколько таких этапов, имеющих свои правила обработки лида.

Поле задержка перед первым звонком необходимо для указания, сколько времени обязательно должно пройти между попаданием лида на данное правило(шаг) и первым исходящим вызовом к нему.

Поле максимальное количество повторов нужно для ограничения числа возможных исходящих звонков лиду в рамках создаваемого правила.

Поле стратегия выбора телефона сообщает, по какому правилу будет происходить выбор номера телефона лида. Это необходимо на тот случай, если у лида указано несколько телефонных номеров, например, домашний, рабочий и мобильный телефоны. На данный момент в системе присутствует три стратегии - circle, first_priority, phone_type.

circle - при каждом новом вызове лиду в рамках данного правила (шага) будет выбираться новый номер лида, то есть по очереди будут перебираться все номера.

first_priority - при каждом вызове в рамках правила будет выбираться один и тот же наиболее приоритетный номер телефона (приоритеты для номеров телефонов указываются при загрузке лидов в систему, если приоритет явно не указан, по умолчанию ему будет установлено значение 100). Наиболее приоритетный номер телефона будет использоваться при всех попытках дозвона в рамках соответствующего шага обзвона.

phone_type - при выборе данной стратегии вызов будет осуществляться на номер телефона, тип которого соответствует типу, указанному в поле типы телефонов (тип телефона, так же как и приоритет, задаётся при загрузке лида в систему). Тип телефона должен быть указан аналогично тому, как он указывался в поле type объекта массива phones при создании лида через API. Указание типа телефона при создании лидов из csv-файла недоступно. Можно указывать также несколько типов через запятую, но необходимо понимать, что, если указанный тип не будет найден среди телефонов клиента, дозвон до этого клиента не состоится.

alt_text

Помимо указания стратегии выбора телефона необходимо также отметить стратегию выбора маршрута. В данном поле указываются созданные ранее маршруты.

Периоды активности позволяют настроить время, в которое будут происходить звонки. Для каждого шага можно создавать неограниченное количество интервалов, что позволяет достаточно гибко настроить время обзвона. Время в периодах активности указывается без учёта таймзоны, фактически это означает, что клиент получит звонок, когда местное время будет находиться в указанных в периоде рамках.

Например, период будет содержать время для осуществления звонков в будние дни, для этого в поле дни недели необходимо выбрать все дни недели с понедельника по пятницу, установить время начала и время окончания, например, с 09:00:00 до 18:00:00.

alt_text

Необходимо также указать правила обработки статусов вызовов в рамках данного шага.

Можно настроить правило по умолчанию сразу для всех статусов, кроме ANSWER. Если требуется для отдельных статусов указать свои настройки, нужно кликнуть на добавить правило обработки статусов, выбрать в выпадающем списке статусы, для которых будет создано правило обработки и выбрать действие (реакцию) на соответствующий статус/статусы звонка. В зависимости от выбранного действия потребуется заполнить несколько дополнительных полей.

Всего для вызовов предусмотрено 9 статусов, ниже представлено краткое описание каждого из них.

Статус вызова Описание
CANCEL Вызов отменен
ANSWER На вызов был получен ответ
NOANSWER На вызов не ответили
BUSY Получен сигнал занято
CONGESTION Канал перегружен
CHANUNAVAIL Канал недоступен (Для SIP, может быть в случае если пир не зарегистрирован)
FAST_DROP На вызов получили ответ и поместили звонок в очередь, но абонент ждал менее n (настраивается в кампании на обзвон) секунд в очереди, после чего завершил звонок
ABANDON На вызов получили ответ и поместили звонок в очередь, но абонент ждал более n (настраивается в кампании на обзвон) секунд в очереди, после чего завершил звонок
DROP На вызов получили ответ, абонент прослушал звонок менее n (настраивается в кампании на обзвон) секунд разговора, после чего завершил звонок
ERROR Статус назначается звонку при возникновении исключения в процессе оригинации вызова, либо если система получает от сервера телефонии не весь набор событий звонка. Такое возможно при разрыве соединения с сервером телефонии. Назначение звонку статуса ERROR влечёт установку этого статуса и на лида

При выборе действия повторный вызов в поле задержка перед следующим вызовом указывается, какую паузу сделать перед повторным вызовом лиду. Поле максимальное количество повторов показывает, сколько раз может быть получен статус, правило обработки которого настраивается в данный момент, прежде чем лид будет переведён на следующий шаг.

При выборе действия пересоздать в бакет нужно указать название бакета, в который будет перемещён лид, а также правило (шаг) расписания, на котором будет находиться лид после перемещения. В поле шаг правила отображаются шаги расписания звонков кампании, которой принадлежит выбранный бакет.

alt_text

Важно заметить, что обязательным является назначение действий для обработки всех статусов, кроме ANSWER.

При получении статуса ANSWER обзвон лида по умолчанию завершается, лид получает статус COMPLETED.

Также необходимо пояснить момент с указанием максимального количества повторов звонков. Количество повторов указывается, как глобально для правила (шага) расписания, так и для каждого правила обработки статусов при выборе действия повторный вызов.

При достижении максимального количества повторов, лид переносится на другое правило (шаг). Из всех установленных счётчиков повторов перенос лида инициирует тот, лимит которого достигается быстрее. Это будет легче пояснить на примере.

Допустим, глобально для правила расписания установлено количество повторов, равное 5. У правила расписания есть также 3 правила обработки статусов. Первое правило обрабатывает статус ABANDON - установлено действие завершить обзвон.

На статус CANCEL назначено действие повторный вызов, количество повторов - 4.

На все остальные статусы также назначен повторный вызов, количество повторов - 3.

Итак, если при первых трёх звонках лиду будет получен статус BUSY, то в соответствии с третьим правилом лид будет перемещён на следующее правило (шаг).

В другом случае, при получении, например, 3 раза статуса CANCEL и 2 раза любого другого статуса из третьего правила, лид будет перемещён на новое правило, поскольку достигнуто максимальное количество повторов из настроек правила расписания.

Важно отметить, что, несмотря на схожесть между периодами активности планировщика звонков и включающими и исключающими интервалами сущности календарь, у них совершенно разное предназначение: интервалы календаря указывают время активности кампании, а периоды активности планировщика гибко настраивают время обзвона.

Интервалы календаря в системе имеют больший вес. Так, если исключающий интервал календаря состоит из выходных дней недели, и период активности планировщика звонков также включает выходные дни, то, несмотря на это, обзвон в выходные дни происходить не будет, поскольку кампания будет неактивна.

Помимо статусов, в правилах обработки можно выбирать действие на SIP-коды. Они используются для более точной реакции на ответ провайдера связи (в связке с iqAntibot). Например, на стороне iqAntibot настраивается код 666, говорящий о том, что это автоответчик. Со стороны IqDialer выбирается действие завершить обзвон. Диапазоны кодов прописываются через тире, коды и интервалы - через запятую.

SIP-коды более приоритетны. По умолчанию телефония приводит SIP-коды к статусам. В таблице ниже приведены стандартные коды.

SIP-код Расшифровка
Информационные ответы
100 Trying – запрос обрабатывается
180 Ringing – вызываемый пользователь определен. Идет сигнал о входящем вызове
181 Call Is Being Forwarded – вызов переадресовывается к другому пользователю
182 Queued – вызываемый абонент недоступен, вызов поставлен в очередь
183 Session Progress – данный ответ используется для передачи описания медианных SDP
Успех выполнения запроса
200 OK – успешное выполнение запроса
202 Accepted – запрос принят в обработку
Переадресация
300 Multiple Choices – в ответе указаны несколько SIP адресов, где можно найти вызываемого пользователя
301 Moved Permanently – вызываемый абонент больше не находится по адресу, указанному в запросе
302 Moved Temporarily – вызываемый абонент временно не находится по адресу, указанному в запросе
305 Use Proxy – входящий вызов должен пройти через прокси-сервер
380 Alternative Service – запрошенная услуга недоступна, но есть альтернативные варианты
Ошибка Клиента
400 Bad Request – некорректный запрос, запрос непонятен серверу
401 Unauthorized – ответ, что пользователь еще не авторизован на сервере, после этого ответа посылается повторный запрос RIGISTER с логином и паролем
402 Payment Required – требуется оплата
403 Forbidden – абонент не зарегистрирован, не существует
404 Not Found – вызываемый абонент не найден на сервере
405 Method Not Allowed – метод не поддерживается сервером
406 Not Acceptable – пользователь недоступен
407 Proxy Authentication Required – необходима аутентификация на сервере
408 Request Timeout – время обработки запроса истекло
409 Conflict – запрос не может быть выполнен из-за конфликта с текущим состоянием сервера/клиента
410 Gone – запрошенный пользователь больше не доступен на сервере и нет адреса для перевода вызова
411 Length Required – сервер отказывается принимать запрос без определенного поля Content-Length
413 Request Entity Too Large – сервер отказывается обслуживать запрос, т.к. размер запроса слишком велик
414 Request-URI Too Large – сервер отказывается обслуживать запрос, потому что запрашиваемый URI больше, чем сервер может обработать
415 Unsupported Media Type – сервер отказывается обработать запрос, потому что тело сообщения запроса находится в формате, который сервер не поддерживает. Сервер должен вернуть список допустимых форматов, используя Accept, Accept-Encoding и Accept-Language в поле заголовка
420 Bad Extension – сервер не понял расширение протокола SIP
480 Temporarily not available – направление временно недоступно
481 Call Leg/Transaction Does Not Exist – этот ответ будет возвращен в двух случаях: сервер получил запрос BYE, который не соответствует любому существующему вызову или сервер получил запрос CANCEL, что не соответствует существующим транзакция
482 Loop Detected – обнаружен замкнутый маршрут передачи запроса
483 Too Many Hops – превышено число прохода прокси-серверов, чем указано в поле Max-Forwards
484 Address Incomplete – в запросе неполный адрес
485 Ambiguous – адрес вызываемого пользователя не однозначен
486 Busy Here – абонент занят
487 Request Terminated – запрос отменен, обычно приходит при отмене вызова
Ошибка Сервера
500 Internal Server Error – внутренняя ошибка сервера
501 Not Implemented – сервер не поддерживает функциональные возможности, необходимые для выполнения запроса
502 Bad Gateway – сервер, действуя в качестве шлюза или прокси-сервера, получил недопустимый ответ от подчиненного сервера, к которому он обратился для выполнения запроса
503 Service Unavailable – сервер в настоящее время не в состоянии обработать запрос из-за временной перегрузки или технического обслуживания сервера
504 Gateway Time-out – сервер, действуя в качестве шлюза, не получил своевременного ответа от сервера (например, сервер определения местоположения), к которому он обратился для выполнения запроса
505 SIP Version not supported – сервер не поддерживает или отказывается поддерживать версию протокола SIP, который был использован в сообщении запроса
Глобальная Ошибка
600 Busy Everywhere – вызов дошел до вызываемого абонента, но вызываемый абонент занят и не желает принять вызов в настоящее время
603 Decline – вызов дошел до вызываемого абонента, но вызываемый абонент занят и не желает принять вызов, не указывая причину отказа
604 Does not exist anywhere – сервер имеет точную информацию о том, что пользователя, указанного в поле To не существует нигде. Поиск пользователя в другом месте не даст никаких результатов
606 Not Acceptable – сервер установил соединение с абонентом, но отдельные параметры, такие, как тип запрашиваемой информации, полоса пропускания, вид адресации недоступны

На вкладке связанные ссылки можно увидеть кампании, которые сейчас используют данный планировщик звонков.

На вкладке История можно увидеть историю изменений данной сущности.

Для базового доступа к планировщикам звонков (создание и редактирование) пользователю понадобятся следующие права доступа:

  • права на создание, чтение, изменение и удаление планировщиков звонков alt_text
  • право смотреть все ветки отделов alt_text

Маршрутизация

Сущность маршрут предназначена для настройки того, в каком виде исходящий звонок поступит непосредственно на сервер телефонии, а также, как он будет им обработан.

Для базового доступа к маршрутизации (создание и редактирование) пользователю понадобятся следующие права доступа:

  • права на создание, чтение, изменение и удаление маршрутов alt_text
  • право на полный просмотр серверов телефонии alt_text

При создании нового маршрута заполнить поле Caller ID - именно значение из этого поля будет обозначать на телефонии номер, с которого сделан звонок.

Поле регулярные выражения позволяет задать регулярные выражения, в соответствии с которыми будет обработан вызываемый номер телефона. Создавать и тестировать регулярные выражения удобно с использованием общедоступного сервиса, расположенного по адресу https://regex101.com. Возможно задать несколько регулярных выражений (шаблонов) с помощью кнопки добавить пару.

Поле преобразование номера телефона также предназначено для модификации вызываемого номера. Подстановка номера в данное поле происходит путём указания в нём {PHONE}, в котором он как раз и хранится. Важно заметить, что, если в маршруте задано регулярное выражение, то в {PHONE} номер телефона содержится уже после обработки.

В поле сервер телефонии нужно выбрать один из созданных в системе ранее серверов телефонии. Именно через него будут маршрутизироваться вызовы.

Лимит вызовов нужен для ограничения количества одновременных вызовов, проходящих через этот маршрут.

alt_text alt_text

На форме создания маршрута присутствует ещё одна вкладка - настройки. Здесь настраивается, куда именно звонок поступит на сервере телефонии.

Поле тип нужно для указания, куда должен уйти вызов из системы. В настоящий момент доступен только вариант context.

После выбора context в блоке параметры также необходимо указать имя контекста на телефонии, в который и поступит вызов. Не всегда удобно самому полностью знать название контекста, поэтому в IqDialer реализована функция автодобавления. То есть при написании первых трех символов названия выдаются подсказки из списка контекстов, которые уже есть на сервере телефонии, необходимо только выбрать нужный.

alt_text

Провайдеры хранилища лидов

Сущность нужна для указания системе, откуда будет происходить выбор лидов для их дальнейшего обзвона.

Для базового доступа к провайдерам уведомлений (создание и редактирование) пользователю понадобятся права на их создание, чтение, изменение и удаление. alt_text

При создании провайдера необходимо выбрать его тип. В настоящий момент доступен только один вариант - Local storage. Он говорит о том, что лиды для обзвона будут выбираться из тех, которые уже загружены в систему, обзвон будет происходить в соответствии с заданными в системе настройками.

Для выбранного типа Local storage требуется заполнить несколько дополнительных полей - указать токен и URL-адрес API системы.

alt_text

Несмотря на то, что в системе для провайдера хранилища лидов доступен только тип Local storage, возможна также доработка под нужды клиента. Например, можно добавить получение лидов, которым можно осуществлять звонок, из сторонней системы, тогда IqDialer будет систематически, например, каждую минуту получать лидов из другого источника.

Провайдеры уведомлений

Сущность провайдеры уведомлений необходима для информирования сторонних сервисов о событиях, происходящих в системе IqDialer.

Работа с провайдерами уведомлений осуществляется на странице /dialer/ui/superviser/#/notification_providers

При создании провайдера уведомлений стандартно нужно заполнить поля внешний ID, название.

Также необходимо указать тип провайдера уведомлений. Сейчас в выпадающем списке доступно 3 варианта: iqtek_web_panel, rabbitmq, web_hook.

В зависимости от выбранного типа потребуется заполнить несколько полей с настройками.

  • Тип iqtek_web_panel необходим для отправки уведомлений из системы IqDialer в панель оператора IqArmOperator. Таким образом, данный тип провайдера уведомлений потребуется лишь в том случае, если клиент вместе с панелью супервайзера системы IqDialer использует также и АРМ оператора. При выборе данного типа необходимо заполнить поля настроек: API URL - в данном поле указывается URL-адрес API микросервиса, ответственного за отправку событий в панель оператора, токен и пароль - значения данных полей совместно используются для авторизации запросов к микросервису, который отвечает за отправку событий в панель оператора. Создание провайдера типа iqtek_web_panel происходит при инсталяции системы и лишь в том случае, если также используется IqArmOperator.

  • При выборе типа rabbitmq информирование сторонних сервисов будет происходить с помощью программного брокера сообщений RabbitMQ. Для настройки необходимо заполнить специфичные настройки, которые система IqDialer будет использовать для подключения к брокеру и публикации сообщений о выбранных в провайдере уведомлений событиях.

Таким образом, IqDialer выступает в терминологии RabbitMQ лишь как producer (поставщик). А сам RabbitMQ устанавливается отдельно от системы автообзвона и является полностью независимым.

В RabbitMQ для работы провайдера уведомлений должен быть настроен следующий минимум:

  • создан exchange - он является точкой входа и маршрутизатором/роутером всех сообщений. Exchange принимает сообщения от приложения-publisher и направляет их в очереди сообщений с помощью ключей маршрутизации (routing key). Имя созданного exchange нужно указать в поле Exchange настроек провайдера уведомлений.
  • установлен binding - связь между exchange и очередью. Binding задаётся в настройках exchange - нужно установить routing key и название очереди, в которую будут маршрутизироваться сообщения. Имя routing key также записываем в соответствующее поле в настройках провайдера.

Возможен также вариант создать в RabbitMQ только очередь сообщений. В таком случае в настройках провайдера поле Exchange нужно оставить пустым, а в поле Routing key указать название созданной очереди. Несмотря на то, что Exchange специально не создавался, сообщения не отправляются непосредственно в очередь, они обязательно проходят через exchange. Но в этом случае срабатывает специальная точка обмена, которая определяет нужную очередь, исходя из того, что routing key совпадает с названием очереди.

Поля host, port, login, password, virtualhost нужны для соединения с сервером RabbitMQ.

По умолчанию RabbitMQ слушает порт 5672.

Виртуальные хосты обеспечивают способ разделения приложений с использованием одного и того же экземпляра RabbitMQ. Сразу после инсталляции RabbitMQ имеет лишь один виртуальный хост, поэтому в поле virtualhost в таком случае устанавливается “ / ”.

После заполнения всех полей можно проверить их корректность, для этого нужно нажать на кнопку Проверить настройки. При этом IqDialer попробует опубликовать в очереди тестовое сообщение, и в случае успеха в форме провайдера появится уведомление “Настройки действительны”.

Сообщения в очереди можно посмотреть с помощью плагина RabbitMQ Management, который предоставляет удобный интерфейс, позволяющий контролировать сервер RabbitMQ через веб-браузер. Вычитать сообщение можно в разделе Get messages вкладки Queues панели управления.

alt_text

Ещё один из способов проверки наличия сообщений в очереди - воспользоваться на сервере, на котором установлен RabbitMQ, консольной командой rabbitmqadmin get queue=QueueName.

alt_text

  • При выборе типа web_hook на указанный в настройках url будет отправляться http запрос со всей имеющейся по событию информацией. Помимо url можно также указать headers(заголовки), которые будут присутствовать в запросах. Это требуется, например, для авторизации запросов в стороннем сервисе. В поле timeout указывается максимальное время ожидания ответа от сервера, на который отправляется web-hook. Также можно установить галочку напротив verify ssl, что сделает обязательным процедуры валидации SSL-сертификата. Помимо полей с настройками для типов провайдеров уведомлений, необходимо также выбрать события, о которых система с помощью провайдера уведомлений будет информировать сторонние сервисы. Сейчас поддерживается уведомление об 11 событиях:
Системные события События звонков События лидов События операторов
Создание лида Начало вызова лида Лид ответил Вызов к оператору
Обновление лида Перевод звонка Обработка лида завершена Оператор ответил на вызов
Окончание вызова лида Оператор завершил обслуживание вызова
Оператор не ответил на вызов

При возникновении одного из указанных событий, если провайдер уведомлений был на него настроен, сторонняя система получит соответствующее сообщение. Сообщение будет представлено в виде json-строки, с примером сообщений по каждому событию можно ознакомиться в разделе примеры событий

При создании провайдера уведомлений также по необходимости нужно поставить галочку напротив поля использовать повторы и заполнить появившиеся дополнительные поля.

Попыток - указывается число попыток по доставке уведомления на сторонний сервис.

Задержка - задержка в секундах между попытками доставки уведомлений.

Максимальная задержка - максимально допустимое время между попытками отправки уведомления.

Backoff - шаг приращения времени задержки при каждой следующей попытке (не может выйти за максимальную задержку).

alt_text alt_text

Очереди

При создании сущности нужно заполнить поля название и название очереди на сервере телефонии. В поле название нужно внести набор символов, по которому соответствующая очередь будет идентифицироваться в системе IqDialer.

Поле название очереди необходимо для указания соответствующей очереди на стороне телефонии. При заполнении этого поля выдаются подсказки из списка очередей, которые уже есть на сервере телефонии. Уже используемые очереди будут неактивны. Нужно выбрать одну из тех, что доступны.

При создании очереди необходимо также выбрать сервер телефонии.

alt_text

В форме создания очереди есть также вкладки агенты и кампании.

Заполнение вкладки агенты является необязательным, это необходимо только в случае использования панели оператора IqArmOperator либо для автоматизации попадания агентов в очередь (это можно осуществить также напрямую на сервере телефонии).

Итак, в случае необходимости на вкладке агенты выбираются операторы, которые будут обслуживать очередь. Именно между выбранными на данном этапе операторами будут распределяться звонки, попавшие в соответствующую очередь.

Для добавления операторов в очередь необходимо кликнуть на выпадающий список, в списке выделить нужных операторов, а затем нажать на кнопку добавить выбранные. После этого выбранные операторы отобразятся в таблице ниже.

Аналогичным образом с очередью связываются и кампании, именно из них в очередь будут поступать звонки.

После завершения конфигурирования очереди необходимо сохранить настройки нажатием кнопки создать и перейти к редактированию.

До версии дайлера 3.6.0, чтобы очередь отображалась в разделе мониторинга, необходимо было, чтобы очередь была привязана к активной кампании. И, пока кампания работает, мы видим очередь в разделе мониторинга.

После версии 3.6.0 все очереди, добавленные в дайлер, отображаются в разделе мониторинга.

Для базового доступа к очередям (создание и редактирование) пользователю понадобятся следующие права доступа:

  • чтение общего списка агентов без доступа к полному просмотру alt_text
  • чтение общего списка кампаний без доступа к полному просмотру alt_text
  • права на создание, чтение, изменение и удаление очередей alt_text
  • право на полный просмотр серверов телефонии alt_text

Бакеты

Бакет - это логическая сущность, которая лишь помогает организовать хранение лидов с указанием их приоритета. Именно в бакетах хранятся лиды при их загрузке в систему. А бакеты в свою очередь связаны с кампаниями. При создании бакета помимо стандартных полей, присутствующих у всех сущностей, необходимо заполнить поле кампания.

Поле кампания представляет собой выпадающий список, в котором необходимо выбрать одну из ранее созданных кампаний. Именно от выбора кампании для бакета зависит, каким образом будет происходить обзвон лидов, которые в нём содержатся. Бакет можно привязать только к одной кампании.

Поле планировщик звонков также представляет собой выпадающий список, в котором нужно выбрать один из созданных ранее планировщиков.

Значение поля приоритет должно быть целым неотрицательным числом. Порядок выборки бакетов и лидов из них задаётся в провайдере хранилища лидов настроек кампании.

alt_text

Если мы создаем бакет для стратегии callback, то появляется ещё одно поле, которое необходимо заполнить. Особенность данной стратегии в том, что здесь создается бакет индивидуально для каждого сотрудника. К этому бакету привязывается ответственный оператор. Это делается в поле ответственный агент, где из списка ранее созданных агентов мы выбираем нужного. Лиды, которые будут загружены в этот бакет, будут считаться задачами этого оператора.

alt_text

Форма создания бакета содержит также ещё одну вкладку - настройки.

На этой вкладке можно выбрать, в какой бакет будут перемещены лиды после того, как они пройдут по всем правилам расписания звонков.

alt_text

Для стратегии callback здесь также появляется дополнительное поле если оператор недоступен,перемещать в бакет. То есть, если подошло время звонка, а оператор, на которого была назначена эта задача, недоступен, лида можно перенести в бакет другому оператору или в общую очередь, чтобы звонок в назначенный момент был сделан.

alt_text

Если не указано, куда переносить лида в случае, если оператор не может совершить звонок, вернется ошибка и дозвон этому лиду далее осуществляться уже не будет.

Для создания и редактирования бакета пользователю необходимо назначить следующие права:

  • чтение общего списка агентов без доступа к полному просмотру alt_text
  • полный доступ к просмотру бакетов со всем атрибутами alt_text
  • чтение общего списка кампаний без доступа к полному просмотру alt_text
  • чтение общего списка планировщиков звонков без доступа к полному просмотру alt_text

Чтобы пользователь мог загружать лидов в бакет, необходимы права:

  • чтение общего списка агентов без доступа к полному просмотру alt_text
  • чтение общего списка пауз, доступных для агента alt_text
  • полный доступ к просмотру бакетов со всем атрибутами alt_text
  • полный доступ к просмотру планировщиков звонков со всеми атрибутами alt_text
  • чтение общего списка кампаний без доступа к полному просмотру alt_text
  • полный доступ к просмотру настраиваемых полей alt_text
  • доступ к созданию лидов alt_text
  • доступ к импорту файлов alt_text

Для доступа к звонкам из бакета пользователю необходимо:

  • чтение общего списка агентов без доступа к полному просмотру alt_text
  • полный доступ к просмотру бакетов со всем атрибутами alt_text
  • чтение общего списка планировщиков звонков без доступа к полному просмотру alt_text
  • чтение общего списка кампаний без доступа к полному просмотру alt_text
  • чтение общего списка очередей без доступа к полному просмотру alt_text
  • доступ к настройкам для прослушивания и выгрузки записей звонков alt_text

Лиды

Сущность лиды нужна для ведения в системе карточек людей, которым будет осуществляться обзвон. Как правило, лидами являются люди, проявившие интерес к услуге или продукту компании.

Создание лидов в системе может происходить двумя способами: с помощью импорта их из csv-файла, заполненного определенным образом, либо с помощью API.

Для импорта лидов из csv файла необходимо перейти в настройки бакета, в котором они будут находиться, перейти на вкладку Actions, а затем в блоке загрузить новый указать путь до файла с лидами, заполнить настройки импорта и нажать загрузить.

При заливке лидов есть возможность проверять номера телефонов на дубли по определенному полю (бакету, кампании). Для этого при загрузке csv-файла необходимо поставить галочку искать дубликаты во вкладке действия в настройках бакета.

alt_text

При заливке лидов номера телефонов, которые уже есть в базе, не должны добавиться к лиду. Если у лида все телефоны дубликаты, то лид не добавится.

Также в блоке содержатся ссылки для скачивания шаблонов заполнения csv-файла.

В csv файле содержится следующая информация по лиду: номер телефона (phone), таймзона (timezone), имя (name), а также массив дополнительных данных (data) для отображения в карточке, в который можно передавать любую необходимую информацию. В том числе, можно указать готовую ссылку, ведущую сразу на карточку в CRM.

alt_text

В версии дайлера 3.7.0 появилась возможность устанавливать имена столбцов при загрузке лидов из CSV файла. А в версии 3.8.0 появилась возможность сохранять заполненные поля в качестве шаблонов. При загрузке файла сначала открывается окно предпросмотра, где можно менять названия и сохранять шаблоны.

alt_text

Для лучшего понимания процедуры обзвона необходимо отметить, что при создании лида по значению поля bucket.id в системе происходит поиск связанной кампании, у кампании определяется расписание звонков, у расписания - первое правило (первый шаг). Далее с создаваемым лидом связывается экземпляр найденного расписания, лид автоматически устанавливается на первый шаг этого расписания. Однако, важно отметить, что интервалы активности правила расписания звонков уже сохраняются с учётом таймзоны лида. То есть из правила расписания берётся допустимое время для звонков, например, с 09:00 до 11:00 и сохраняется уже со значением корректировки под время лида: 09:00+03 до 11:00+03. Это означает, что лид получит звонок с 9:00 до 11:00 по местному времени (6:00 - 11:00 по Гринвичу).

В то же время при создании включающих и исключающих интервалов календаря, отвечающих за часы работы кампании, время также задаётся с указанием таймзоны. Например, кампания работает с 09:00+06 до 18:00+06 (03:00 до 12:00 по Гринвичу).

Таким образом, когда кампания начинает работать в соответствии с выставленным в календаре временем, происходит запрос на выборку активных лидов из активных бакетов, и путём сравнения текущего времени со временем в расписании лида определяется, можно ли ему звонить.

Таймзона лида не всегда известна, поэтому в IqDialer реализована функция автоопределения таймзоны по номеру телефона. Если при загрузке лидов в систему таймзона явно не указана, IqDialer автоматически ее вычисляет.

Необходимо отметить, что создание лидов в системе с помощью API является более гибким способом, например, при импорте лидов из csv-файлов нет возможности указать типы номеров телефонов, связанных лидов. В случае использования API такая возможность имеется.

Все лиды в системе имеют жизненный цикл. На каждом этапе жизненного цикла лиду присваивается некоторый статус. Всего сейчас существует 8 статусов, далее будет представлено краткое описание каждого.

Статус лида Описание
INITIALIZE Лид получает данный статус сразу после того как он был создан. Дальнейший обзвон будет происходить в соответствии с настройками кампании.
REINITIALIZE Статус назначается лиду в случае повторного создания его в системе

(к лиду применяются новые настройки обзвона, скидывается счётчики обзвона в кампании). Дальнейший обзвон будет происходить в соответствии с настройками кампании.

CONTINUE Лиду уже звонили, но не дозвонились, однако доступны ещё попытки дозвона. Дальнейший обзвон будет происходить в соответствии с настройками кампании.
ABANDON Лиду дозвонились, но он завершил звонок не дождавшись ответа оператора. Исходящие звонки больше осуществляться не будут.
BLACKLIST Статус назначается лиду в случае, если один из его номеров найден в чёрном списке. Исходящие звонки осуществляться не будут.
FAILED Назначается в случае исчерпания всех попыток дозвона. Исходящие звонки больше осуществляться не будут.
COMPLETED Устанавливается в случае успешного дозвона лиду. Исходящие звонки больше осуществляться не будут.
DELETED Присваивается в случае мягкого удаления лида из системы. Исходящие звонки больше осуществляться не будут.
RESERVED Лид получает данный статус в тот момент, когда начинается набор его номера. Статус автоматически снимается после окончания постобработки звонка данному лиду. Пока лид находится в этом статусе, попытка изменения его карточки вызовет ошибку.
ERROR Лид может получить данный статус лишь в двух случаях: звонку присвоен статус ERROR, либо в случае возникновения ошибки при постобработке вызова. Причины получения звонком статуса ERROR можно увидеть в описании возможных статусов звонков. Ошибки при постобработке возникают, например, если в правиле расписания на получение некоторого статуса звонка настроен перенос лида в бакет, который уже не существует в системе.

Чтобы удалить лида, необходимо со стороны CRM отправить запрос такого вида:

DELETE /leads/{id, external_id}

DELETE /leads/bulk (по условиям)

Также можно в разделе Лиды с помощью фильтров выбрать нужного лида, а затем выбрать действие Удалить.

Если нужно удалить лидов, которые ранее уже обзванивались, можно из виджета лиды по статусам на главной странице, кликнув на количество обработанных или необработанных лидов, перейти сразу во вкладку лиды, где уже будут применены нужные фильтры.

Возможны два варианта удаления: обычное и мягкое. Отличие soft delete состоит в том, что этот способ не удаляет лида полностью из базы, а переводит в статус DELETED, чтобы он оставался в системе, но звонки по нему уже не пойдут.

Важно помнить, что с лидом можно делать что угодно, пока по нему не начался звонок (его статус меняется на RESERVED) и до момента его завершения и обработки. Пока идет звонок, с ним ничего не сделать, это вызовет ошибку. Поэтому, если при попытке удалить лида, возникает ошибка, то делают отложенное повторное удаление через интервал времени (обычно минута).

Для базового доступа к лидам (создание и редактирование) пользователю понадобятся следующие права доступа:

  • права на чтение, создание, изменение, удаление (в том числе мягкое удаление) alt_text
  • право смотреть все ветки отделов alt_text

Для доступа к звонкам, помимо вышеперечисленных, нужно право на прослушивание и выгрузку записей. alt_text

Для доступа к истории, помимо базовых прав, понадобится право на чтение общего списка историй alt_text

Операторы

Сущность операторы, как и коды пауз, является дополнительным модулем и используется только в связке с панелью оператора IqArmOperator. Сущность операторы нужна для заведения в системе сотрудников, которые будут заниматься обслуживанием звонков.

При создании оператора обязательно необходимо выбрать пользователя, с которым оператор будет сопоставлен. Пользователи создаются в разделе права. После указания пользователя нужно задать полное имя оператора. Именно по значению этого поля оператор будет идентифицироваться другими людьми в системе. Поле телефон внутренний указывает на номер телефона оператора в рамках внутренней системы телефонии. В поле тип по умолчанию установлено значение none, если установить тип webrtc, то у оператора появится возможность пользоваться панелью оператора. Но для этого необходимо заполнить несколько дополнительных полей, которые дублируют настройки с сервера телефонии:

Pass - указывается значение поля Secret из настроек extension/user на сервере телефонии,

User - соответствует значению поля User Extension, на рисунке значение указано после слова Extension и обозначает внутренний номер оператора,

Display - соответствует значению поля Display Name, используется для указания идентифицирующих оператора данных, например, ФИО.

alt_text

При редактировании оператора появится возможность настройки автоподнятия трубки, где по умолчанию установлено значение Default. Это означает, что будет использоваться настройка, установленная в панели оператора. Также можно установить значение Y - автоподнятие включено, N - автоподнятие отключено.

alt_text

Для базового доступа к операторам (создание и редактирование) пользователю понадобятся следующие права доступа:

  • чтение общего списка пользователей без доступа к полному просмотру alt_text
  • права на создание, чтение, изменение и удаление операторов alt_text
  • alt_text
  • чтение общего списка очередей без доступа к полному просмотру alt_text
  • чтение общего списка серверов телефонии без доступа к полному просмотру alt_text

Реализована функция импорта операторов из CSV файла. Для этого нужно кликнуть на импортировать в правом верхнем углу, после чего появится окно загрузки.

alt_text

Сначала откроется предпросмотр файла, где можно будет назначить имена столбцов. А в версии 3.8.0 появилась возможность добавлять шаблоны при импорте для загрузки однотипных файлов в дальнейшем.

alt_text

Реализована возможность экспорта операторов в файл формата CSV или JSON. Для этого необходимо из общего списка операторов выбрать нужных, затем внизу страницы выбрать действие.

alt_text

Появятся дополнительные поля, где можно будет выбрать, какие поля таблицы нужно экспортировать, тип файла и кодировку.

alt_text

Коды пауз

Коды пауз нужны для обозначения состояния оператора. Знание состояния оператора необходимо как для правильного распределения звонков между операторами, так и для ведения подробной статистики работы сотрудников.

Именно от установленного оператором кода паузы зависит, будет ли система переводить на него звонки.

alt_text

Коды пауз являются дополнительным плагином для системы IqDialer и необходимы только в том случае, если клиенты будут использовать также панель оператора.

Работа с кодами пауз происходит на странице:

/dialer/ui/superviser/#/pauses

При создании кода пауз необходимо заполнить несколько специфичных полей.

Поле код используется для указания значения по которому код паузы будет идентифицироваться на телефонии. Значение этого поля не должно содержать кириллицу.

Поле сортировка необходимо для вывода кодов пауз на панели оператора в нужном порядке. Это необходимо для обеспечения удобства использования.

Поле системный позволяет указать, будет ли код паузы доступен на панели оператора для выбора. Если пауза является системной, то она недоступна оператору для ручного выбора, она устанавливается системой в автоматическом режиме. Системные коды пауз нельзя удалить, а также нельзя изменить код паузы. Можно изменить только цвет и описание.

В версии 3.7.0 было добавлено поле рабочий. В зависимости от того, является статус сотрудника рабочим или нет, система может учитывать или не учитывать его в расчетах резервирования.

Поле пауза требуется для указания, будет ли оператор доступен для назначения на него звонков в случае, если он находится в соответствующем статусе. Если значение поля = Y, то оператор, рассматриваемый системой лишь как ресурс, считается недоступным.

alt_text

Для базового доступа к кодам пауз (создание и редактирование) пользователю понадобятся права на их создание, чтение, изменение и удаление alt_text

Чёрные списки

Сущность чёрные списки, так же как и коды пауз, является дополнительным плагином и добавляется в систему только по желанию пользователя.

Чёрные списки необходимы для хранения в системе номеров телефонов лидов, звонки от которых не будут обрабатываться системой. Лиды, в номерах которых присутствуют номера из чёрных списков, автоматически получают статус BLACKLIST.

Добавление номеров в черный список происходит на странице /dialer/ui/superviser/#/black_lists. Номера в лист можно добавлять как по одному, так и набором, для этого нужно воспользоваться блоком загрузить список.

alt_text

Внизу страницы будет располагаться набор элементов управления, предназначенных для фильтрации, экспорта или удаления.

Для базового доступа к черным спискам (создание и редактирование) пользователю понадобятся права на их создание, чтение, изменение и удаление. alt_text

История

В этом разделе можно увидеть историю создания, обновления и удаления сущностей в системе.

alt_text

На главной странице отображаются события в хронологическом порядке. Если кликнуть на синюю кнопку справа от каждого события, можно будет увидеть список событий конкретно для этой сущности. А в версии 3.8.0 появилась возможность фиксировать историю попыток входа в систему.

alt_text

Распознавание номеров

В версии 3.7.0 была реализована возможность автоопределения таймзоны лида. Для этого появился раздел, где содержится информация о регионах, операторах сотовой связи и относящихся к ним DEF кодам.

На вкладке Регионы мы видим названия регионов и к какому часовому поясу они относятся.

alt_text

Столбец альтернативные имена содержит информацию о возможных альтернативных названиях этих регионов (в зависимости от регистра или сокращений).

В правом верхнем углу есть кнопка импортировать, с помощью которой можно загружать файлы с информацией о регионах.

alt_text

Сначала откроется предпросмотр файла, где можно будет назначить имена столбцов. А в версии 3.8.0 появляется возможность добавлять шаблоны при импорте для удобства загрузки однотипных файлов в дальнейшем.

alt_text

Вкладка Операторы содержит список операторов сотовой связи. Операторов также можно импортировать и создавать шаблоны.

Вкладка Коды содержит информацию о том, каким операторам связи и регионам соответствуют коды и диапазоны номеров. Для кодов также доступен импорт и шаблоны.

alt_text

На каждой из вкладок доступен фильтр.

alt_text

А также есть возможность ввести конкретный номер телефона, чтобы проверить, к какому региону и сотовому оператору он относится.

alt_text

Справа на каждой строчке расположены кнопки для удаления и редактирования.

Для базового доступа к распознаванию номеров (создание и редактирование) пользователю понадобятся следующие права:

  • право на импорт alt_text
  • права на создание, чтение, изменение и удаление def кодов alt_text
  • права на создание, чтение, изменение и удаление операторов связи alt_text
  • права на создание, чтение, изменение и удаление регионов alt_text

Сценарии

В версии 3.9.0 была реализована функция сценариев. Этот функционал позволяет открывать в панели оператора карточку лида и проставлять бизнес-статусы по результатам звонка без участия crm системы.

alt_text

Работа со сценариями происходит в соответствующей вкладке в меню в разделе "управление".

alt_text alt_text

Перед созданием самого сценария понадобится сначала продумать и создать результаты звонков и разделить их на категории. Категории предусмотрены в системе только для визуальной группировки и быстрой навигации по статусам.

alt_text

Чтобы создать новую категорию, нужно кликнуть на "добавить категорию" в правом верхнем углу.

alt_text

В открывшемся окне необходимо дать категории название. В поле сортировка указывается числовое значение, оно влияет на порядок отображения категорий. И также есть возможность выбрать цвет, которым будут маркироваться категории и статусы, относящиеся к ним.

По тому же принципу создаем результат звонка.

alt_text

В открывшемся окне указываем желаемое название статуса. Выбираем к какой категории он будет относится. Поле "код" может понадобится, если возникнет необходимость обращаться к сценарию из внешних систем. Поскольку поле обязательно к заполнению, можно продублировать здесь название.

alt_text

После этого можно переходить к настройкам самого сценария. В открывшемся окне нужно будет указать название создаваемого сценария.

alt_text

После этого откроется форма, в которой можно прописать сам скрипт. Если в сценарии это поле не заполнить, вкладка сценария у оператора не отобразится.

Для сценария можно установить максимальное время на обработку (например, 90 секунд). Если оператор не выбрал результат за это время, звонок автоматически получает статус "не обработан", и оператор переходит к следующему звонку.

Затем нужно будет выбрать, какие именно бизнес-статусы должны будут отображаться в карточке, и отметить их.

alt_text alt_text

В ближайшее время будет реализована возможность назначать на результат звонка действие:

  • перезвонить позже (с указанием времени)
  • добавить в черный список (больше не звонить)
  • пересоздать в бакет (например, для повторного обзвона)
  • продолжить обзвон (еще раз позвонить этому лиду в рамках текущей кампании)

Далее сценарий привязывается к кампании. То есть, чтобы сценарий и бизнес-статусы отобразились в панели оператора при вызове, сценарий должен быть привязан к кампании, с которой работает оператор. На вкладке "привязанные кампании" можно увидеть, в какие из кампаний данный сценарий был добавлен.