Робимо свій Google Call Screening на основі Voximplant та Dialogflow

Робимо свій Google Call Screening на основі Voximplant та Dialogflow
Можливо, ви чули або читали про функцію Call Screening, яку Google викотив для своїх телефонів Pixel у США. Ідея відмінна – коли вам надходить вхідний дзвінок, то віртуальний помічник починає спілкуватися, коли ви бачите цю розмову у вигляді чату і в будь-який момент можете почати говорити замість помічника. Це дуже корисно в наші дні, коли майже половина дзвінків – це спам, але при цьому ви не хочете пропускати важливі дзвінки від когось із вашого списку контактів. Єдина загвоздка – ця функціональність доступна лише на телефоні Pixel і лише у США. Що ж, перешкоди існують, щоб їх долати, чи не так? Тому ми вирішили розповісти, як зробити подібне рішення, використовуючи Voximplant та Dialogflow. Прошу під кат.

Архітектура

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

Припустимо, що у вас вже є номер телефону, яким ви користуєтеся щодня і на який ви отримуєте важливі дзвінки. У такому разі нам знадобиться другий номер, який буде вказаний скрізь – поштою, на візитівці, коли ви заповнюєте онлайн-форми тощо. Цей номер буде підключений до системи обробки природної мови (у нашому випадку це Dialogflow) і переадресовуватиме дзвінки на ваш головний номер, тільки якщо ви цього захочете. У вигляді схеми це виглядає так (картинка клікабельна):
Робимо свій Google Call Screening на основі Voximplant та Dialogflow
Розуміючи архітектуру, ми можемо взятися за реалізацію, але з одним застереженням: ми не робитимемо мобільне додаток, щоб показати діалог між Dialogflow та вхідним абонентом, ми створимо просте веб-Додаток з рендером діалогу, щоб наочно показати принцип роботи Call Screening. У цьому додатку буде кнопка Intervene, за натисканням якої Voximplant буде з'єднувати вхідного абонента з абонентом, якщо останній вирішив поговорити сам.

Реалізація

Увійдіть в свій акаунт Voximplant і створіть новий додаток, наприклад, screening:

Робимо свій Google Call Screening на основі Voximplant та Dialogflow
Відкрийте розділ «Номери» і купіть номер, який працюватиме як посередник:

Робимо свій Google Call Screening на основі Voximplant та Dialogflow
Далі зайдіть у програму screening, у розділі «Номери», вкладка «Доступні». Тут ви побачите щойно куплений номер. Прив'яжіть його до програми за допомогою кнопки «Прикріпити» – у вікні, що з'явилося, залиште всі значення за замовчуванням і натисніть «Прикріпити».

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

УВАГА: вам потрібно буде змінити значення змінної server на ім'я вашого ngrok-сервера (подробиці про ngrok будуть трохи нижче). Також підставте свої значення на 31 рядку, де ваш телефон номер – це ваш головний номер (наприклад, особистий мобільний), а voximplant number – номер, який ви недавно купили.

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

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

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

Робимо свій Google Call Screening на основі Voximplant та Dialogflow
Збережіть правило.

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

Робимо свій Google Call Screening на основі Voximplant та 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.

клієнт

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

Просто скопіюйте всі файли в якусь директорію на вашому веб-сервері, і воно буде працювати. У файлі script.js замініть значення змінної server на доменне ім'я ngrok, а значення змінної callee – на номер, який ви купили. Збережіть файл і запустіть програму в браузері. Якщо все гаразд, ви побачите WebSocket-з'єднання в панелі розробника.

демо

Побачити програму в дії можна на цьому відео:


PS Якщо натиснути на кнопку Intervene, то той, хто зателефонує, буде направлений на мій номер телефону, а якщо натиснути на Disconnect – то буде…? Мабуть, дзвінок буде роз'єднано.

Джерело: habr.com

Додати коментар або відгук