Meitsje jo eigen Google Call Screening basearre op Voximplant en Dialogflow

Meitsje jo eigen Google Call Screening basearre op Voximplant en Dialogflow
Возможно, вы слышали или читали про функцию Call Screening, которую Google выкатил для своих телефонов Pixel в США. Идея отличная – когда вам поступает входящий звонок, то виртуальный ассистент начинает общаться, в то время как вы видите этот разговор в виде чата и в любой момент можете начать говорить вместо ассистента. Это очень полезно в наши дни, когда почти половина звонков – это спам, но при этом вы не хотите пропускать важные звонки от кого-то не из вашего списка контактов. Единственная загвоздка – эта функциональность доступна только на телефоне Pixel и только в США. Что ж, препятствия существуют, чтобы их преодолевать, верно? Поэтому мы решили рассказать, как сделать подобное решение, используя Voximplant и Dialogflow. Прошу под кат.

arsjitektuer

Предлагаю не тратить время на объяснения, как работают Voximplant и Dialogflow, при желании вы легко найдете информацию в интернете. Так что давайте познакомимся с самой концепцией нашего Call Screening.

Предположим, что у вас уже есть некий номер телефона, которым вы пользуетесь ежедневно и на который вы получаете важные звонки. В таком случае нам понадобится второй номер, который будет указан везде – в почте, на визитке, когда вы заполняете онлайн-формы и т.д. Этот номер будет подключен к системе обработки естественного языка (в нашем случае это Dialogflow) и переадресовывать звонки на ваш главный номер, только если вы этого захотите. В виде схемы это выглядит так (картинка кликабельна):
Meitsje jo eigen Google Call Screening basearre op Voximplant en Dialogflow
Понимая архитектуру, мы можем взяться за реализацию, но с одной оговоркой: мы не будем делать мобильное приложение, чтобы показать диалог между Dialogflow и входящим абонентом, мы создадим простое it web-приложение с рендером диалога, чтобы наглядно показать принцип работы Call Screening. В этом приложении будет кнопка Intervene, по нажатию которой Voximplant будет соединять входящего абонента с набираемым абонентом, если последний решил поговорить сам.

Ymplemintaasje

Ynlogge свой аккаунт Voximplant и создайте новое приложение, например, screening:

Meitsje jo eigen Google Call Screening basearre op Voximplant en Dialogflow
Iepenje op раздел «Номера» и купите номер, который будет работать в качестве посредника:

Meitsje jo eigen Google Call Screening basearre op Voximplant en Dialogflow
Далее зайдите в приложение screening, в раздел «Номера», вкладка «Доступные». Здесь вы увидите только что купленный номер. Привяжите его к приложению с помощью кнопки «Прикрепить» – в появившемся окне оставьте все значения по умолчанию и нажмите «Прикрепить».

Находясь внутри приложения, перейдите на вкладку «Сценарии» и создайте сценарий myscreening – в нем мы используем код из статьи How to use Dialogflow Connector. При этом код будет немного изменен, потому что нам нужно «видеть» диалог между звонящим и ассистентом; весь код можно взять тут.

ВНИМАНИЕ: вам нужно будет изменить значение переменной server на имя вашего ngrok-сервера (подробности про ngrok будут чуть ниже). Также подставьте свои значения на 31 строке, где your phone number – это ваш главный номер (например, личный мобильный), а voximplant number – номер, который вы недавно купили.

outbound_call = VoxEngine.callPSTN(“YOUR PHONE NUMBER”, “VOXIMPLANT NUMBER”)

Вызов callPSTN произойдет в тот момент, когда вы решите ворваться в разговор и лично побеседовать со входящим абонентом.

После того, как вы сохраните сценарий, вам нужно привязать его к купленному номеру. Для этого, все еще находясь внутри вашего приложения, перейдите на вкладку «Роутинг», чтобы создать новое правило – кнопка «Новое правило» в правом верхнем углу. Укажите имя (например, allcalls), оставьте маску по умолчанию (.* – что означает, что все входящие звонки будут обрабатываться сценариями, выбранными для этого правила) и укажите сценарий myscreening.

Meitsje jo eigen Google Call Screening basearre op Voximplant en Dialogflow
Bewarje de regel.

Отныне номер телефона привязан к сценарию. Последнее, что необходимо сделать – привязать бота к приложению. Для этого перейдите на вкладку «Dialogflow-коннектор», нажмите кнопку «Добавить Dialogflow агент» в правом верхнем углу и загрузите JSON-файл вашего агента Dialogflow.

Meitsje jo eigen Google Call Screening basearre op Voximplant en Dialogflow
Если вам нужен агент для примера/тестирования, то можете взять нашего по этой ссылке: github.com/aylarov/callscreening/tree/master/dialogflow. Только не требуйте от него многого, это всего лишь пример, который вы вольны переделывать как вам захочется и смело делиться результатами 🙂

Простой бэкенд на NodeJS

Давайте развернем простенький бэкенд на ноде, например, такой:
github.com/aylarov/callscreening/tree/master/nodejs

Это обычное приложение, которое требует всего двух команд для запуска:

npm install
node index.js

Сервер запустится на 3000 порте вашей машины, поэтому чтобы соединить его с облаком Voximplant, мы используем утилиту ngrok. Когда вы установите ngrok, запустите его командой:

ngrok http 3000

Вы увидите доменное имя, которое ngrok сгенерировал для вашего локального сервера – скопируйте его и подставьте в переменную server.

Klant

Клиентское приложение выглядит как простой чат, который вы можете забрать отсюда.

Просто скопируйте все файлы в какую-нибудь директорию на вашем веб-сервере и оно будет работать. В файле script.js замените значение переменной server на доменное имя ngrok, а значение переменной callee – на номер, который вы купили. Сохраните файл и запустите приложение в браузере. Если все в порядке, то вы увидите WebSocket-соединение в панели разработчика.

Demo

Увидеть приложение в действии можно на этом видео:


P. S. Если нажать на кнопку Intervene, то позвонивший будет направлен на мой номер телефона, а если нажать на Disconnect – то будет…? Верно, звонок будет разъединен.

Boarne: www.habr.com

Add a comment