Twinkle | Digital Commerce

Hoe maak je een Google Assistent-app voor jouw website?

2019-09-12
1000562
  • [tips]
  • 5:33

Google Assistent is een spraakgestuurde service om opdrachten te geven of om vragen te stellen. Je kan zelf een Assistent-applicatie ontwikkelen om bepaalde diensten spraakgestuurd te ondersteunen. Een goed voorbeeld is een veel gestelde vragen-sectie van jouw website, of een zoekopdracht binnen een database.

Tekst: Erwin Nandpersad

Als je bijvoorbeeld een fashion website hebt, zou je aan de assistent kunnen vragen: ‘Toon mij de goedkoopste rode jurk in maat 38’. De assistent zal dan vervolgens de goedkoopste rode jurk tonen in de app. Of als je een hotelvergelijker hebt kun je vragen: ‘Toon mij het goedkoopste hotel voor morgen in Amsterdam voor twee personen inclusief ontbijt’. Het goedkoopste hotel wordt dan voorgesteld in de Google Assistent-app.

Een app kan je ontwikkelen met Dialogflow. Dialogflow is het ontwikkelprogramma van Google Assistent. Je hebt geen technische kennis nodig om een simpele app te maken, maar als je een dynamische app wilt maken heb je fullfilment hooks nodig. Hiervoor is wel technische kennis vereist. De voorbeelden hierboven moeten allemaal via een hook ontwikkeld worden.

In dit artikel bespreken we de theoretische aspecten hoe je een app kunt maken. Het voorbeeld betreft een Google Assistent kleding app. Deze app is fictief en toont de prijs en aanbieder van het product dat gevonden wordt.

Een fullfilment hook om kleding op te halen

Een hook is een verbinding naar jouw systeem waarmee Google Assistent kan communiceren. In ons voorbeeld bouwen we een app die kleding ophaalt uit onze database. De database ziet er als volgt uit.

Product

Kleur

Geslacht

Prijs

Aanbieder

Jurk

Rood

Vrouw

€20

Otto

Schoen

Blauw

Man

€14,95

Coolblue

Pantalon

Rood

Man

€19,95

wehkamp

 

Onze hook zorgt ervoor dat we de data uit onze database kunnen halen. Het is wel belangrijk om de zinsdelen te splitsen. Als we bijvoorbeeld aan de assistent vragen: ‘Ik zoek een rode pantalon voor mannen.’ Dan moet onze Google Assistent-app weten wat een product, kleur en geslacht is. Dit kan gedefinieerd worden bij de entiteiten.

Entiteiten maken voor onze app

Als je entiteiten aanmaakt binnen Dialogflow, dan leer je de chatbot aan welke entiteit een zinsdeel behoort. Google Assistent weet niet wat de kleur rood, of het geslacht vrouw is. Zie onderstaande tabel wat we opgeven in Dialogflow:
 

Entiteit Product

Entiteit

Waarde

Product

A lijn jurk

Product

Nike schoen

Product

Pantalon

 

Entiteit Kleur

Entiteit

Waarde

Kleur

Rood

Kleur

Blauw

Kleur

Geel

 

Entiteit  Geslacht

Entiteit

Waarde

Geslacht

Man

Geslacht

Vrouw

 

In Dialogflow ziet dit er zo uit voor de entiteit kleur:


Uiteraard kunnen we ook synoniemen opgeven. Zo kunnen we aan Man het synoniem Heren toevoegen. Als we nu de spraakopdracht: ‘Ik zoek een gele pantalon voor mannen’ uitvoeren, is de Google Assistent slim genoeg om uit te vogelen welke entiteiten in de zin beschikbaar zijn.

De volgende parameters worden dan naar onze hook verstuurd:

Product

Pantalon

Kleur

Gele

Geslacht

mannen

 

In onze database kunnen we op basis van deze waardes een query uitvoeren om een resultaat terug te sturen naar de Google Assistent. Voordat we alles aan elkaar kunnen knopen, moeten we alleen nog de intents aanmaken. Intents zijn mogelijke vragen die een gebruiker kan stellen aan de Assistent. Voordat we intents gaan bespreken wil ik een klein nadeel bij de entiteiten bespreken.

Toch een klein nadeel aan de entiteiten

Binnen Dialogflow kan je handmatig entiteiten aanmaken. Dus ieder product moet je manueel invoeren. Dit kan best veel werk zijn als je een grote database met diverse producten hebt.


Om dit te automatiseren, moet je een API aanleggen met Dialogflow. Jouw systeem moet dan synchroniseren met de Dialogflow API. Wanneer er bijvoorbeeld nieuwe pantalons beschikbaar zijn, dan worden deze verstuurd naar de entiteiten in Dialogflow. Wij hebben een technische tutorial gemaakt hoe je de Google Assistent API makkelijk kan implementeren. Op deze manier wordt jouw product data altijd gesynchroniseerd met de entiteiten die in Dialogflow zijn aangemaakt. Hierdoor blijft je app up-to-date.

Intents aanmaken

Intents zijn vragen die de eindgebruiker kan stellen aan onze app.  Laten we een aantal vragen definiëren ter illustratie.

- Ik zoek een kleur product voor geslacht
- Zoek een kleur product voor mij

We kunnen meerdere Intents aanmaken binnen Dialogflow. Zoals je ziet, gebruiken we de entiteiten in een zin. De assistent herkent automatisch de zinsopbouw. De zin: ‘Ik zoek een rode pantalon voor mannen’ is een valide opbouw om herkend te worden door Google Assistent. In de onderstaande afbeelding zie je hoe een Intent er uitziet binnen Dialogflow.


Hier zie je hoe de zin is opgebouwd uit meerdere entiteiten. Het is belangrijk per zin de verschillende entiteiten op te geven, omdat de webhook anders niet weet welk product we moeten tonen.

Fallbacks als bepaalde zinnen niet worden gevonden

Als iemand een vraag stelt aan Google Assistent, en de app herkent dit niet, kun je een antwoord teruggeven aan de gebruiker. Wanneer je de volgende vraag stelt: ‘Ik wil een rode pantalon voor mijn dochter’, dan kan je een default response geven, bijvoorbeeld: ‘ik weet niet wat je bedoelt’.

Dialogflow houdt bij welke vragen niet gevonden worden, deze kan je weer toevoegen in Dialogflow, zo maak je de chatbot nog slimmer.


In de bovenstaande afbeelding zie je hoe binnen Dialogflow antwoorden gedefinieerd worden. Nu we de Intents en Entiteiten hebben gedefinieerd, moeten we alleen nog aangeven welke hook aangeroepen mag worden. Zo kan er een verzoek naar ons systeem worden gemaakt om data terug te geven aan de eindgebruiker.

De webhook aanroepen

Binnen Google Assistent kun je aangeven of je een hook wilt gebruiken. Hiermee kun je verbinding maken met je eigen systeem. De entiteiten worden uit een zinsopbouw gefilterd, en stuur je als parameters mee naar de webhook. Jouw systeem kan vervolgens een response teruggeven aan de assistent met de opgegeven parameters. Dit moet je aangeven binnen Dialogflow. In onderstaande afbeelding zie je hoe er binnen Dialogflow een verbinding wordt gemaakt met een hook.


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

De Zoek Kleding Assistent-app

Binnen Dialogflow kan je de app testen of het goed werkt. Dit gaat met een simulator. We vragen aan de simulator het volgende: ‘Ik zoek een rode pantalon voor heren’.


Deze spraakopdracht stuurt een query naar onze hook, de hook heeft het product gevonden en stuurt in een spraakopdracht de feedback terug naar de gebruiker.

Als er een opdracht wordt gegeven die niet herkend wordt, dan krijg je netjes een response terug.

Conclusie

Voice search zal in de toekomst veel gebruikt worden. Het grootste voordeel is dat je niet hoeft te typen. Met simpele spraakopdrachten krijg je snel de resultaten terug die je verwacht.

Om een dynamische assistent te maken moet je gebruikmaken van hooks. Een hook zorgt ervoor dat de resultaten van jouw systeem teruggestuurd worden naar de eindgebruiker.

In ons voorbeeld hebben we een fictieve kleding zoeker gebruikt, maar in de praktijk zou je dit ook prima kunnen gebruiken voor een voetbal standen app. Als je bijvoorbeeld wilt weten wat de stand is in de Eredivisie, dan kan dit met een simpele spraakopdracht.  Zo zijn er vele voorbeelden te bedenken. Zal Voice Search de toekomst worden? De tijd zal het leren.

Voor nadere informatie over dit onderwerp of over implementaties van de Google Assistent kan je altijd contact met ons opnemen.

Erwin Nandpersad is oprichter van Ermmedia.