«Вторник в десять»: как голосовой агент превращает фразу в событие календаря
Записать звонящего в календарь сложнее, чем кажется: слот может быть занят, а «вторник в десять» надо превратить в точный момент времени в часовом поясе компании. Разбираю вторую половину голосового администратора.
Может ли голосовой агент сам записать клиента в календарь?
Может, если решены две вещи. Фразу «вторник в десять» нужно превратить в точный момент в часовом поясе компании, а не того, кто звонит. И слот нужно проверить до создания события: если занят, агент предлагает два конкретных ближайших времени вместо извинений. Запись с неуверенно распознанной почтой создаётся без приглашения, с пометкой для человека.
В прошлой статье про голосового администратора разбиралась самая ломкая часть — приём почты со слуха. Но собрать данные мало: звонок должен закончиться записью в календаре, иначе человеку всё равно придётся перезванивать.
Вторая половина устроена не проще первой.
Часовой пояс принадлежит компании
«Вторник в десять» — это не время. Это намерение, которое надо превратить в точный момент.
Чей вторник и чьи десять? Звонящий может быть в другом штате. Агент работает в облаке и о местном времени не знает вообще. Единственный правильный ответ — часовой пояс компании: клиника работает по своему расписанию, и приём назначается в нём.
Поэтому пояс задаётся как параметр агента, а не угадывается. Агент превращает фразу в точную дату с указанием пояса и отдаёт дальше уже её, а не слова. Всё, что идёт после, работает с однозначным моментом времени.
Та же логика касается рабочих часов. Будни с девяти до пяти — настройка, а не знание модели. Агент не предложит субботу, потому что ему сказали, какие окна существуют.
Проверить, потом создавать
Второе решение простое по формулировке и важное по последствиям: сначала смотрим, свободно ли, потом создаём.
Сценарий ищет события в календаре между названным временем и получасом после него. Пусто — создаётся встреча на полчаса, с именем, телефоном и почтой в описании, и та же запись уходит строкой в таблицу, которая работает как простая CRM.
Если занято, агент не говорит «к сожалению, это время недоступно» и не начинает заново. Он называет два конкретных ближайших варианта: через час и через два. Разница между «это время занято» и «могу предложить одиннадцать или двенадцать» — это разница между звонком, который закончился ничем, и звонком, который закончился записью.
Неуверенность доезжает до конца
Третье связывает обе половины системы.
Если почту со слуха записать не удалось и агент пометил её как неуверенную, эта пометка не теряется по дороге. При создании события приглашение участнику не отправляется: письмо на неправильный адрес хуже, чем его отсутствие. Строка в таблице помечена, и администратор видит, какие записи надо подтвердить руками.
Это общее правило для любой системы, где часть данных может быть неточной. Отметку о неуверенности нужно протаскивать до последнего шага. Система, которая знает, что данные сомнительные, но всё равно действует так, будто они точные, — хуже системы, которая не знала.
Что забрать себе
Три вещи, не зависящие от инструментов.
Храните время как точный момент с поясом, а пояс берите у компании, а не у собеседника. Проверяйте занятость до создания, и на занятый слот отвечайте вариантами, а не извинением. И доводите пометку о неуверенных данных до самого конца, чтобы последний шаг мог на неё отреагировать.
Поговорить с таким агентом можно прямо в браузере: страница голосового администратора. Нужен такой же под вашу запись — напишите.