Wednesday, October 12, 2016

Microsoft Bot Framework

Introductie

Dit document beschrijft het Microsoft Bot Framework en werkt een zakelijk scenario uit waarvoor Bots gebruikt zouden kunnen worden.



Het Microsoft Bot Framework is een set ontwikkelcomponenten waarmee je gebruikers in staat stelt om informatie in te dienen bij een back end. De client applicaties waarmee de gebruiker dit kan doen zijn zeer divers en zijn meestal al in gebruik door de eindgebruikers. Voorbeelden zijn Skype, SMS, Slack, Office 365 Mail, etc. De Bot en de gebruiker hebben een conversatie en bij afronding hiervan wordt de uiteindelijke informatie ingediend bij een back-end, vergelijkbaar met het invullen van een web-formulier. Het idee is dat een conversatie met een bot via een al bekend kanaal zeer gebruikersvriendelijk is. Daarnaast wordt voornamelijk al beproefde infrastructuur van de kanaal-aanbieders gebruikt voor de communicatie, naast de Bot die op het zeer schaalbare Azure App Services platform kan worden neergezet. Hierdoor kan met minimale ontwikkel inspanning een gebruikersvriendelijk en schaalbaar systeem worden gebouwd om gegevens in te dienen bij een back-end. Dit kan betekenen dat de gebruiker een pizza kan bestellen, een support request kan indienen of welk verzoek om een dienst dan ook.
De onderdelen van het Bot framework zijn de Bot Connector, de SDKs waarmee je de Bot kunt bouwen en de Bot Directory. Met de Bot Connector kun je gebruikers via verschillende kanalen toegang geven tot je Bot. De Bot zelf bouw je met de SDKs als ASP.Net web applicatie of Node.JS applicatie. Er is ook een Bot Framework Emulator waarmee je de bot kunt testen en Visual Studio templates om snel een bot te kunnen ontwikkelen. De Bot directory wordt een online store waarop je je bots kunt publishen zodat ze door het publiek te vinden en te gebruiken zijn.

Een typische (happy flow) van de gebruiker-bot interactie gaat als volgt:

1.      Eindgebruiker vindt of verkrijgt het Bot id voor een kanaal (skype contact, telefoonnummer voor SMS, Office 365 email adres, etc)
2.      De eindgebruiker spreekt de Bot aan via het kanaal.
3.      De eindgebruiker en de bot hebben een conversatie
4.      De Bot registreert (de uitkomst van) de conversatie in de back-end
5.      Er is terugkoppeling naar de eindgebruiker over het resultaat.
6.      Dienst wordt geleverd aan eindgebruiker (e.g. pizza wordt bezorgd, service request wordt afgehandeld).

Een goede kandidaat voor een back-end systeem kan in bepaalde gevallen een Logic App zijn. Deze workflow kan dan berichten plaatsen in verschillende on-premises of cloud systemen, mensen informeren over de aanvraag en terugkoppeling geven aan de Bot. In simpele gevallen kan een enkele API het Bot bericht afhandelen.

De ontwikkelmogelijkheden binnen de Bot SDK (open source) zijn talrijk. Er is een soort code-wizard om snel een bot te bouwen met de FormFlow klassen. Aan de hand van een definitie van een klasse met publieke eigenschappen en attributen daarop bouwt de SDK zelf de dialogen op die de bot kan doen. Simpele bots kunnen hiermee in een mum van tijd worden gebouwd. Het dialogen framework binnen de SDK, daarentegen, geeft de ontwikkelaar de volledige vrijheid voor het opbouwen van conversaties die een gebruiker kan hebben met een Bot. Een krachtig type dialoog is de Language Understanding Intelligence Service (LUIS) dialog. Hiermee kun je je bot uitrusten met geavanceerde natuurlijke taal herkenning functionaliteiten, door middel van het opzetten van een (getraind) LUIS model. Zo kan je gebruiker in natuurlijke taal met de Bot praten en kan de Bot acties ondernemen op de doelstellingen van de gebruiker die hij registreert..




Scenario

Dit gedeelte beschrijft een mogelijke toepassing waarbij het Bot framework kan worden ingezet. Het scenario is het indienen van declaraties bij de werkgever.
Nadat de kanalen bekend zijn gemaakt bij de eindgebruiker, kiest deze er een en begint de conversatie met de Bot met als doel een declaratie in te dienen. Dit zou via een skype gesprek kunnen, of andere chat clients. In dit voorbeeld zijn screenshots genomen van de Bot Framework Emulator. Een andere chat client heeft natuurlijk een andere GUI maar het algemene principe van een gesprek zal hetzelfde zijn.

Bot scenario



Figuur 1: Initiatie van de conversatie

Figuur 2: Vervolg conversatie

Figuur 3: Samenvatting conversatie door Bot voor de verzending naar Back-end

Figuur 4: Terugkoppeling resultaat
Deze voorbeeldconversatie is gemaakt met een daadwerkelijke implementatie van een Microsoft Bot Framework Bot. Om het voorbeeld duidelijk en bondig te houden zijn er enkele simplificaties toegepast, zoals: Er kan maar 1 declaratie per conversatie worden ingediend, alle antwoorden zijn van type string inclusief de link naar de scan van de factuur (ipv mogelijkheid tot uploaden bestand).

Figuur 5: Standaard options van FormFlow Bot
De demo-Bot is gebouwd met de FormFlow sdk, wat een makkelijke manier is om een simpele Bot te maken voornamelijk via configuratie (in code). Dit heeft als voordeel dat de dialogen automatisch worden gemaakt en er ook een aantal standaard opdrachten aan de Bot worden toegevoegd zoals Help, Reset en Quit.




Discussie

Het Microsoft Bot Framework maakt het makkelijk om je gebruikers een alternatieve manier van interactie aan te bieden via bestaande applicaties, wat, bij een goed design, in veel gevallen een zeer gebruikersvriendelijke ervaring oplevert. Het feit dat je Bot binnen het App Services platform wordt opgeleverd maakt deze direct zeer schaalbaar, onderhoudbaar en uitbreidbaar. Overigens is een Bot een MVC WebApp of Node.JS API en kan dus overal gehost worden. De combinatie met de natuurlijke taal services in LUIS en andere machine learning services in Azure maakt dat de Bots die ontwikkeld worden met het framework zeer intuitief kunnen werken en er met groot gebruikersgemak functionaliteiten kunnen worden aangeroepen. Daarnaast zijn Logic Apps een mooie kandidaat als back-end voor de Bots, zodat deze allerlei acties, logging en terugkoppeling makkelijk configureerbaar en beheersbaar maken.
Het aantal beschikbare kanalen is al zeer groot en zal nog groter worden, WhatsApp zou op termijn een goede toevoeging zijn maar die infrastructuur is nog niet klaar voor directe koppeling met Framework Bots.
Uitdagingen die ik nog zie met het Framework hebben te maken met authenticatie en autorisatie. Hoe gaat het worden ingeregeld dat de identiteit van een gebruiker over kanalen heen kan worden vastgesteld. Dit, zodat er één profiel van een gebruiker kan worden opgebouwd bijvoorbeeld om daarna interacties met de Bot mee te versnellen. Dit zou een nog verdere verbetering van de gebruikerservaring betekenen.
Echter is authorisatie voor het gebruik van de Bot voor een gebruiker of groep gebruikers sowieso iets waarvoor richtlijnen en best practices nog moeten worden bepaald. Wanneer een kanaal is opengesteld kan in principe iedereen via dat kanaal de bot aanspreken, en daarmee de back-end services. Op dit moment is dit alleen te voorkomen door verdere authenticatie en authorisatie in te bouwen in de Bot. Dit vermindert de gebruikersvriendelijkheid van de bot en maakt de development van een Bot complexer en architectonisch minder losgekoppeld.

Dit maakt dat het Bot framework op dit moment alleen geschikt is voor publieke toepassingen, voor zakelijke toepassingen binnen een organisatie zullen er nog goede autorisatie oplossingen moeten worden bedacht.

No comments:

Post a Comment