Възможно е да сте чували или чели за функцията 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
Нека развием прост бекенд на нода, например, такъв:
Това е обикновено приложение, което изисква само две команди за стартиране:
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
