Het project waar ik aan gewerkt heb op de Gamebasics Hackathon, is een prototype chatbot voor OSM. Microsoft heeft kortgeleden een framework uitgebracht om bots te schrijven. Hiermee kunnen niet alleen opdrachten worden verwerkt via verschillende chatclients, maar er kan zelfs natuurlijke taal worden gebruikt via machine learning. Je kan ook denken aan spraakgestuurde toepassingen. Super interessant voor OSM, maar eigenlijk voor elke online service.

Aan de start van de hackathon bestaat ons kleine team naast mezelf uit één andere developer (die het idee had gepitcht) en nog een UX designer. De taakverdeling is daarom vrij simpel. Ik duik ouderwets een weekje de code in om samen met de andere developer de technische uitdagingen van het framework te doorgronden. De UX designer focust zich op use cases en het plan voor toekomstige uitbreidingen. De laatste dag sluit er nog een tester aan, die het geheel goed doortest.

De bot koppelen aan OSM

Omdat we onze chatbot gelijk willen laten werken met de echte OSM database, is er een zogenaamde API connectie nodig. Gelukkig is de API van OSM zodanig opgezet dat dit standaard mogelijk is. Desondanks is het veel werk om te doen, met name omdat het protocol (OAUTH) dat we gebruiken, mij nog onbekend was en een complexe beveiliging met tokens kent.

Om te beginnen moeten we de gebruiker een verbinding laten leggen met OSM. Dit hebben we ingebouwd door een code, die te bereiken is met een link in het chatvenster. Wanneer de gebruiker deze link volgt, inlogt op de website en de code ingeeft in de chat, dan maken we de connectie. Die blijft vervolgens bestaan voor alle volgende conversaties.

Een elegante oplossing. So far so good.

To Bot Or Not To Bot

De verbinding met OSM is gelegd en we zijn in staat om de gebruiker te herkennen en gegevens van hem op te halen. Maar het bot-framework onder de knie krijgen is geen sinecure. Dat komt omdat alles nog erg nieuw is. Het framework is in ‘preview’, wat zoveel wil zeggen dat het nog niet helemaal af is. Er is weinig documentatie beschikbaar en er kunnen nog bugs en gebreken in het systeem zitten. Hier lopen we dan ook regelmatig tegenaan.

Na de eerste dagen hebben we een training ingebouwd. Je kan spelers selecteren, trainen en hun voortgang claimen. Als we verder willen uitbreiden komen we erachter dat de opzet niet goed is. het kost ons een hele dag om te refactoren voordat we redelijk tevreden zijn. We kunnen daarna verder met het uitbreiden van de bot met meer functionaliteit.

We maken de bot fraaier door gebruik te maken van experimentele features in het bot framework, zoals een carrousel-selectieblokje waarin we de gebruiker grafisch een keuze voorleggen. Ideaal om de logo’s van de teams en de portretten van de spelers in te gebruiken!

LUIS, aangenaam

Eén van de leukste dingen van het bot-framework is de mogelijkheid om LUIS aan te spreken: de Language Understanding and Intelligence Service. Hiermee kunnen we de bot natuurlijke taal laten begrijpen. Dit werkt op basis van machine learning, waarbij de bot steeds slimmer wordt naarmate hij meer contact heeft met mensen.

Wat betekent dit in de praktijk?

Stel we willen een training starten, dan kunnen we zeggen: “Train player”. Maar dit is niet echt een menselijke manier om een vraag te stellen. Logischer is iets als “Please start a training” of “Can you train a player for me?”, maar iedereen zal het net op andere manier doen. Via LUIS leert onze bot al deze manieren aan. Hij is zelfs zo slim, dat hij taalfouten herkent.

We zijn nog wel beperkt tot het Engels. LUIS begrijpt nog geen andere talen. Maar dit is slechts een kwestie van tijd. Wanneer je gebruikt maakt van spraakherkenning, wat standaard is ingebouwd op de meeste telefoons, dan werkt het zelfs al via gesproken commando’s. Handig als je in de auto zit en vergeten bent je spelers te trainen.

luis-screen

OSM spelen via de chat

Wanneer we bezig zijn met de chatbot, komen er allerlei ideeën naar boven om hem cool en bruikbaar te maken. Om een werkend prototype op te kunnen leveren besluiten we om eerst bestaande OSM functionaliteit in te bouwen. O.a. training, switchen van teamslots, op trainingskamp gaan, boss coins claimen, storten van en naar de spaarrekening, de competitie tussenstand bekijken en je resultaat en volgende tegenstander opvragen. Zo hebben we een aardig uitgebreide featureset voor een prototype klaar.

We sluiten de bot aan op Skype, Slack en Facebook Messenger. WhatsApp kan helaas nog niet omdat bots niet ondersteund worden.

 

A Winning Bot?

Als de hackathon haar einde nadert, zitten we nog met het probleem dat de bot best traag reageert. Dit lijkt te komen omdat het framework nog in preview is en gratis in gebruik. Hopelijk zal de uiteindelijke versie, die in productie zal draaien en naar alle waarschijnlijkheid geld kost, veel sneller zijn.

We winnen uiteindelijk de hackathon niet, omdat andere teams meer grafische hoogstandjes kunnen laten zien. Maar we zijn zeer content met het resultaat.

De toekomst van de bot

Wat tijdens het ontwikkelen van deze bot duidelijk is geworden, is dat een bot veel interessante use cases heeft. Gaat het heel OSM vervangen? Nee. Onmisbaar zal het denk ik ook niet worden. Maar blinden en slechtzienden kunnen via de chatbot OSM met spraak bedienen. En als er ergens traag internet is, dan kan iemand via het chatvenster toch zijn team de nodige aanwijzingen geven. Hard core users zullen de chatbot handig kunnen vinden om bepaalde acties snel uit te voeren. En wat te denken van het sociale aspect: je kunt een echte conversatie hebben met je staffleden. OSM was nog nooit zo menselijk.

Uiteraard zijn we hier nog wel een stukje vandaan, en het is de vraag hoe snel we daar aandacht aan geven. Maar ons doel om een bot te maken die werkt en de potentie laat zien, is geslaagd.

One More Thing… voeg ‘m toe

Wie benieuwd is naar de OSM chatbot, hij heet “OSM Assistant” op Skype en is gewoon toe te voegen.

Disclaimer: vooralsnog alleen Engelstalig en alleen aangesloten op de Engelstalige OSM. De werking is beperkt en niet gegarandeerd.

Bot Team
Het legendarische chatbot hackathon team. Van links naar rechts: Jeroen, Roy, Jordy en Sander.
Bot Code
Jordy toont de inner workings van de chatbot
Bot Presentatie
De eindpresentatie van de chatbot op de tribune bij Gamebasics

bot-presentatie

En wat vind jij hiervan? Laat hier je reactie achter.