Добавить интеграцию с Asterisk можно по пути аккаунт администратора — раздел «Настройки» — подраздел «Интеграции» — кнопка «Добавить интеграцию» — Телефония — Asterisk.
Интеграция с Asterisk работает через ARI-интерфейс, поэтому перед подключением интеграции нужно выполнить некоторые настройки в самом Asterisk. Для этого потребуется подключить вашего специалиста по Asterisk, который отвечает за его работу и знаком с настройками.
Важные моменты
а) По умолчанию подключение выполняется через https. Если у вас оно не настроено, при подключении будет появляться ошибка авторизации. Чтобы это обойти, в поле IP-адрес укажите адрес с http, например: http://188.188.188.188
б) После заполнения всех полей в форме подключения интеграции, выполняется запрос на получение списка внутренних номеров операторов в Asterisk: https://docs.asterisk.org/Asterisk_16_Documentation/API_Documentation/Asterisk_REST_Interface/Endpoints_REST_API/ Если после заполнения всех полей список операторов не появляется, убедитесь, что у вас открыт доступ извне.
Суть интеграции заключается в том, чтобы настроить передачу событий по звонкам из Asterisk в Омнидеск, благодаря которым в аккаунте сотрудников будут отображаться соответствующие события и создаваться обращения по звонкам.
Настройки в Asterisk
1. Для взаимодействия с Омнидеском нужно создать отдельного пользователя в ARI: https://wiki.asterisk.org/wiki/display/AST/Getting+Started+with+ARI
Логин и пароль созданного пользователя нужно указать в форме подключения интеграции в Омнидеске (третий шаг на скриншоте в начале статьи).
2. В настройках вашего Dialplan добавьте макрос, который содержит следующие параметры и Webhook URL Омнидеска.
exten => s,1,Set(DATE_NOW=${STRFTIME(${EPOCH},,%d.%m.%Y-%H:%M:%S)}) same => n,set(OMNI_RESULT=${CURL([omnidesk_webhook_url],datetime=${DATE_NOW}&from_user=${ARG1}&to_user=${ARG2}&unique_id=${ARG3}&status=${ARG4})})
Не забудьте заменить [omnidesk_webhook_url] на URL из второго шага формы для подключения интеграции (см. второй пункт на скриншоте в начале статьи).
3. В Dialplan в точках, где происходят перечисленные ниже события, необходимо добавить вызов созданного макроса через функцию Macro либо через параметры для функций Queue и Dial.
События по звонкам, которые нужно передавать в Омнидеск
Имя события необходимо передавать в макросе в параметре status.
1. Входящий звонок без ответа:
а) "start of an incoming call" — старт звонка в Asterisk без перевода звонка на определенный номер оператора / очереди;
б) "incoming call to personal number" или "call to queue QUEUENAME" — звонок на конкретный номер оператора или на определенную очередь. Если звонок идёт на конкретного оператора, в параметре "to_user" ожидается внутренний номер оператора, если звонок идёт на очередь, то в "to_user" ожидаются номера всех операторов, содержащихся в очереди;
в) "incoming call is ended" — звонок завершен.
2. Входящий звонок с ответом:
а) "start of an incoming call" — старт звонка в Asterisk без перевода звонка на определенный номер оператора / очереди;
б) "incoming call to personal number" или "call to queue QUEUENAME" — звонок на конкретный номер оператора или на определенную очередь. Если звонок идёт на конкретного оператора, в параметре "to_user" ожидается внутренний номер оператора, если звонок идёт на очередь, то в "to_user" ожидаются номера всех операторов, содержащихся в очереди;
в) "incoming call answered" — оператор ответил на звонок. Если звонок шёл на очередь, в параметре "to_user" ожидается внутренний номер оператора, ответившего на звонок;
г) "incoming call is ended" — звонок завершен. У этого события также ожидается параметр "call_duration", в котором должна быть передана длительность звонка.
3. Исходящий звонок без ответа:
а) "outgoing call start" — начало исходящего звонка;
б) "outgoing call ended" — исходящий звонок завершен.
4. Исходящий звонок с ответом:
а) "outgoing call start" — начало исходящего звонка;
б) "answering an outgoing call" — абонент ответил на звонок;
в) "outgoing call ended" — исходящий звонок завершен. У этого события также ожидается параметр "call_duration", в котором должна быть передана длительность звонка.
5. Запись разговора:
а) "call record" — здесь должен выполняться curl-запрос, который передаст файл записи разговора.
Пример запроса
curl -vvvvvvvv --location --request POST 'https://company.omnidesk.ru/webhooks/asterisk/cc75532f' -F status=record -F unique_id=1640854015.26 -F record=@/var/spool/asterisk/monitor/2021/12/30/q-50-+375291701899-20211230-114656-1640854015.26.mp3
Возможности интеграции
Чтобы подробнее ознакомиться с основными моментами по работе интеграции, рассмотрим следующие сценарии:
Входящий звонок от известного пользователя
1. Уведомление о входящем вызове отображается в правом верхнем углу. Если в Омнидеске уже есть пользователь с таким номером телефона, в уведомлении отобразятся его данные:
Вы можете самостоятельно выбрать, какие данные о пользователе выводить в уведомлении. Для этого активируйте форму «Входящий звонок» у нужных полей (аккаунт администратора — раздел «Поля данных» — редактирование поля):
По умолчанию мы выводим поля «Полное имя», «Email-адрес» и «Компания».
2. Когда сотрудник принимает звонок через софтфон, мы автоматически открываем профиль пользователя:
Далее есть два варианта:
а) создать новое обращение по звонку (через ссылку над основной областью);
б) привязать звонок к одному из предыдущих обращений канала «Звонки», если пользователь повторно звонит по какому-то вопросу.
Рассмотрим подробнее каждый из вариантов.
а) В этом случае у сотрудника открывается страница создания обращения по звонку с уже заполненным полем «Пользователь». Находясь на этой странице, сотрудник может:
зафиксировать тему и суть звонка, заполнив соответствующие поля и нажав на кнопку «Создать». Эта информация поможет в дальнейшем быстро понять, о чём был разговор, без необходимости прослушивать его запись;
дополнить или изменить данные пользователя, нажав на ссылку «отредактировать данного пользователя»;
вернуться в профиль пользователя (через ссылку «Перейти в профиль пользователя» в шапке основной области), чтобы всё-таки выбрать одно из предыдущих обращений для связки с текущим звонком.
После того как сотрудник заполнит поля «Тема», «Суть звонка» и нажмёт на кнопку «Создать», откроется страница созданного обращения:
Пока сотрудник продолжает общаться с пользователем, в сообщении отображается надпись «Звонок в процессе» и нет записи разговора. После окончания разговора страница обновляется, и к сообщению прикрепляется запись разговора.
Важный момент: если сотрудник, находясь на странице создания обращения по звонку, ничего не заполнит и закроет страницу или же перейдёт в другой раздел, по окончании разговора мы всё равно создадим новое обращение со стандартной темой «Входящий звонок с [номер телефона]» и статусом «открытое», где в качестве первого ответа будет пустое сообщение с плеером для прослушивания записи разговора.
б) Если сотрудник выбирает одно из предыдущих обращений пользователя для привязки текущего звонка, то после перехода на страницу обращения он может:
зафиксировать звонок в открытом обращении, нажав на соответствующую ссылку;
вернуться к профилю пользователя для выбора другого обращения или создания нового.
При нажатии на ссылку «Зафиксировать звонок в текущем обращении» появляется специальное поле для указания сути звонка. После сохранения изменений в обращении появляется новое сообщение с записью звонка.
Входящий звонок от неизвестного пользователя
3. Уведомление о входящем вызове отображается в правом верхнем углу. Если в Омнидеске нет пользователя с таким номером телефона, об этом сообщается в уведомлении:
4. Когда сотрудник принимает звонок через софтфон, в уведомлении появляются две опции: «Найти пользователя из базы для связки» и «Создать новое обращение по звонку».
Рассмотрим подробнее каждую из них.
а) Ссылка «Найти пользователя для связки» перебрасывает сотрудника на страницу поиска и автоматически выставляет фильтр «пользователи», чтобы в результатах поиска были только пользователи.
Сотрудник может найти нужного пользователя по любым данным: имени, email-адресу, названию компании, тексту в заметке, значениям в кастомных полях и т. д.
После того как сотрудник нашёл нужный профиль и связал с ним звонящего пользователя, в данные пользователя автоматически добавляется номер телефона, с которого он звонит.
Дальнейшие действия сотрудника идентичны описанным в первом примере, когда пользователь был известен в момент поступления звонка.
б) Если после ответа на звонок сотрудник выбирает «Создать новое обращение по звонку», он попадает на страницу создания обращения. В таком случае мы автоматически создаём нового пользователя по номеру телефона и даём сотруднику возможность дополнить информацию о нём, нажав на ссылку «Отредактировать созданного пользователя».
В ситуации, когда звонок завершается до того, как сотрудник создаёт обращение, мы автоматически создаём обращение, подхватывая тему и суть звонка, если сотрудник их заполнил.
Исходящий звонок пользователю через софтфон
В этом случае мы также подтянем информацию об исходящем звонке в Омнидеск, и сотрудник сможет выполнить необходимые действия по аналогии с входящими звонками:
создать нового пользователя, если такого номера ещё нет в базе Омнидеска;
создать новое обращение по звонку;
привязать звонок к существующему обращению.
5. Если при звонке через софтфон сотрудник не открывает Омнидеск и не создаёт обращение (или прикрепляет звонок к одному из предыдущих обращений), по окончании звонка в Омнидеске автоматически создаётся обращение со статусом «закрытое» и ответственным.
Фиксация пропущенных звонков от пользователя
6. Если звонок пользователя остаётся без ответа, мы создаём обращение со стандартной темой «Пропущенный звонок с [номер телефона]» и красной иконкой трубки, чтобы сотрудникам было проще определить пропущенные звонки в общем списке обращений:
Также в списке обращений можно активировать столбец «Телефон», чтобы вы могли сразу видеть номер телефона пользователя.
7. Пропущенные звонки от одного пользователя группируются, чтобы исключить ситуацию, когда настойчивый пользователь будет создавать десятки обращений и засорять ими список:
Конечно, группировка пропущенных звонков в рамках одного обращения происходит лишь в случае, если между ними не было состоявшегося звонка между пользователем и сотрудником. Если разговор был, по следующему пропущенному звонку мы создадим отдельное обращение.
8. Когда в обращении по пропущенному звонку появляется исходящий звонок от сотрудника (клиент при этом должен ответить и должна быть запись разговора), тогда цвет трубки меняется на стандартный — зелёный.
Логика статусов
9. Если сотрудник принял звонок пользователя и сам вручную создал обращение по звонку, у обращения выставится статус «в ожидании».
10. У обращений, созданным по пропущенным звонкам, выставляется статус «открытое».
11. Если сотрудник перезвонит пользователю, но тот не поднимет трубки, статус «открытое» останется.
12. Когда в списке есть обращение по пропущенному звонку от пользователя, возможны следующие варианты изменения статуса такого обращения:
а) Пользователь снова звонит, сотрудник принимает звонок и создаёт новое обращение по звонку
Мы автоматически меняем статус обращения по пропущенному звонку на «закрытое», подразумевая, что пользователь с сотрудником решают все вопросы в рамках нового обращения, которое создал сотрудник.
б)Пользователь снова звонит, сотрудник принимает звонок и добавляет его в обращение по пропущенному звонку
Когда сотрудник завершит такой звонок, в обращении выставится статус «в ожидании», так как сотрудник обсудил с пользователем всё, что нужно (см. пункт 14).
в) Сотрудник набирает пользователя напрямую через софтфон, тот принимает звонок, и сотрудник создаёт новое обращение по звонку
В этом случае мы также автоматически меняем статус обращения по пропущенному звонку на «закрытое», подразумевая, что пользователь с сотрудником решают все вопросы в рамках нового обращения, которое создал сотрудник.
г) Сотрудник набирает пользователя напрямую через софтфон, тот принимает звонок, и сотрудник добавляет звонок в обращение по пропущенному звонку
При завершении звонка обращение получит статус «в ожидании».
14. Если при звонке через софтфон сотрудник не открывает Омнидеск и не создаёт обращение (или прикрепляет звонок к одному из предыдущих обращений), по окончании звонка в Омнидеске автоматически создаётся обращение со статусом «закрытое» и ответственным.
Учёт в статистике
15. Подраздел «Общая нагрузка»
Всего новых обращений: количество новых обращений по входящим и исходящим звонкам, созданным в выбранный период.
Новых обращений от клиентов: количество новых обращений по входящим звонкам, созданным в выбранный период.
Снова открытых обращений: количество обращений по входящим и исходящим звонкам, созданным ранее, но снова открытым в выбранный период.
Обращений в работе: количество обращений по входящим и исходящим звонкам, в которых сотрудники выполняли какие-то действия (добавляли ответы или заметки, меняли параметры) в выбранный период.
Обращений с ответом: количество обращений по входящим и исходящим звонкам, в которых есть запись разговора между пользователем и сотрудником в выбранный период.
Закрытых обращений: количество обращений по входящим и исходящим звонкам, закрытых в выбранный период, в которых есть запись разговора между пользователем и сотрудником.
16. Подраздел «Пиковая нагрузка»
Новых и снова открытых обращений: сумма новых, созданных в выбранный период, и снова открытых в выбранный период обращений по входящим и исходящим звонкам.
Обращений в работе: количество обращений по входящим и исходящим звонкам, в которых сотрудники выполняли какие-то действия (добавляли ответы или заметки, меняли параметры) в выбранный период.
17. Подраздел «Каналы обращений»
Новых и снова открытых обращений: сумма новых, созданных в выбранный период, и снова открытых в выбранный период обращений по входящим и исходящим звонкам.
Обращений в работе: количество обращений по входящим и исходящим звонкам, в которых сотрудники выполняли какие-то действия (добавляли ответы или заметки, меняли параметры) в выбранный период.
Закрытых обращений: количество обращений по входящим и исходящим звонкам, закрытых в выбранный период, в которых есть запись разговора между пользователем и сотрудником.
18. Подраздел «Скорость ответов»
Скорость первого ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Скорость любого ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Скорость написания ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Количество ответов для закрытия: при расчёте показателя учитываются сообщения в обращениях по входящим и исходящим звонкам, в которых есть запись разговора между пользователем и сотрудником в выбранный период.
Скорость закрытия: при расчёте показателя учитываются обращения по входящим и исходящим звонкам закрытые в выбранный период, в которых время создания и закрытия отличаются. Если время создания и закрытия полностью совпадают, обращения не учитываются, чтобы скорость не получилась нулевой.
19. Подраздел «Соблюдение SLA»
Не соблюден SLA первого ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Не соблюден SLA любого ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Не соблюден SLA закрытия: при расчёте показателя учитываются обращения по входящим и исходящим звонкам закрытые в выбранный период, в которых время создания и закрытия отличаются. Если время создания и закрытия полностью совпадают, обращения не учитываются, чтобы скорость не получилась нулевой.
20. Подраздел «Лучшие в команде»
Всего новых обращений: количество новых обращений по входящим и исходящим звонкам, созданным в выбранный период.
Новых обращений от клиентов: количество новых обращений по входящим звонкам, созданным в выбранный период.
Снова открытых обращений: количество обращений по входящим и исходящим звонкам, созданным ранее, но снова открытым в выбранный период.
Обращений в работе: количество обращений по входящим и исходящим звонкам, в которых сотрудники выполняли какие-то действия (добавляли ответы или заметки, меняли параметры) в выбранный период.
Обращений с ответом: количество обращений по входящим и исходящим звонкам, в которых есть запись разговора между пользователем и сотрудником в выбранный период.
Скорость первого ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Не соблюден SLA первого ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Скорость любого ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Не соблюден SLA любого ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Скорость написания ответа: обращения по каналу «Звонки» не учитываются в этом показателе.
Общее количество ответов: количество сообщений в обращениях по входящим и исходящим звонкам, в которых есть запись разговора между пользователем и сотрудником в выбранный период.
Количество ответов для закрытия: при расчёте показателя учитываются сообщения в обращениях по входящим и исходящим звонкам, в которых есть запись разговора между пользователем и сотрудником в выбранный период.
Закрытых обращений: количество обращений по входящим и исходящим звонкам, закрытых в выбранный период, в которых есть запись разговора между пользователем и сотрудником.
Скорость закрытия: при расчёте показателя учитываются обращения по входящим и исходящим звонкам закрытые в выбранный период, в которых время создания и закрытия отличаются. Если время создания и закрытия полностью совпадают, обращения не учитываются, чтобы скорость не получилась нулевой.
Не соблюден SLA закрытия: при расчёте показателя учитываются обращения по входящим и исходящим звонкам закрытые в выбранный период, в которых время создания и закрытия отличаются. Если время создания и закрытия полностью совпадают, обращения не учитываются, чтобы скорость не получилась нулевой.