Одна из моих любимых вещей в сериале «IT Crowd» — это их автоответчик «Привет, ИТ». Это идеальное решение для ленивых людей, которым надоело раз за разом отвечать на одни и те же вопросы службы технической поддержки. С помощью Twilio Functions и новой функции распознавания речи мы можем создать собственную версию этого автоответчика всего за несколько строк кода.
Если вы не знакомы с автоответчиком из «IT Crowd», обязательно посмотрите это видео, чтобы увидеть его в действии.
Вы также можете проверить конечный результат, позвонив на один из этих номеров:
— 🇬🇧 +44 20 3389 5853
— 🇺🇸 (415) 702-4376
Прежде чем мы начнем, убедитесь, что у вас есть аккаунт Twilio. Зарегистрируйтесь бесплатно.
Теперь давайте приступим к кодированию!
Первое, что нам нужно сделать, — это создать новую функцию Twilio, которая будет обрабатывать все наши запросы. Twilio Functions позволяет размещать код Node.js прямо в консоли Twilio. Нет необходимости поднимать собственный сервер.
Чтобы начать:
— Перейдите в раздел Runtime вашей консоли Twilio
— Нажмите на Functions
— Нажмите на красный знак «+» и выберите пустой шаблон
Ваш экран должен выглядеть так:
Код, который вы видите, в данный момент генерирует и возвращает пустой ответ TwiML. Кроме того, у нас есть возможность назвать нашу функцию и задать ей путь. Каждому аккаунту предоставляется уникальный базовый URL, который выглядит как `fancy-badger.twil.io`, а путь используется для различения функций, созданных для вашего аккаунта. Я назову свою «Горячая линия ИТ-поддержки» и задам путь «/it-support». Вы можете задать другие значения, но обязательно замените их соответствующим образом в тексте.
В разделе Configuration выберите событие «Incoming Voice Calls», так как именно это событие мы будем использовать для данной функции. Начнем с приветствия звонящего фразой «Привет, ИТ». Мы выберем британский акцент, так как ирландского нет. Таким образом, ваша горячая линия будет звучать немного больше как ответ Мосса, чем Роя. Измените закомментированную строку на следующий код:
Обязательно сохраните функцию. Вы можете проверить, работает ли она, перейдя в браузере по URL, который вы настроили для этой функции. Вы должны увидеть следующий возвращаемый код:
Теперь настроим это на телефонный номер, чтобы иметь возможность полностью протестировать его. Перейдите в раздел Phone Numbers и либо выберите один из существующих номеров, который вы хотите настроить, либо приобретите новый номер телефона. На экране конфигурации в разделе «Voice & Fax» для параметра «A call comes in» выберите значения «Function» и название вашей функции Twilio.
Сохраните изменения и позвоните на свой номер телефона. Вас должен поприветствовать мужской голос с британским акцентом, говорящий «Привет, ИТ».
Теперь добавим распознавание речи, добавив следующий пользовательский сценарий:
— Пользователя приветствуют фразой «Привет, ИТ»
— Система ждет, пока пользователь закончит говорить
— Система игнорирует сказанное и спрашивает: «Вы пробовали выключить и снова включить?»
— Если пользователь где-то упоминает «спасибо», мы говорим: «Пожалуйста, приятель!»
— Если они этого не говорят, мы задаем тот же вопрос снова (потому что, скорее всего, они этого не сделали).
Чтобы использовать распознавание речи, мы используем глагол Gather в нашем TwiML и устанавливаем input в значение «speech». Мы также установим свойство action на наш URL, чтобы, когда будет результат, Twilio снова вызвал эту функцию и добавил параметр запроса, который поможет нам позже добавить больше сценариев звонков. При первом вызове функции не будет результатов распознавания речи с помощью Gather, поэтому мы возвращаем приветствие. При последующих вызовах функции мы получим параметр `SpeechResult`, доступный как `event.SpeechResult`, который содержит текст, извлеченный API из речи.
Измените код вашей функции соответствующим образом:
Сохраните изменения в вашей функции и снова позвоните на свой номер телефона. Вас должно поприветствовать «Привет, ИТ», и после того, как вы что-то скажете, снова и снова будут задавать вопрос, пробовали ли вы выключить и снова включить, пока вы не скажете «Спасибо» или «Благодарю».
Однако остается один важный вопрос: «А точно ли оно подключено?» Давайте добавим это на случай, если человек ответит «да» на предыдущий вопрос. Добавьте следующие строки в ваш код:
Не забудьте сохранить изменения, и вы сможете протестировать свою горячую линию поддержки снова.
Мы создали базовый автоответчик, но почему бы не использовать тот факт, что с помощью Twilio Programmable Voice можно сделать гораздо больше, чтобы помочь звонящему. Здесь можно сделать что-то очень сложное, но пока давайте просто снова спросим у них о проблеме и отправим ссылку на страницу поиска Stack Overflow с этим вопросом.
Для этого нам понадобится еще один `gather` и одно условие, в котором мы отправляем SMS. Измените ваш код следующим образом:
Позвоните на свой номер телефона еще раз и выполните следующий сценарий для тестирования:
— Позвоните на номер
— Ответьте «Привет»
— Скажите «Да» на вопрос о выключении и включении
— Скажите «Да, подключено» на вопрос о том, подключено ли оно
— Озвучьте проблему, по которой хотите найти решение
— Вы должны получить SMS со ссылкой на Stack Overflow 👍
Вот и все! Не забудьте сохранить свою функцию, и после перезапуска ваша новая горячая линия ИТ-поддержки будет готова к распространению среди всех, кто постоянно беспокоит вас за помощью.
Мы использовали лишь несколько функций Programmable Voice, и это только начало. Есть множество дополнительных функций, которые вы можете изучить:
— Используйте глагол
— Используйте более умный поиск решений с помощью API StackOverflow или Google и отправляйте ссылку на действительно полезный результат.
— Отправляйте фактический вопрос себе по электронной почте или в Slack. Возможно, создайте тикет в вашей системе?
— Перенесите горячую линию на один из поддерживаемых языков.
Мне было бы интересно узнать, какие идеи у вас есть или создали ли вы что-то подобное, что облегчает вашу жизнь. Если у вас есть вопросы, просто напишите мне сообщение.