De Google assistant is een spraak gestuurde service om dagelijkse praktische zaken te vergemakkelijken. Je kan bijvoorbeeld de assistent koppelen aan Netflix. Hiermee kan je spraakopdrachten zoals “Bekijk Stranger Things in de woonkamer” uitvoeren. De televisie zal vervolgens Stranger Things afspelen in de woonkamer. Langdradige zoekopdrachten kunnen versneld worden door eenvoudige spraakopdrachten. Je kan een Google Assistent app voor diverse praktische situaties ontwikkelen. Als je een portaal hebt met een groot assortiment, is het vaak zo dat je een database moet doorzoeken om het juiste item te vinden. Met Google Assistent kan je middels een spraakopdracht het juiste artikel opzoeken. Dit scheelt veel tijd en gebruiksgemak.
Een andere praktische voorbeeld is een Assistent App voor het openbaar vervoer. Stel je wilt met de Tram Van Amsterdam Centraal naar het Leidscheplein. Nu moet je een app openen en bepaalde criteria invoeren om de juiste tijd terug te krijgen. Met een spraakopracht kan je gewoon de volgende commando opgeven” Hoe laat gaat de tram van Amsterdam CS naar het Leidscheplein” ? Je kan dit ontwikkelen met Dialogflow.Dialogflow is het ontwikkelprogramma van Google om een Assistent App te bouwen. In een interface kan je vooraf gedefinieerde antwoorden en vragen afhandelen. Je hebt hiervoor geen programmeer kennis nodig. Maar wat als je nou een dynamische assistent wil, een assistent die rechtstreeks verbinding maakt met jouw systeem en de vragen zo dynamisch mogelijk afhandelt? Hier komt wel wat technische kennis bij kijken. Je moet namelijk werken met hooks.
In dit artikel zullen wij de theoretische aspecten uitleggen hoe je een Google Assistent app met hooks kan ontwikkelen. Als praktijkvoorbeeld laat ik zien hoe we een TVgids app hebben gebouwd.
1.0 Wat is een hook / fullfillment binnen Google Assistent
In principe heb je geen programmeerkennis nodig om met Dialogflow te werken, maar als je een slimme assistent wil bouwen dan is programmeerkennis een vereiste. Hiervoor hebben we hooks nodig.
“Een hook is een API van jouw systeem waarmee Google kan communiceren om response terug te geven aan de eindgebruiker”
In dit voorbeeld hebben wij een vooraf gedefinieerde hook ontwikkeld. Want wij willen alle recente televisieprogramma’s ophalen met de juiste tijd en zender. De hook kan data opvragen uit een database en weer terugkoppelen aan de eindgebruiker via google Assistent. Dit moet je eigenlijk zien als een simpele zoekopdracht in een database.
Hoe de hook ontwikkeld is gaan wij hier niet behandelen, dat valt namelijk buiten de scope van dit artikel.
Wanneer een gebruiker in ons voorbeeld vraagt: “Hoe laat begint Goede tijden slechte tijden vandaag?” Dan wordt “Goede tijden slechte tijden” en “vandaag” in de hook meegestuurd als parameters. Met deze gegevens kunnen we in onze database zoeken hoe laat het programma ‘Goede tijden slechte tijden’ begint.Je volgende vraag zal wellicht zijn; maar hoe weet google wat “vandaag” en “Goede tijden slechte tijden” is? Dat zijn entiteiten wat we definiëren in Dialogflow.
2.0 Entiteiten
Als we een Google assistent app ontwikkelen zijn entiteiten belangrijk. Google weet immers niet wat een programma ,zender of datum is, wij gaan de assistent hierbij helpen. We gaan drie entiteiten definiëren: programma, datum en zender. Zie onderstaande tabel waar we aangeven wat de entiteiten zijn. Dit geven we ook in Dialogflow aan.
Entiteit Programma
Entiteit |
Waarde |
Programma |
Goede tijden slechte tijden |
Programma |
Peppa pig |
Programma |
Man bijt hond |
Entiteit Datum
Entiteit |
Waarde |
Datum |
@sys.date |
Notitie: google heeft vooraf gedefinieerde waardes. Een voorbeeld is @sys.date. Als we de google variabel gebruiken, @sys.date dan weet Google gelijk welke datums hij kan gebruiken. Hij herkent dan bijvoorbeeld morgen, overmorgen, zondag etc.
Entiteit Zender
Entiteit |
Waarde |
Zender |
NPO1 |
Zender |
NPO2 |
Zender |
RTL4 |
Nu we hebben aangegeven wat programma, datum en zender is weet de assistant app wat we bedoelen. Als we nu aan de assistant app vragen: “Hoe laat begint Goede tijden slechte tijden morgen op RTL4” dan is het duidelijk wat er wordt bedoeld. Dialogflow stuurt dan de volgende data naar onze webhook:
Programma |
Goede tijden slechte tijden |
Datum |
Datum van morgen |
Zender |
RTL4 |
Nu we de entiteiten hebben gedefinieerd komen we bij de laatste stap. We moeten “vragen/intents” maken zodat een gebruiker kan communiceren met onze app.
3.0 Vooraf gedefinieerde vragen maken
We hebben een webhook en entiteiten aangemaakt. Nu moeten we Intents aanmaken. Intents zijn “vragen” die je maakt voor een eindgebruiker. Zoals: Hoe laat begint het nieuws? , of Wanneer begint Goede tijden slechte tijden? Je kan meerdere vragen opgeven binnen Dialogflow. Op deze manier maak je de chatbot slimmer. Binnen de “vragen” moeten we de entiteiten definiëren.
3.1 Systeem verbeteren
Als een bepaalde zin niet gevonden wordt, kan je fallback’s maken. Wanneer iemand bijvoorbeeld vraagt: wanneer is Piet Paulusma op televisie en dit wordt vervolgens niet herkend kan je een standaardantwoord teruggeven. Dialogflow houd bij welke vragen niet gevonden worden, deze kan je weer toevoegen in het systeem en zo maak je de chatbot nog slimmer.
4. 0 De webhook aanroepen
Binnen Google assistent kan je aangeven of je een webhook wil gebruiken. In de google terminologie heet dit “Fullfilment”.
Als voorbeeld zullen wij illustreren hoe dit te werk gaat. Stel we hebben een database met de volgende data.
Programma |
Zender |
Tijd |
Goede tijden slechte tijden |
RTL4 |
20:00 |
Peppa Big |
NPO1 |
08:00 |
Etc |
Etc |
etc |
De gebruiker gebruikt onze app en vraagt het volgende: “Hoe laat begint Goede tijden slechte tijden op Rtl4 vandaag”. Als eerst worden de entiteiten uit de vraag gehaald en verstuurd naar de webhook. Met de parameters die verstuurd zijn kan er data worden teruggestuurd naar de eindgebruiker. “Goede tijden slechte tijden begint vandaag om 20 uur op rtl4”.
5.0 Praktijkvoorbeeld programmagids
Nu we alle voorkennis van Dialogflow behandeld hebben, kunnen wij laten zien hoe onze praktijkvoorbeeld werkt. Als ik nu vraag aan de assistent app “Hoe laat begint goede tijden slechte tijden vandaag”? Dan krijg je het onderstaande resultaat. Als je tenslotte vraagt wanneer het EK voetbal is, krijg je het volgende antwoord terug.
De assistent is slim genoeg om uit te vogelen wat een gebruiker precies bedoeld. Je kan de app ook in jouw assistent uitproberen. Roep maar de volgende spraakopdracht: “Ok google, praat met wat is er op televisie”. Je kan aan de assistent vragen:
- Wanneer is ‘programma’ op televisie
- Hoe laat begint ‘programma’ op zender vandaag
Conclusie
Spraak gestuurd zoeken zal steeds meer toenemen is de verwachting. Het grootste voordeel van stem gestuurd zoeken is dat het sneller gaat dan typen. Je omzeilt handelingen wat je normaal gesproken moet typen of opzoeken. Om een slimme assistent te maken kan je een hook gebruiken. Een hook zorgt ervoor dat je een verbinding kan maken met je eigen systeem. Op deze manier kan je bijvoorbeeld verbinding maken met je e-commerce website of andere applicatie. Voor bijvoorbeeld een travel website kan je de volgende commando opgeven: “Wat is het goedkoopste ticket voor een reis naar Wenen in April voor 7 dagen?”. Vervolgens rolt de goedkoopste aanbieding uit de Google Assistent app. Daarnaast ondersteund Google zelfs transacties waarmee je de status van je bestelling kan opvragen bij bijvoorbeeld een webwinkel. Onze voorbeeld app kan je vinden in de Google Assistent. Geef de volgende spraakopdracht: "Praat met wat is er op televisie".
Voor nadere informatie over dit onderwerp of over implementaties van de Google Assistent kan je contact met ons opnemen.