Може би сте чували или чели за функцията Call Screening, която Google пусна за своите телефони Pixel в САЩ. Идеята е отлична – когато получавате входящо обаждане, виртуалният асистент започва да комуникира, докато вие виждате този разговор под формата на чат и можете по всяко време да започнете да говорите вместо асистента. Това е много полезно днес, когато почти , но в същото време не искате да пропуснете важни обаждания от хора извън вашия списък с контакти. Единственото препятствие е, че тази функционалност е налична само на телефона Pixel и само в САЩ. Е, пречките съществуват, за да бъдат преодолявани, нали? Затова решихме да ви разкажем как да направите подобно решение, използвайки Voximplant и Dialogflow. Моля, продължете с нас.
Архитектура
Предлагам да не губим време с обяснения как работят Voximplant и Dialogflow, можете лесно да намерите информация за тях онлайн. Нека да се запознаем с концепцията на нашето Call Screening.
Предположим, че вече имате телефонен номер, който използвате ежедневно и на който получавате важни обаждания. В такъв случай ще ни е нужен втори номер, който да бъде посочен навсякъде – в имейлите, на визитките, когато попълвате онлайн формуляри и т.н. Този номер ще бъде свързан с системата за обработка на естествен език (в нашия случай това е Dialogflow) и ще пренасочва обажданията към вашия главен номер, само ако вие желаете. На схема това изглежда така (изображението е кликаемо):
Разбирайки архитектурата, можем да се захванем с реализирането, но с едно предупреждение: няма да правим мобилно приложение, за да покажем диалога между Dialogflow и входящия абонат, а вместо това ще създадем прост уеб-апликация с рендеринг на диалога, за да илюстрираме принципа на работа на Call Screening. В това приложение ще има бутон Intervene, при натискане на който Voximplant ще свързва входящия абонат с набирания абонат, ако последният реши да разговаря сам.
Реализация
Влезте в и създайте ново приложение, например screening:

Отворете и купете номер, който ще функционира като посредник:

След това отидете в приложението 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
Нека развием прост бекенд на node, например, такъв:
Това е обикновено приложение, което изисква само две команди за стартиране:
npm install
node index.js
Сървърът ще се стартира на порт 3000 на вашата машина, затова за да го свържете с облака Voximplant, използваме утилитата ngrok. Когато я инсталирате, , стартирайте я с командата:
ngrok http 3000Ще видите домейна, който ngrok е генерирал за вашия локален сървър – копирайте го и го поставете в променливата server.
Клиент
Клиентското приложение изглежда като прост чат, който можете.
Просто копирайте всички файлове в някаква директория на вашия уеб сървър и то ще работи. В файла script.js променете стойността на променливата server на домейна на ngrok, а стойността на променливата callee – на номера, който сте закупили. Запазете файла и стартирайте приложението в браузъра. Ако всичко е наред, ще видите WebSocket-соединение в конзолата на разработчика.
Демо
Може да видите приложението в действие в следвещото видео:

P. S. Ако натиснете бутона Intervene, обаждащият се ще бъде пренасочен на моя номер, а ако натиснете Disconnect – то... Верно, обаждането ще бъде прекъснато.
Източник: habr.com
