Być może słyszałeś lub czytałeś o funkcji Call Screening, którą Google wprowadził dla swoich telefonów Pixel w Stanach Zjednoczonych. Pomysł jest świetny – gdy otrzymujesz połączenie, wirtualny asystent zaczyna rozmowę, podczas gdy Ty widzisz tę konwersację w formie czatu i w każdej chwili możesz zacząć mówić zamiast asystenta. Jest to bardzo przydatne w dzisiejszych czasach, gdy prawie , ale jednocześnie nie chcesz przegapić ważnych rozmów od kogoś spoza swojej listy kontaktów. Jedynym problemem jest to, że ta funkcjonalność dostępna jest tylko w telefonach Pixel i tylko w USA. Coż, przeszkody istnieją po to, aby je pokonywać, prawda? Dlatego postanowiliśmy opowiedzieć, jak stworzyć podobne rozwiązanie z użyciem Voximplant i Dialogflow. Zapraszam do dalszej lektury.
Architektura
Nie chcę tracić czasu na wyjaśnienia działania Voximplant i Dialogflow, w razie potrzeby łatwo znajdziesz informacje w Internecie. Zatem zapoznajmy się z samą koncepcją naszego Call Screening.
Załóżmy, że masz już jakiś numer telefonu, którego używasz na co dzień i na który otrzymujesz ważne połączenia. W takim przypadku potrzebujemy drugiego numeru, który będzie podawany wszędzie – w mailach, na wizytówkach, gdy wypełniasz formularze online itp. Ten numer będzie połączony z systemem przetwarzania języka naturalnego (w naszym przypadku to Dialogflow) i będzie przekierowywał połączenia na Twój główny numer, tylko jeśli zechcesz. W formie schematu wygląda to tak (zdjęcie jest klikalne):
Rozumiejąc architekturę, możemy przystąpić do realizacji, ale z jednym zastrzeżeniem: nie będziemy tworzyć aplikacji mobilnej, aby pokazać dialog między Dialogflow a dzwoniącym, stworzymy prostą aplikację webową z renderowaniem dialogu, aby wyraźnie pokazać zasadę działania Call Screening. W tej aplikacji będzie przycisk Intervene, po naciśnięciu którego Voximplant połączy dzwoniącego z numerem docelowym, jeśli ten zdecyduje się rozmawiać sam. Zaloguj się doswojego konta Voximplant
Realizacja
i stwórz nową aplikację, na przykład, screening: i kup numer, który będzie działał jako pośrednik:

Otwórz и купите номер, который будет работать в качестве посредника:

Następnie przejdź do aplikacji screening, w zakładkę „Numery”, sekcja „Dostępne”. Znajdziesz tam właśnie zakupiony numer. Przypisz go do aplikacji, klikając przycisk „Przypisz” – w pojawiającym się oknie pozostaw wszystkie wartości domyślne i kliknij „Przypisz”.
Będąc w aplikacji, przejdź do zakładki „Scenariusze” i stwórz scenariusz myscreening – w nim skorzystamy z kodu z artykułu . Przy tym kod trochę się zmieni, ponieważ musimy „widzieć” dialog między dzwoniącym a asystentem; cały kod można .
UWAGA: będziesz musiał zmienić wartość zmiennej server na nazwę swojego serwera ngrok (szczegóły dotyczące ngrok będą nieco niżej). Podstaw też swoje wartości w 31. linii, gdzie your phone number – to twój główny numer (na przykład osobisty numer komórkowy), a voximplant number – numer, który niedawno zakupiłeś.
outbound_call = VoxEngine.callPSTN(“TWÓJ NUMER TELEFONU”, “NUMER VOXIMPLANT”)Wywołanie callPSTN nastąpi w momencie, gdy postanowisz przerwać rozmowę i nawiązać kontakt z przychodzącym abonentem.
Po zapisaniu scenariusza, musisz go przypisać do zakupionego numeru. W tym celu, będąc wciąż w aplikacji, przejdź do zakładki „Routing”, aby stworzyć nową regułę – przycisk „Nowa reguła” w prawym górnym rogu. Podaj nazwę (na przykład, allcalls), pozostaw maskę domyślną (.* – co oznacza, że wszystkie przychodzące połączenia będą przetwarzane przez scenariusze wybrane dla tej reguły) i wskaż scenariusz myscreening.

Zapisz regułę.
Od tej pory numer telefonu jest przypisany do scenariusza. Ostatnią rzeczą, którą musisz zrobić, jest przypisanie bota do aplikacji. W tym celu przejdź do zakładki „Dialogflow-connector”, kliknij przycisk „Dodaj agenta Dialogflow” w prawym górnym rogu i załaduj plik JSON swojego agenta Dialogflow.

Jeśli potrzebujesz agenta na przykład do testowania, możesz skorzystać z naszego pod tym linkiem: . Tylko nie wymagaj od niego zbyt wiele, to tylko przykład, który możesz dowolnie zmieniać i śmiało dzielić się wynikami 🙂
Prosty backend na NodeJS
Stwórzmy prosty backend na nodzie, na przykład taki:
To zwykła aplikacja, która wymaga tylko dwóch poleceń do uruchomienia:
npm install
node index.js
Serwer uruchomi się na porcie 3000 twojej maszyny, więc aby połączyć go z chmurą Voximplant, używamy narzędzia ngrok. Kiedy zainstalujesz , uruchom go poleceniem:
ngrok http 3000Zobaczysz nazwę domeny, którą ngrok wygenerował dla twojego lokalnego serwera – skopiuj ją i wstaw do zmiennej server.
Klient
Aplikacja kliencka wygląda jak prosty czat, który możesz.
Po prostu skopiuj wszystkie pliki do dowolnego katalogu na swoim serwerze WWW, a ona będzie działać. W pliku script.js zamień wartość zmiennej server na nazwę domeny ngrok, a wartość zmiennej callee – na numer, który kupiłeś. Zapisz plik i uruchom aplikację w przeglądarce. Jeśli wszystko jest w porządku, zobaczysz połączenie WebSocket w panelu dewelopera.
Demo
Zobacz aplikację w akcji w tym wideo:

P. S. Jeśli naciśniesz przycisk Intervene, to dzwoniący zostanie skierowany na mój numer telefonu, a jeśli naciśniesz na Disconnect – to…? Zgadza się, połączenie zostanie rozłączone.
Źródło: habr.com
