-

Hoe maak je een Dynamische Google Assistent App?

Google assistent is een spraakgestuurde service om dienstverleningen te automatiseren. Je kan zelf een assistent ontwikkelen via Dialogflow, dit is een ontwikkelprogramma van Google. Hoe je daarmee werkt? Volg deze stappen.

Een assistent kan je voor diverse doeleinden gebruiken. Als je klant bijvoorbeeld de status van zijn bestelling wil weten, dan kan hij vragen “Wanneer wordt mijn bestelling geleverd”? De assistent geeft dan netjes een antwoord terug: ”Uw bestelling wordt morgen om 14:30 geleverd”

In dit artikel zal ik uitleggen hoe je een fictieve app kan ontwikkelen voor het openbaar vervoer. Ik zal de basisbeginselen behandelen zodat je een idee krijgt hoe een spraakgestuurde app wordt ontwikkeld. Hoe gaat de OV app werken? 

Je kan vragen om de vertrektijden van de tram. Bijvoorbeeld: “Hoe laat vertrekt een tram van Amsterdam Centraal naar het Rembrandtplein”. Als deze spraakopdracht wordt uitgevoerd, zal de Google Assistent een antwoord teruggeven.  De assistent zal dan een antwoord geven zoals “Tram 27 vertrekt over 5 minuten van Perron B naar het Rembrandtplein”.  Zoeken op je telefoon wordt dan versimpeld door middel van spraakopdrachten.

Na het lezen van dit artikel, weet je precies hoe je een assistent kan toepassen voor jouw situatie.

1. De Assistent slim maken met hooks

Om een simpele Google Assistent App te ontwikkelen heb je weinig technische kennis nodig. Maar als je een OV app wil maken, dan is technische kennis vereist. Je moet namelijk werken met hooks. Een hook zorgt ervoor dat Google verbinding kan maken met jouw website. In de hook geef je aan welke waardes van de spraakopdracht geëxtraheerd mogen worden om vervolgens een zoekopdracht te doen in jouw database. 

Om het goed te begrijpen heb ik hieronder een voorbeeld database gemaakt voor de OV app. 

Vervoermiddel Van locatie Naar Locatie Tijd Perron
Tram Amsterdam CS Rembrandtplein 19:33 B
Tram Amsterdam CS Rembrandtplein 19:44 A
Tram Amsterdam CS Rembrandtplein 19:51 B
Bus Amsterdam CS Rembrandtplein 19:59 C


Als iemand vraagt:
Hoe laat vertrekt een tram van Amsterdam Centraal naar het Rembrandtplein”, dan kan via de webhook de juiste data worden opgehaald. Google Assistent geeft dan het volgende antwoord terug: “De volgende tram vertrekt om 19:33 van perron B”.

Je vraagt je nu vast af; hoe Google weet wat Tram, Amsterdam centraal en Rembrandtplein is? Dat noemen we entiteiten.  

2. Entiteiten maken voor de app

Als je entiteiten aanmaakt, dan moet Google Assistent weten wat een object is. Als we de volgende zin nemen. Hoe laat vertrekt een tram van Amsterdam Centraal naar het Rembrandtplein”, dan moet google weten wat een tram, Amsterdam centraal en Rembrandtplein is. 

 Entiteit Vervoermiddel
Entiteit Waarde
Vervoermiddel Tram
Vervoermiddel Bus
Vervoermiddel Metro

 

Van Station
Entiteit Waarde
Van Station Amsterdam CS
Van Station Den haag CS
Van Station Rotterdam CS

 

Naar Station
Entiteit Waarde
Naar Station Rembrandtplein
Naar Station Leidscheplein


Uiteraard kunnen we ook synoniemen opgeven. Zo kunnen we aan Amsterdam Centraal ook het synoniem Amsterdam CS meegeven. Zo maken we onze assistent steeds slimmer. Binnen Dialogflow ziet dit er als volgt uit. 

Zoals je ziet kan je dit allemaal handmatig meegeven in Google Assistent. Je zult je nu afvragen: “Moeten we alle stations handmatig invoeren binnen Dialogflow?”. Hier kom ik in het volgende stuk op terug. 

2.1 Entiteiten bulk uploaden 

Binnen Dialogflow moet je de entiteiten handmatig aanmaken. Voor een kleine app is dit makkelijk te doen, maar voor onze OV app kan dit een probleem worden. We moeten namelijk alle stations en tramhaltes in Dialogflow zien te krijgen. Handmatig invoeren is geen optie, dat is teveel werk. Daarnaast moeten de entiteiten ook geüpdatet worden vanuit onze backend naar Dialogflow.

Als je dit wil automatiseren kan dit middels de API van Google, hiermee kan je programmatisch entiteiten in Dialogflow muteren. Wij hebben een technische tutorial gemaakt hoe je de Google Assistent API kan gebruiken om entiteiten te verwerken. Wanneer alle beschikbare entiteiten in Dialogflow staan, heeft de assistent beschikking tot alle waardes van jouw systeem. Hierbij moet je denken aan alle stations en locaties. Nu moeten binnen Dialogflow alleen de vragen aangemaakt worden, binnen Dialogflow heet dit Intents.

3.  Intents aanmaken

Intents zijn “vragen” die de eindgebruiker kan stellen aan de OV app. Bijvoorbeeld: Hoe laat vertrekt een tram van Amsterdam Centraal naar het Rembrandtplein”,  Je kan hier statische responses en dynamische responses opgeven. Zoals eerder uitgelegd zijn statische responses niet interessant voor ons omdat we een “slimme app” willen bouwen. Met dynamische responses zal een webhook verbinding maken met jouw systeem, op deze manier hebben we interactieve antwoorden.

Als de volgende vraag wordt gesteld Hoe laat vertrekt een tram van Amsterdam Centraal naar het Rembrandtplein”, dan interpreteert Dialogflow dit als volgt: 

Hoe laat vertrekt een vervoermiddel van van_station naar het naar_station”. Ik zal nog eens beschrijven wat er op de achtergrond gebeurd:

  1. De volgende zin wordt opgegeven : Hoe laat vertrekt een tram van Amsterdam Centraal naar het Rembrandtplein”, 
  2. De entiteiten worden herkend uit de zin. Dialogflow zorgt hiervoor. De zin hierboven wordt als volgt omgezet
    1. Vervoermiddel =  (tram)
    2. Van_locatie  = (Amsterdam Centraal)
    3. Naar_locatie  = (Rembrandtplein)
  3. Vervolgens worden er parameters van gemaakt voor de webhook. Zo kan je in jouw database de data ophalen en terugsturen naar de gebruiker. Dialogflow stuurt de volgende data naar de webhook
    1. Vervoermiddel: tram
    2. Van_locatie: Amsterdam CS
    3. Naar_locatie: Rembrandtplein
  4. Je haalt de data uit jouw database en stuurt de informatie terug naar de eindgebruiker.

In Dialogflow ziet dit er als volgt uit.

Zoals je ziet worden de entiteiten binnen een Intent gedefinieerd. Dialogflow herkent automatisch welke entiteiten naar de webhook verstuurd mogen worden. Dit zorgt voor de dynamische response.

3.1 Fallbacks als een zin niet wordt herkend

Fallbacks zorgen ervoor dat je gebruiksvriendelijke antwoorden hebt voor vragen die niet worden herkend. Om je app slimmer te maken, worden de vragen die niet gevonden worden opgeslagen binnen Dialogflow. Hiermee kan je jouw Intents verder verbeteren.

De standaard responses die je kan opgeven zien er zo uit.

Je kan diverse responses opgeven om diversiteit in te brengen. Zo krijgt de gebruiker niet telkens hetzelfde antwoord.

4. De webhook aanroepen

De Google Assistent app wordt slim door een webhook. Jij maakt zelf een webhook die bepaalde data opzoekt in jouw systeem. Vervolgens wordt de gevonden data vanuit jouw backend teruggekoppeld via de Google Assistent middels een spraakopdracht.

Binnen Dialogflow ziet dit er als volgt uit, hier geef ik mijn webhook op.


Nu we de entiteiten, intents en webhook hebben geconfigureerd kunnen we zien hoe de app in actie werkt.

5. OV app

Onze OV app is klaar, nu kunnen we aan de Assistent vragen hoe laat de eerstvolgende tram naar het Rembrandtplein gaat. Laten we de volgende spraakopdracht uitvoeren Hoe laat vertrekt een tram van Amsterdam Centraal naar het Rembrandtplein”,


We krijgen netjes een response terug. Het volgende werd achter de schermen uitgevoerd om het resultaat te krijgen:

  1. Er is een Intent aangemaakt in Dialogflow. Dat is de mogelijke vraag die gesteld kan worden.
  2. Vervolgens als de vraag herkent wordt, dan probeert Dialogflow de entiteiten eruit te krijgen
    1. Als de vraag niet wordt herkend, krijgen we een antwoord terug zoals: “Ik weet niet wat je bedoelt”
  3. De entiteiten worden eruit gefilterd, en deze worden verstuurd naar onze webhook
    1. Als de entiteiten niet worden gevonden in onze webhook, dan krijgen we een antwoord terug zoals “Sorry, ik heb geen informatie gevonden”
  4. De webhook heeft de data gevonden, en stuurt de gebruiker nu de juiste informatie terug naar de Google Assistent
  5. De gebruiker krijgt nu de gewenste informatie terug.
Conclusie

Voice search zal naar alle waarschijnlijkheid in de toekomst veel gebruikt worden. Langdradige zoekopdrachten worden simpel gemaakt middels spraakopdrachten. Ook kunnen bepaalde processen geautomatiseerd worden. Kijk bijvoorbeeld naar McDonalds. McDonalds is aan het experimenteren om klanten spraakgestuurd een bestelling te laten  opnemen via de McDrive. Veel bedrijven zullen spraakgestuurd zoeken implementeren. Zullen we over vijf jaar alles spraakgestuurd doen, of is het slechts een gimmick? De tijd zal het leren. 

Deel dit bericht

Plaats een reactie

Uw e-mailadres wordt niet op de site getoond