Måske har du hørt om eller læst om Call Screening-funktionen, som Google har lanceret til deres Pixel-telefoner i USA. Ideen er fremragende – når du modtager et indgående opkald, begynder den virtuelle assistent at kommunikere, mens du ser samtalen i form af en chat og kan til enhver tid begynde at tale i stedet for assistenten. Dette er meget nyttigt i dag, hvor næsten , men du ikke vil gå glip af vigtige opkald fra nogen uden for din kontaktliste. Den eneste udfordring er, at denne funktionalitet kun er tilgængelig på Pixel-telefonen og kun i USA. Nå, hindringer er der for at blive overvundet, ikke? Derfor har vi besluttet at fortælle, hvordan man kan lave en lignende løsning ved hjælp af Voximplant og Dialogflow. Fortsæt her.
Arkitektur
Lad os ikke spilde tid på at forklare, hvordan Voximplant og Dialogflow fungerer; hvis du ønsker det, kan du nemt finde information på internettet. Så lad os tage et kig på selve konceptet bag vores Call Screening.
Antag, at du allerede har et telefonnummer, som du bruger dagligt og modtager vigtige opkald på. I så fald har vi brug for et andet nummer, som vil blive angivet overalt – i e-mails, på visitkort, når du udfylder online formularer osv. Dette nummer vil være tilsluttet et system til behandling af naturligt sprog (i vores tilfælde Dialogflow) og vil omdirigere opkald til dit hovednummer, kun hvis du ønsker det. I form af et diagram ser det sådan ud (billedet er klikbart):
Ved at forstå arkitekturen kan vi begynde at implementere, men med én forbehold: vi vil ikke lave en mobil app, for at vise dialogen mellem Dialogflow og den indgående abonnent; vi vil skabe en simpel web-app med rendering af dialogen for at illustrere, hvordan Call Screening fungerer. I denne app vil der være en Intervene-knap, hvor du trykker på, så Voximplant kan forbinde den indgående abonnent med den tilkaldte abonnent, hvis sidstnævnte ønsker at tale selv.
Implementering
Log ind på og opret en ny app, for eksempel screening:

Åbn og køb et nummer, der vil fungere som mægler:

Gå ind i screening-applikationen, under fanen "Nummer", sektionen "Tilgængelige". Her vil du se det nyindkøbte nummer. Bind det til applikationen ved hjælp af knappen "Vedhæft" – i det vindue, der vises, lad alle værdier stå som standard og klik på "Vedhæft".
Mens du er inde i applikationen, gå til fanen "Scripts" og opret et script ved navn myscreening – her bruger vi koden fra artiklen . Koden vil dog blive ændret en smule, fordi vi skal "se" dialogen mellem den opkaldende og assistenten; hele koden kan .
ADVARSEL: Du skal ændre værdien af variablen server til navnet på din ngrok-server (detaljer om ngrok kommer lidt senere). Indtast også dine værdier på linje 31, hvor your phone number – er dit hovednummer (for eksempel, dit personlige mobilnummer), og voximplant number – det nummer, du lige har købt.
outbound_call = VoxEngine.callPSTN("YOUR PHONE NUMBER", "VOXIMPLANT NUMBER")callPSTN-kaldet vil ske i det øjeblik, du beslutter at bryde ind i samtalen og tale personligt med den indkommende abonnent.
Når du har gemt scriptet, skal du binde det til det købte nummer. For at gøre dette, mens du stadig er inde i din applikation, gå til fanen "Routing" for at oprette en ny regel – klik på knappen "Ny regel" i øverste højre hjørne. Angiv et navn (for eksempel allcalls), lad masken være som standard (.* – hvilket betyder, at alle indgående opkald vil behandles af de scripts, der er valgt til denne regel) og angiv scriptet myscreening.

Gem reglen.
Fra nu af er telefonnummeret bundet til scriptet. Det sidste, der skal gøres, er at binde botten til applikationen. For at gøre dette, gå til fanen "Dialogflow-connector", klik på knappen "Tilføj Dialogflow-agent" i øverste højre hjørne og upload JSON-filen til din Dialogflow-agent.

Hvis du har brug for en agent til eksempel-/testformål, kan du tage vores via dette link: . Forvent ikke for meget fra den, det er kun et eksempel, som du frit kan ændre, som du ønsker, og gerne dele resultaterne 🙂
Simpel backend i NodeJS
Lad os opsætte en simpel backend i Node, for eksempel sådan her:
Det er en almindelig applikation, der kun kræver to kommandoer for at køre:
npm install
node index.js
Serveren vil starte på port 3000 på din maskine, så for at forbinde den til Voximplant-cloud'en, bruger vi værktøjet ngrok. Når du har installeret , skal du køre det med kommandoen:
ngrok http 3000Du vil se et domænenavn, som ngrok har genereret til din lokale server – kopier det og indsæt det i variablen server.
Kunde
Klientapplikationen ser ud som en simpel chat, som du kan.
Bare kopier alle filerne til en hvilken som helst mappe på din webserver, og det vil fungere. I script.js-filen skal du ændre værdien af variablen server til ngrok-domenet og værdien af variablen callee til det nummer, du har købt. Gem filen og kør applikationen i browseren. Hvis alt er i orden, vil du se WebSocket-forbindelsen i udviklerværktøjet.
Demo
Du kan se applikationen i aktion i denne video:

P. S. Hvis du klikker på knappen Intervene, vil den der ringer blive sendt til mit telefonnummer, og hvis du klikker på Disconnect – så vil…? Rigtigt, opkaldet vil blive afbrudt.
Kilde: habr.com
