Предыстория Для выполнения задачи предложили автоматизировать подтверждение записей с помощью голосового бота. Основываясь на нашем опыте, полагали, что автоматизация подтверждений разгрузит операторов, а своевременная инфомация о переносах и отменах записей поможет оперативно заполнять появляющиеся окна.
Формирование требованийЕще до начала работ нами уже использовался стандартный сценарий подтверждения записи, который включал:
● аудио и текстовую запись разговоров;
● функцию включения переменных в репликах бота, например, даты, времени записи, наименование услуг и процедур;
● подтверждение нескольких записей в одном звонке;
● настройки для начала и окончания обзвона, количества одновременных звонков, попыток дозвониться, а также интервал между повторными звонками;
● настройки фраз, произносимых ботом во время звонка;
● выбор нескольких голосов, сгенерированных синтезаторами Яндекс и Google;
● частично реализованный API.
Проведя внутреннее тестирование стандартного сценария, начали обсуждение требований к боту. В результате получили следующий список:
● интеграция бота с виртуальной АТС заказчика;
● двусторонняя интеграция с МИС SMED, т.е. информация о пациентах приходит в бота из МИС, а после обзвона бот направляет результаты обратно.
ИнтеграцияТелефония интегрируется легко. Заказчик добавил наши IP адреса в белый список. Выдал нам логин, пароль и адрес SIP сервера и порт от SIP транка. На всю работу 2 дня.
Связать бота с МИС было чуть сложнее. МИС SMED — это собственная разработка клиники и на тот момент у нее не было нужных API методов для получения записей. Поэтому все назначения экспортировались напрямую из БД, а затем отправлялись в бота с помощью специальных API методов. Проблема возникла при отправке результатов обзвона обратно в МИС.
Мы предложили 2 способа:- поднять вебхук сервер на стороне заказчика, который бы принимал информацию о состоявшихся звонках. А далее программист Заказчика разбирал бы данные как ему надо.
- сделать API метод получения результатов звонков на нашей стороне.
Заказчик выбрал 2 вариант и мы реализовали сразу 2 метода:- Получение всех результатов после завершения обзвона.
- Получение отдельного результата по каждому звонку, если звонков больше не планируется.
В продакшене стал использоваться второй метод, который позволял операторам оперативнее работать с отменами и переносами.
Также заказчик попросил включить в массив данных о звонке поле с текстовой расшифровкой диалога, благодаря которой оператор гарантировано понимал, как прошёл и чем завершился диалог пациента с ботом. Таким образом и статус звонка и расшифровка диалога прикрепляются к записи в МИС, а аудио записи разговоров хранятся в ВАТС заказчика и дублируются на нашем сервере.
Запуск и тестированиеИзвестно, что человек выражает согласие или отказ сотнями фраз, например: "да", "подтверждаю", "если успею", "пока не знаю". Некоторые, в принципе, не понимают, что звонит робот, начиная вести с ним диалог как с живым человеком.
Поэтому после запуска начали ежедневно изучать диалоги и дополнять бота. В первые дни по задуманному сценарию проходили только 60%, к концу второго месяца удалось достигнуть 97%.