DevelopmentBots maken met het Microsoft Bot Framework

Bots krijgen steeds meer aandacht. Ook Microsoft heeft op dit vlak het nodige te bieden met het Microsoft Bot Framework. Tijdens dit blog ga ik in op wat Microsoft op dit vlak precies te bieden heeft.

Wat is een bot?

Een bot is een stuk software dat een bepaalde taak automatiseert. Dit kan variëren van het opzoeken van informatie, het bestellen van een product of het voeren van een conversatie met de service afdeling van een bedrijf of instelling. In de context van het Microsoft Bot Framework hebben we het over chatbots. In dit geval is er geen geavanceerde user interface, zoals bijvoorbeeld bij een app, maar wordt de bot ‘bediend’ door het voeren van een conversatie met de bot. Bots die ontwikkeld worden m.b.v. het Microsoft Bot Framework integreren naadloos met de bekende messaging platformen zoals Skype, Facebook Messenger, Slack, etc. Je kunt met een bot communiceren door de bot toe te voegen aan de contacten in je favoriete messaging app. Vervolgens kun je direct met de bot communiceren d.m.v. tekst of spraak. Op deze manier is het heel goed mogelijk om meerdere bots te gebruiken vanuit één en dezelfde messaging app. Daarmee vervalt de noodzaak om voor iedere functionaliteit die we op de telefoon willen uitvoeren een aparte app moeten installeren. Aangezien er miljarden mensen gebruik maken van messaging apps, worden bots ook wel gezien als ‘de apps van de toekomst’.

Microsoft Bot Framework

Het Microsoft Bot Framework bestaat uit een aantal componenten en is bedoeld om het ontwikkelen en deployen van bots te vereenvoudigen. Het Framework levert tools, services en alle ‘glue’ die nodig is om de gemaakte bots te integreren met de verschillende messaging platformen.

Het Microsoft Bot Framework bestaat uit de volgende componenten:
• Bot Builder SDK;
• Bot Connector;
• Bot Directory.

Bot Builder SDK

De Microsoft Bot Builder SDK is een Framework dat o.a. helpt bij het bouwen van dialogen. Aan de ene kant hebben we ongestructureerde dialogen waarbij de bot eenvoudigweg een antwoord geeft op een vraag van een gebruiker. Aan de andere kant hebben we gestructureerde dialogen waarbij de gebruiker d.m.v. een aantal vragen en/of keuze mogelijkheden door een ‘gesprek’ wordt geleidt. Daarnaast biedt het Framework een aantal faciliteiten die gebruikt kunnen worden bij het bouwen van de bots. Denk hierbij aan ‘state’ waardoor het mogelijk wordt om informatie tijdens een dialoog of zelfs tussen verschillende dialogen te bewaren. Hierdoor wordt het mogelijk om rijke conversaties te ontwikkelen waarbij de gebruiker van de bot het idee krijgt dat de bot ‘een geheugen heeft’.

Bot Connector Service

De Bot Connector Service is een component dat dient als de brug tussen de bot en de zogenaamde ‘channels’. Een channel is een platform waarop de bot beschikbaar wordt gesteld. Voorbeelden van channels, die ondersteund worden door het Microsoft Bot Framework, zijn: Skype, Facebook Messenger en Slack. De Bot Connector Service verstuurt berichten tussen de bot en een ‘channel’ en zorgt daarbij voor de vertaling tussen het berichtenformaat dat de bot intern hanteert en het formaat van het ‘channel’. Hierdoor is het bij de ontwikkeling van de bot niet noodzakelijk om direct rekening te houden met het channel waarop je de bot uiteindelijk beschikbaar wilt stellen. De keuze voor de channels waarop je de bot uiteindelijk publiceert is achteraf configureerbaar.

Bot Directory

Een belangrijk aspect van een bot is natuurlijk de vindbaarheid van de bot voor gebruikers. Je kunt bijvoorbeeld een link op een website zetten die er voor zorgt dat de bot wordt toegevoegd aan Messenger. Voor Skype bots heeft Microsoft de Bot Directory waarin iedere Skype bot geregistreerd dient te worden. Gebruikers kunnen door deze ‘lijst’ zoeken naar bots die ze graag willen gebruiken. Ook andere platformen, zoals Facebook, hebben vergelijkbare faciliteiten.

Azure Bot Service

Naast het Microsoft Bot Framework bestaat er ook de Azure Bot Service. Dit is een ‘cloud-hosted’ ontwikkelomgeving die is toegespitst op het ontwikkelen en deployen van bots. Bots kunnen ontwikkeld worden in C# of Node.js in een speciaal daarvoor bedoelde Editor in Azure. Een bot die ontwikkeld is met de Azure Bot Service, gebruikt componenten uit het Microsoft Bot Framework. Het voordeel van bots die gemaakt worden met Azure Bot Service is dat deze direct deployed worden in Azure Functions. Dit is het ‘serverless’ platform van Azure met als voordeel dat er totaal geen beheer op noodzakelijk is en dat het eenvoudig ‘mee schaalt’ met het aantal gebruikers van de bot.
Hoewel het programmeren van een eenvoudige bot prima vanuit de Editor in Azure kan, is het verstandiger om continuous integration in te regelen. Hierdoor wordt source control (Git) geregeld voor Visual Studio Team Services en kan er ontwikkeld worden vanuit de Visual Studio IDE. De Azure Bot Service biedt een aantal standaard templates voor veel voorkomende (eenvoudige) bots. Een ideale manier om snel bekend te worden met het ontwikkelen van bots! Met behulp van de meegeleverde simulatoren wordt het mogelijk de bot voor de verschillende channels te testen.

QnA, LUIS en Cognitive Services

Bot ServiceEén van de voor de hand liggende use cases voor een bot is een ‘Customer Service Assistant’ waarbij de bot eenvoudige vragen van een gebruiker beantwoord. Op websites staan dergelijke vragen en antwoorden vaak opgesomd bij Frequently Asked Questions (FAQ). Met behulp van de ‘QnA Maker Service’, die naadloos integreert met Azure Bot Service, kunnen deze FAQ heel eenvoudig beschikbaar worden gesteld in een bot. Het maken van een FAQ bot is dan ook niet meer dan een paar uurtjes werk!

Vaak is het echter gewenst dat een bot iets intelligenter is en dat deze ‘begrijpt’ wat de gebruiker met een bepaalde vraag bedoeld. Hiervoor kan de Microsoft Language Understanding Intelligent Service (LUIS) gebruikt worden. Deze service kan de intentie van de vraag een gebruiker begrijpen. De bot begrijpt de gebruiker dus beter. In vergelijking met de QnA Service maakt LUIS het mogelijk geavanceerdere en rijkere conversaties te implementeren in een bot.

Een bot gebaseerd op LUIS is zeker niet het hoogst haalbare. Het is ook mogelijk om binnen bots gebruik te maken van de Microsoft Cognitive Services. Hierdoor kan de conversatie zelfs worden uitgebreid met image- en/of spraakherkenning en search!

Akash Aartsen, Software Developer