Met trots presenteren we onze bot “Woof”

Twee weken geleden publiceerden we een uitgebreid dossier over bots en vandaag kunnen we met trots onze bot “Woof” voorstellen. Je kan onze bot vergelijken met een pup die zijn eerste stapjes zet. Woof is nog een beetje schuchter en begrijpt nog niet alles wat je hem vraagt. Hij moet nog veel leren en verstaat voor het ogenblik enkel Engels.

Voor wie nog niet mee is wat een bot juist is, laten we even samenvatten. We hebben een applicatie gebouwd waarmee je kan praten via Facebook Messenger, net zoals je met jouw vrienden kan praten. Het verschil is dat de persoon met wie je praat geen echte persoon is, maar een bot (applicatie), of een virtuele hond ‘Woof’ in ons geval. De bot “Woof” probeert zo goed mogelijk op jouw vragen te antwoorden en beperkt zich tot het vinden van vacatures. De Facebook Messenger bot fungeert als alternatief op een mobiele app met dit voordeel dat je niets hoeft te downloaden en installeren.

Wat heeft de Creativeskills bot “Woof” in zijn mars?

De bot laat je toe eenvoudig vacatures te vinden. Zo kan je bijvoorbeeld vragen naar een lijst van alle fulltime vacatures, of specifieker naar een lijst van alle freelance jobs in Antwerpen. Of misschien wil je wel alle full-time User Experience Design vacatures in Brussel bekijken? Of simpelweg alle Graphic Design vacatures ongeacht locatie? Probeer zelf maar uit!

Een aantal voorbeelden:

“Show me all graphic design jobs”
“Which careers in Antwerp do you have?”
“All Web Development opportunities”
“Gimme work!”
“Job opportunities in BXL”
“Copywriting in Limburg”

Dankzij natural language processing (NLP) zijn een hele reeks combinaties mogelijk en kan je op een natuurlijke wijze met de bot communiceren. In sommige gevallen verstaat Woof jouw vraag echter niet. Deze scenario’s worden bijgehouden en dienen als basis om de bot te trainen. Op die manier wordt Woof iedere dag een beetje slimmer.

Conceptuele bevindingen

Bij het begin van de ontwikkeling was het onduidelijk waar gesprekken met Woof zouden plaatsvinden. Gebruikers kunnen al langer een bericht naar een organisatie sturen via een Facebook Page, maar het was onduidelijk hoe een bot bij dit verhaal komt kijken. Vervangt een bot de gewone berichtenfunctie? Hoe kunnen gebruikers een bericht sturen zonder met de bot te moeten praten?

Je kan een gesprek tussen gebruiker en bot live volgen en manueel inspringen indien nodig

Wat blijkt? Gesprekken met een bot kan je terugvinden in de “berichten” tab van jouw Facebook Pagina. Je kan een gesprek tussen gebruiker en bot live volgen en indien nodig manueel inspringen. De gebruiker kan geen verschil zien tussen een antwoord van jouw bot of een antwoord van jouw hand. Het vervelende is dat wanneer je persoonlijk inspringt de bot je steeds voor is. Er zou een soort pauze-functie moeten bestaan waarmee een operator de bot het zwijgen kan opleggen en het van de bot kan overnemen.

Voordat je jouw bot aan jouw Facebook Pagina koppelt moet je jou de vraag stellen of je al jouw gebruikers met de bot wenst te laten praten. Indien mensen via jouw Facebook Page berichten insturen over zeer uiteenlopende zaken, en jouw bot slechts een beperkt aantal scenario’s aankan, dan is het misschien beter om jouw bot aan een aparte Facebook Pagina te koppelen.

Poncho
Poncho, de mascotte van een weerbot.

Het voordeel van een aparte Facebook Pagina is dat je de pagina naar jouw bot kan vernoemen – “Woof” in ons geval – en je de profielafbeelding kan gebruiken om jouw bot persoonlijkheid te geven. Tegelijk kan je jouw gebruikers vertrouwd maken met het idee van communiceren met een bot. De meeste bezoekers die via een klassieke Facebook Pagina een bericht sturen, verwachten immers geen antwoord van een bot.

Hoe werd de Creativeskills bot “Woof” ontwikkeld?

Woof werd met behulp van API.AI ontwikkeld. Deze partij staat in voor de natural language processing en haalt parameters uit de antwoorden van de gebruiker. Eens alle vereiste parameters zijn verzameld wordt een request naar onze server gestuurd die dan met behulp van PHP een lijst met relevante jobs teruggeeft. API.AI geeft deze resultaten dan door aan Facebook Messenger.

Screen Shot 2016-05-25 at 8.51.00 PM

API.AI werkt als tussenlaag tussen Facebook Messenger en jouw applicatie/server en haalt heel wat complexiteit weg. Er bestaan een pak alternatieven op API.AI met elk zijn voor- en nadelen. Het voordeel van API.AI is dat het relatief eenvoudig werkt, en dat het met meerdere messaging platformen kan integreren zoals Slack, Microsoft Cortana of simpelweg via SMS met Twilio.

Een van de nadelen aan API.AI is dat je slechts één taal tegelijk kan kiezen waar Nederlands helaas (nog) niet bij hoort. Daarnaast biedt API.AI geen mogelijkheid om op regelmatige basis updates te sturen. Leuk zou zijn als gebruikers zouden kunnen inschrijven om iedere ochtend een bericht met nieuwe jobs te ontvangen. Technisch niet zo’n groot probleem, maar dus niet mogelijk via API.AI. En hoewel API.AI speech recognition ondersteunt, kan je helaas via Facebook Messenger geen voice clip achterlaten dat dan wordt geïnterpreteerd. Spijtig, anders zou je tegen Woof gewoon kunnen babbelen in plaats van berichten te typen.

Stateful versus semi-stateful versus stateless bots

Een andere tekortkoming van API.AI is dat hun bots semi-stateful zijn. Dit wil zeggen dat de bot binnen een gesprek zaken kan onthouden, maar eens het gesprek is afgerond de bot het gesprek volledig vergeet. Dat staat in contrast met stateful bots die bij een nieuw gesprek kunnen terugvallen op antwoorden die in eerdere conversaties werden gegeven.

Het eenvoudigste voorbeeld van stateful vs semi-stateful is het onthouden van een naam. Terwijl een semi-stateful bot jouw naam gedurende een gesprek kan onthouden, vergeet zo’n bot jouw naam eens het gesprek is afgrond. Een stateful bot herinnert jouw naam nog in volgende gesprekken en een stateless bot vergeet jouw naam van zodra je over iets anders begint. Een stateless bot heeft het geheugen van een goudvis dus.

API.AI versus Wit.ai

facebook-witai

Oorspronkelijk was het plan om met wit.ai te werken. Wit.ai is een bedrijf dat Facebook in 2015 overnam. Wit.ai werkt grotendeels zoals API.AI maar ondersteunt meerdere talen waaronder Nederlands. Het probleem met wit.ai is dat hun console bugs bevat. Bij een probleem weet je dus niet of dit aan je eigen onkunde of aan een bug ligt, wat knap vervelend is. Daarnaast was de support traag en documentatie gering. De documentatie bij API.AI is eveneens gering, maar hun console werkte zonder problemen en de support was vele malen sneller.

Het review proces

Een Facebook Messenger bot moet door Facebook worden goedgekeurd voordat deze live kan gaan. Net zoals dit bij apps voor iOS het geval is. Dit review proces verliep enorm vlot. Binnen de 24 uur werd “Woof” goedgekeurd. Dit was veel sneller dan verwacht. Uit gesprekken met andere botbouwers blijkt dat het reviewproces niet altijd even vlot verloopt en soms weken kan duren. Hier en daar hoor je zelfs dat bots worden afgekeurd.

Screen Shot 2016-05-25 at 9.34.55 PM

Het review proces bestaat er in jouw scenario’s uit te schrijven gecombineerd met een screencast waarin je deze scenario’s aantoont. Twee Facebook testers hebben de Creativeskills bot via een korte conversatie getest waarop de bot werd goedgekeurd. Deze gesprekken vonden we terug in onze berichtenlijst.

Dien jouw bot zo vroeg mogelijk in met een beperkt scenario

Een goede strategie is om jouw bot zo vroeg mogelijk in te dienen met een zo beperkt mogelijk scenario. Nadien kan je jouw bot complexer maken en hoef je niet meer door dit review proces te worstelen.

Tenslotte is het belangrijk aan te tonen hoe jouw bot reageert als hij niet begrijpt wat je hem vraagt. Onze screencast toonde hoe een gebruiker ‘HELP’ inriep om de context van de bot beter te begrijpen. Toon dus niet enkel de ideale scenario’s maar ook hoe de bot zich redt in onvoorziene situaties.

Conclusie

Onze bot is live en werkt momenteel binnen een nauw afgelijnd scenario, namelijk het vinden van vacatures per categorie en/of per provincie. De bot probeert de gebruiker zo goed mogelijk binnen de lijnen te houden zodat de gebruikservaring optimaal blijft.

Maar al snel vind je de beperkingen van Woof. Zo is filteren op locatie momenteel beperkt tot provincie, maar uit testen blijkt dat de verwachting is dat je ook op plaatsnaam of postcode kan filteren. Dat maakt het verhaal weer een pak complexer. Je zit niet alleen met plaatsnamen en postcodes, maar evengoed met namen van regio’s zoals ‘Vlaanderen’ en ‘Brussel’ of situaties waarbij een provincie dezelfde naam heeft als een stad zoals bij ‘Antwerpen’ het geval is.

Op technisch gebied zitten we reeds aan de limieten van de mogelijkheden van API.AI, maar voor een MVP en een eerste oefening op scenario’s is dit een uitstekende korte-termijn oplossing. In een volgende fase ziet het eruit dat we de API.AI core naar onze server zullen moeten halen en de mogelijkheden uitbreiden, zoals het uitsturen van updates, het onthouden van eerdere gesprekken etc. Misschien dat wit.ai ondertussen zijn bugs aanpakt zodat we hen een nieuwe kans kunnen geven?

Ondertussen in botland…

Twee weken geleden publiceerden we ons dossier over bots en sindsdien is er al heel wat bewogen in het land der bots. Viv stal de show met een indrukwekkende demo op Techcrunch Disrupt NY. Foursquare sprong op de kar en lanceerde Marsbot waarmee je restaurants kan vinden. Microsoft lanceerde Rowe, een bot genesteld in hun nieuwsapp News Pro.

Google kondigde een nieuwe chat app “Allo” aan dat rijkelijk gebruik maakt van natural language processing en machine learning. Daarnaast gaf Google de broncode van SyntaxNet vrij waarmee je jouw bot kan trainen op jouw eigen data. Parsey McParseface hebben ze alvast voor jou op Engels getraind, en de resultaten zijn indrukwekkend.

Google Home, als alternatief op de Amazon Echo.
Google Home, als alternatief op de Amazon Echo.

Tenslotte kwam Google met een alternatief uit voor de Amazon Echo onder de naam “Google Home” en uit geruchten blijkt dat Apple binnen enkele weken een gelijkaardig toestel voor in de woonkamer aankondigd. Daarnaast wordt verwacht dat Apple op hun Worldwide Developers Conference (WWDC) zal aankondigen dat Siri wordt opengesteld voor applicaties van derden. Spannende tijden!

Genoten van die artikel? Deel het met jouw netwerk!