Які робіцца свой 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 радку, дзе your phone number - гэта ваш галоўны нумар (напрыклад, асабісты мабільны), а 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 http 3000

Вы ўбачыце даменнае імя, якое ngrok згенераваў для вашага лакальнага сервера - скапіруйце яго і падстаўце ў зменную server.

Кліент

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

Проста скапіруйце ўсе файлы ў якую-небудзь дырэкторыю на вашым вэб-серверы і яно будзе працаваць. У файле script.js заменіце значэнне зменнай server на даменнае імя ngrok, а значэнне зменнай callee - на нумар, які вы купілі. Захавайце файл і запусціце прыкладанне ў браўзэры. Калі ўсё ў парадку, тыя вы ўбачыце WebSocket-злучэнне ў панэлі распрацоўніка.

дэма

Убачыць прыкладанне ў дзеянні можна на гэтым відэа:


PS Калі націснуць на кнопку Intervene, то які патэлефануе будзе накіраваны на мой нумар тэлефона, а калі націснуць на Disconnect - то будзе…? Так, званок будзе раз'яднаны.

Крыніца: habr.com

Дадаць каментар