Misschien heb je gehoord of gelezen over de functie Call Screening, die Google heeft geïntroduceerd voor zijn Pixel-telefoons in de VS. Het idee is geweldig: wanneer er een inkomende oproep is, begint de virtuele assistent te communiceren, terwijl jij dit gesprek als chat ziet en op elk moment kunt besluiten om zelf te spreken in plaats van de assistent. Dit is tegenwoordig erg nuttig, wanneer bijna , maar je wilt belangrijke oproepen van mensen buiten je contactenlijst niet missen. Het enige nadeel is dat deze functionaliteit alleen beschikbaar is op de Pixel-telefoon en alleen in de VS. Nou, hindernissen zijn er om overwonnen te worden, toch? Daarom hebben we besloten om te laten zien hoe je een soortgelijke oplossing kunt creëren met Voximplant en Dialogflow. Lees verder.
Architectuur
Laten we geen tijd besteden aan uitleggen hoe Voximplant en Dialogflow werken; als je wilt, kun je daar gemakkelijk informatie over vinden op internet. Dus laten we kennismaken met het concept van onze Call Screening.
Stel je voor dat je al een telefoonnummer hebt dat je dagelijks gebruikt en waarop je belangrijke oproepen ontvangt. In dat geval hebben we een tweede nummer nodig, dat overal aangegeven wordt ā in e-mail, op visitekaartjes, wanneer je online formulieren invult, enzovoorts. Dit nummer zal verbonden zijn met het systeem voor natuurlijke taalverwerking (in ons geval Dialogflow) en zal oproepen doorverbinden naar je hoofdnummer, maar alleen als je dat wilt. Dit ziet er schematisch zo uit (de afbeelding is klikbaar):
Als we de architectuur begrijpen, kunnen we aan de implementatie beginnen, maar met ƩƩn voorbehoud: we zullen geen mobiele applicatie maken om de dialoog tussen Dialogflow en de inkomende beller te tonen; we zullen een eenvoudige web-applicatie creƫren met een weergave van de dialoog om het principe van Call Screening duidelijk te maken. In deze applicatie zal er een knop Intervene zijn, waarmee Voximplant de inkomende beller verbindt met de gebelde partij, als deze ervoor kiest om zelf te praten.
Implementatie
Log in op en maak een nieuwe applicatie aan, bijvoorbeeld screening:

Open het en koop een nummer dat als tussenpersoon zal fungeren:

Ga vervolgens naar de screening-app, naar het tabblad 'Nummers', sectie 'Beschikbare'. Hier zie je het zojuist gekochte nummer. Koppel het aan de applicatie met de knop 'Koppelen' - laat in het venster dat verschijnt alle standaardwaarden staan en klik op 'Koppelen'.
Terwijl je in de applicatie bent, ga je naar het tabblad 'Scripts' en maak je een script genaamd myscreening - hierin gebruiken we de code uit het artikel. . De code zal echter iets veranderen, omdat we de interactie tussen de beller en de assistent moeten 'zien'; de hele code kan .
LET OP: je moet de waarde van de variabele server veranderen naar de naam van jouw ngrok-server (details over ngrok worden hieronder gegeven). Vul ook jouw waarden in op regel 31, waarbij your phone number jouw hoofdnummmer is (bijv. persoonlijk mobiel), en voximplant number het nummer is dat je recentelijk hebt gekocht.
outbound_call = VoxEngine.callPSTN(āJOUW TELEFOONNUMMERā, āVOXIMPLANT NUMMERā)De callPSTN-oproep zal plaatsvinden op het moment dat je besluit in het gesprek in te breken en persoonlijk te praten met de binnenkomende beller.
Nadat je het script hebt opgeslagen, moet je het koppelen aan het gekochte nummer. Ga daarvoor, terwijl je nog in je applicatie bent, naar het tabblad 'Routing' om een nieuwe regel te creƫren - druk op de knop 'Nieuwe regel' in de rechterbovenhoek. Geef een naam op (bijv. allcalls), laat het masker op de standaardwaarde staan (.* - wat betekent dat alle inkomende oproepen worden behandeld door de scripts die voor deze regel zijn gekozen) en geef het script myscreening op.

Sla de regel op.
Voortaan is het telefoonnummer gekoppeld aan het script. Het laatste wat je moet doen, is de bot aan de applicatie koppelen. Ga daarvoor naar het tabblad 'Dialogflow-connector', klik op de knop 'Dialogflow-agent toevoegen' in de rechterbovenhoek en upload het JSON-bestand van jouw Dialogflow-agent.

Als je een agent nodig hebt voor een voorbeeld/test, kun je de onze gebruiken via deze link: . Vraag echter niet te veel van hem, het is slechts een voorbeeld dat je naar eigen inzicht kunt aanpassen en vrij kunt delen š
Eenvoudige backend in NodeJS
Laten we een eenvoudige backend in Node opzetten, bijvoorbeeld zo:
Het is een gewone applicatie die slechts twee commando's nodig heeft om te starten:
npm install
node index.js
De server wordt gestart op poort 3000 van uw machine, dus om deze met de Voximplant-cloud te verbinden, gebruiken we de ngrok-tool. Wanneer u heeft geĆÆnstalleerd, start het met het commando:
ngrok http 3000U ziet een domeinnaam die ngrok heeft gegenereerd voor uw lokale server ā kopieer deze en plak deze in de variabele server.
Klant
De clientapplicatie lijkt op een eenvoudige chat die u kunt.
Kopieer gewoon alle bestanden naar een map op uw webserver en het zal werken. In het bestand script.js vervangt u de waarde van de variabele server door de domeinnaam van ngrok, en de waarde van de variabele callee door het nummer dat u heeft gekocht. Sla het bestand op en start de applicatie in uw browser. Als alles goed is, ziet u een WebSocket-verbinding in het ontwikkelaarspaneel.
Demo
U kunt de applicatie in actie zien in deze video:

P.S. Als u op de knop Intervene drukt, wordt de beller naar mijn telefoonnummer geleid, en als u op Disconnect drukt ā ja, de oproep wordt verbroken.
Bron: habr.com
