В нашей конфигурации «МедАнгел» (медицинская информационная система) реализована интеграция с сервисом CoMagic, позволяющая:
- совершать исходящие звонки
- отображать входящие звонки
- получать пропущенные звонки
- прослушивать записи разговоров
- отслеживание рекламных компаний
Исходящий вызов
Для совершения исходящего звонка необходимо отправить GET или POST запрос на адрес «callapi.comagic.ru». Мы реализовали с помощью POST запроса. В тело запроса передается json вида
{
"id": "e209c793-b062-4d8b-a637-1ef08fab086f",
"method": "start.simple_call",
"jsonrpc": "2.0",
"params": {
"access_token": " КлючАутентификации ",
"first_call": "operator",
"virtual_phone_number": "ВиртуальныйНомер",
"contact": "12",
"operator": "НомерТелефона",
"direction": "out"
}
}
Параметры:
— id – ид исходящего звонка в нашей МИС
— method – имя метода
— access_token – ключ аутентификации. Можно получать двумя способами: или вызвать перед звонком метод авторизации, который вернет ключ, или в личном кабинете CoMagic настроить статичный ключ.
— first_call – указываем, куда сначала нужно дозвониться
— virtual_phone_number – виртуальный номер, зарегистрированный в CoMagic, с которого будет осуществляться вызов
— contact – номер SIP
— operator – номер телефона, на который нужно дозвониться
— direction – направление звонка
В случае успешного выполнения запроса в синхронном режиме возвращается ответ
{
"jsonrpc": "2.0",
"id": "req1",
"result": {
"data": {
"call_session_id": 237859081
}
}
}
Уведомление о входящем звонке
В личном кабинете CoMagic есть возможность настроить различные уведомления. В нашем случае это «Соединение» — когда оператор поднимает трубку, приходит уведомление и на экране открывается форма с данными звонка (номер телефона, ФИО пациента, рекламная компания).
Для получения уведомлений был создан http-сервис с POST методом.
Структура уведомления настраивается в личном кабинете CoMagic. В нашем случае json имеет структуру
{
"notification_name":{{notification_name}}, //название уведомления
"external_id":{{external_id}}, //идентификатор звонка во внешней системе
"contact_phone_number":{{contact_phone_number}}, //номер абонента
"contact_id":{{contact_id}}, //идентификатор контакта
"employee_full_name":{{employee_full_name}}, //фио сотрудника
"employee_id":{{employee_id}}, //ид сотрудника
"call_session_id":{{call_session_id}}, //идентификатор звонка
"direction":{{direction}}, //направление
"campaign_id":{{campaign_id}}, //ид рекламной компании
"connection_time":{{connection_time}}, //дата время поднятия трубки
"extension_phone_number":{{extension_phone_number}} //внутренний номер сотрудника
"communication_id":{{communication_id}} //ид обращения
}
Благодаря параметру «campaign_id» мы понимаем, откуда пришел пациент и сохраняем эту информацию для дальнейшего анализа.
Пропущенные звонки
Получить полный журнал звонков, в том числе и пропущенные, можно с помощью GET запроса, в котором можно задать период, за который нужны звонки, а также дополнительные отборы
api.comagic.ru/api/v1/call /?session_key= КлючАутентификации &date_from=Дата1&date_till=Дата2
В ответ в синхронном режиме вернется json со всей необходимой информацией.
Один из параметров «file_link» — ссылка для скачивания записи разговора.
Уведомление CoMagic об успешности звонка
При входящем звонке мы сохраняем у себя его идентификатор. Если звонок оказался успешным, т.е. произошла запись, в МИС сохраняется связь записи и звонка. В дальнейшем, после оплаты записи, мы этому звонку в CoMagic ставим тег «продажа» с указанием даты и суммы.
Для этого отправляется POST запрос на адрес «dataapi.comagic.ru/v2.0». В тело запроса передается json вида
{
"id": "e209c793-b062-4d8b-a637-1ef08fab086f",
"method": " set.tag_sales",
"jsonrpc": "2.0",
"params": {
"access_token": " КлючАутентификации ",
" communication_id": "идЗвонка",
" communication_type": "call",
" date_time": "ДатаОплаты",
" transaction_value": "Сумма"
}
}
Этот механизм используется в Calltracking для анализа, подробнее расскажем в следующей статье.
Тестировалось на версии платформы 8.3.14.1565.
круто
В случае со входящим звонком, http-сервис обрабатывает ведь Сервер 1С? Я правильно понял?
А как реализовано уведомление конкретного пользователя что ему пришел звонок?
То есть как организована передача с сервера в конкретное клиентское приложение?
Всё верно, передача через регистр сведений «Очередь звонков» и обработчик ожидания.
К нам приходит событие о соединении с абонентом (в нем есть информация о внутреннем номере). У нас в МедАнгеле номер опционально привязывается к пользователю или компьютеру. Обработчик ожидания опрашивает РС «Очередь печати» и в случае совпадения внутреннего номера — вызывает окно Входящего звонка.
Понимаем, что идем на компромисс — но РС практически всё время пустой, всё отрабатывает достаточно быстро.
У нас еще подключена по умолчанию Система взаимодействия (пользователи активно используют), тестировали оповещение через неё. Но результат отрицательный, пользователям не удобно (лишнее нажатие).