Можливо, ви чули або читали про функцію Call Screening, яку Google викотив для своїх телефонів Pixel у США. Ідея відмінна – коли вам надходить вхідний дзвінок, то віртуальний помічник починає спілкуватися, коли ви бачите цю розмову у вигляді чату і в будь-який момент можете почати говорити замість помічника. Це дуже корисно в наші дні, коли майже
Архітектура
Пропоную не витрачати час на пояснення, як працюють Voximplant та Dialogflow, за бажання ви легко знайдете інформацію в інтернеті. Тож давайте познайомимося із самою концепцією нашого Call Screening.
Припустимо, що у вас вже є номер телефону, яким ви користуєтеся щодня і на який ви отримуєте важливі дзвінки. У такому разі нам знадобиться другий номер, який буде вказаний скрізь – поштою, на візитівці, коли ви заповнюєте онлайн-форми тощо. Цей номер буде підключений до системи обробки природної мови (у нашому випадку це Dialogflow) і переадресовуватиме дзвінки на ваш головний номер, тільки якщо ви цього захочете. У вигляді схеми це виглядає так (картинка клікабельна):
Розуміючи архітектуру, ми можемо взятися за реалізацію, але з одним застереженням: ми не робитимемо мобільне додаток, щоб показати діалог між Dialogflow та вхідним абонентом, ми створимо просте веб-Додаток з рендером діалогу, щоб наочно показати принцип роботи Call Screening. У цьому додатку буде кнопка Intervene, за натисканням якої Voximplant буде з'єднувати вхідного абонента з абонентом, якщо останній вирішив поговорити сам.
Реалізація
Увійдіть в
Відкрийте
Далі зайдіть у програму screening, у розділі «Номери», вкладка «Доступні». Тут ви побачите щойно куплений номер. Прив'яжіть його до програми за допомогою кнопки «Прикріпити» – у вікні, що з'явилося, залиште всі значення за замовчуванням і натисніть «Прикріпити».
Перебуваючи всередині програми, перейдіть на вкладку «Сценарії» і створіть сценарій myscreening – ми використовуємо код зі статті
УВАГА: вам потрібно буде змінити значення змінної server на ім'я вашого ngrok-сервера (подробиці про ngrok будуть трохи нижче). Також підставте свої значення на 31 рядку, де ваш телефон номер – це ваш головний номер (наприклад, особистий мобільний), а voximplant number – номер, який ви недавно купили.
outbound_call = VoxEngine.callPSTN(“YOUR PHONE NUMBER”, “VOXIMPLANT NUMBER”)
Виклик callPSTN відбудеться в той момент, коли ви вирішите увірватися в розмову і особисто поговорити з абонентом.
Після того, як ви збережете сценарій, потрібно прив'язати його до купленого номера. Для цього, перебуваючи всередині вашої програми, перейдіть на вкладку «Роутинг», щоб створити нове правило – кнопка «Нове правило» у правому верхньому кутку. Вкажіть ім'я (наприклад, allcalls), залиште маску за промовчанням (.* – що означає, що всі вхідні дзвінки будуть оброблятися сценаріями, вибраними для цього правила) та вкажіть сценарій myscreening.
Збережіть правило.
Відтепер номер телефону прив'язаний до сценарію. Останнє, що потрібно зробити – прив'язати робота до додатку. Для цього перейдіть на вкладку «Dialogflow-конектор», натисніть кнопку «Додати Dialogflow агент» у правому верхньому кутку та завантажте JSON-файл вашого агента Dialogflow.
Якщо вам потрібен агент для прикладу/тестування, то можете взяти нашого за цим посиланням:
Простий бекенд на NodeJS
Давайте розгорнемо простенький бекенд на ноді, наприклад, такий:
Це звичайна програма, яка вимагає всього двох команд для запуску:
npm install
node index.js
Сервер запуститься на 3000 порту вашої машини, тому щоб з'єднати його з хмарою Voximplant ми використовуємо утиліту ngrok. Коли ви встановите
ngrok http 3000
Ви побачите доменне ім'я, яке ngrok згенерував для вашого локального сервера – скопіюйте його та підставте змінну server.
клієнт
Клієнтська програма виглядає як простий чат, який ви можете
Просто скопіюйте всі файли в якусь директорію на вашому веб-сервері, і воно буде працювати. У файлі script.js замініть значення змінної server на доменне ім'я ngrok, а значення змінної callee – на номер, який ви купили. Збережіть файл і запустіть програму в браузері. Якщо все гаразд, ви побачите WebSocket-з'єднання в панелі розробника.
демо
Побачити програму в дії можна на цьому відео:
PS Якщо натиснути на кнопку Intervene, то той, хто зателефонує, буде направлений на мій номер телефону, а якщо натиснути на Disconnect – то буде…? Мабуть, дзвінок буде роз'єднано.
Джерело: habr.com