PortiBlog

Een chatbot bouwen met QnaMaker.ai en Azure Bot Service

14 augustus 2017

Bots zijn cool ! Ze bestaan natuurlijk al een tijdje. Denk bijvoorbeeld aan de "hoe kan ik je helpen" chatschermen op websites als bol.com. Microsoft heeft in Azure de mogelijkheid om een eigen bot te bouwen. Het programmeren van een bot vergt enige programmeerkennis. Om toch een eenvoudige bot te kunnen ontwikkelen, heeft Microsoft deQnA Maker portal gelanceerd.

Via de QnaMaker.ai portal kan je eenvoudig (zonder technische kennis) een eigen chatbot ontwerpen die jouw organisatie kan helpen bij het beantwoorden van simpele vragen rondom een onderwerp. Een simpele FAQ is met QnaMaker.ai zo gebouwd!
Let op: QnaMaker.ai is momenteel 6-8-2017 nog in preview. Dat betekend dat de dienst officieel nog in ontwikkeling is en dat dagelijks bepaalde functies toegevoegd of aangepast kunnen worden. Let daarbij goed op tijdens de implementatie en het onderhoud.

In deze blog gaan wij een eigen bot bouwen en implementeren op een website.
Hiervoor maken wij gebruik van de volgende technieken en diensten:

  • QnaMaker.ai (de portal waar je de bot kan beheren)
  • Microsoft Azure (Bot Service)

Inloggen op QnaMaker.ai

Ga naar https://qnamaker.ai en log in met een Microsoft account.
Kies voor "Create new Service".

Let op: afhankelijk van het type account waarmee je inlogt, kan het voorkomen dat je een "access denied" melding krijgt. In enkele gevallen is de applicatie QnAmaker.ai uitgeschakeld voor gebruik binnen jouw organisatie. Neem contact op met de Azure AD beheerder om deze applicatie toe te staan.

Nadat je op "Create new service" hebt geklikt, kan je de service een naam geven.
In dit voorbeeld gaan wij de Windows FAQ https://www.microsoft.com/nl-nl/software-download/faq in onze bot gebruiken. De vragen (en natuurlijk de antwoorden) op de bovengenoemde website worden door QnA Maker ingeladen.

Geef tevens de URL op naar de externe FAQ pagina. Let op: deze pagina dient publiekelijk toegankelijk te zijn. Je kan dus (nog) helaas geen SharePoint Online (intranet) pagina inladen.

Je kan ook een Excel, Word of TXT bestand inladen. Dit bestand dient wel aan een bepaalde indeling te voldoen. (Vraag, Antwoord, Bron) komma-gescheiden. Je kan een voorbeeld bestand downloaden via de knop: "See an example".

Klik op "Create" de QnaMaker.ai portal gaat nu de opgegeven site onderzoeken (crawlen) op nieuwe vraag/antwoord combinaties. Dit kan even duren.

De bot testen en trainen

Nadat het inladen voltooid is, kan je de bot testen en trainen.
Je kan de bot direct vragen stellen in het chatvenster. Wanneer de bot een onjuist antwoord geeft, kan je in het linker menu (1) een gewenst antwoord kiezen. De bot wordt hierdoor getraind om in het vervolg een beter antwoord te geven.

Moet ik dan alle vragen vooraf definiëren !?
Nee zeker niet! De bot is slim genoeg om verschillende formuleringen van vragen te begrijpen. Maar soms is een "steuntje in de rug" nodig!

In dat geval kan je zelf alternatieve formuleringen toevoegen. (2) Op deze wijze wordt de bot nog slimmer en kan het in vervolg ook deze vraag beantwoorden.

Chat historie downloaden

Wanneer jouw chatbot eenmaal via een kanaal gepubliceerd is, kan je de chathistorie downloaden. Druk daarvoor op de link "Download chat log". (3) Met deze historie kan je precies nagaan welke vragen de gebruikers stellen en welke antwoorden ze terug krijgen. Met deze gegevens kan je de bot uitbreiden met vraag/antwoord combinaties welke nog niet bestonden. Vaak zie je dat gebruikers hele conversaties aan gaan met de bot. Een soort van Turing Test ?! ;)

Ben je helemaal klaar met trainen? sla de bot op via "Save and retrain".

De bot publiceren

Wanneer de bot gereed is voor productie, kan je de bot publiceren.
Druk daarvoor op de knop "Publish". Je krijgt daarmee een stukje code welke je kan implementeren op ieder willekeurige applicatie. In dit voorbeeld gaan wij gebruik maken van de Azure Bot service.

Login op de Azure Portal en zoek naar "Bot service" (preview) en klik op "Create".

Geef de nieuwe service een toepasselijke naam en voeg deze toe aan een nieuwe (of bestaande) resource groep. Geef tevens een locatie op in welk Azure Datacenter de data verwerkt en gehost mag worden.

Klik op "Create" en de service wordt nu aangemaakt.
Nadat de nieuwe service is uitgerold kunnen we de QnaMaker.ai bot integreren in de service. Hiervoor zoek je de nieuwe "WINDOWSFAQBOT" Bot Service op.


Voordat we de service kunnen verbinden, dienen we een Microsoft App ID aan te maken.
Er wordt automatisch een App ID gegenereerd en een bijhorend wachtwoord. Sla de gegevens goed op! Deze gegevens heb je in een latere stap nodig.

Nadat de App ID en Password zijn aangemaakt dien je het wachtwoord in te voeren waarna ook de "Choose a language" opties beschikbaar komen.

Kies voor de programmeertaal "C#" en kies voor de "Question and Answer" blok.
Klik vervolgens op "Create bot". Er wordt nu om een account gevraagd. Geef daar het account op dat is gebruikt tijdens het inloggen op de qnamaker.ai portal.

Na het inloggen kies je de aangemaakte service "Windows FAQ". Indien je meerdere services hebt aangemaakt op QnaMaker.ai, zie je die ook in een dropdown lijst.
Ga akkoord met de voorwaarde en klik op "OK". De bot wordt nu uitgerold in de Azure Bot Service.

Limieten: De QnaMaker is momenteel nog in preview. Je kan deze dienst gratis gebruikten tot 10 transacties per minuut en maximaal 10.000 transacties per maand.

Foutmelding:
Tijdens het uitrollen van de bot kreeg ik een foutmelding dat de naam "Windows FAQ Bot" niet gebruikt mocht worden vanwege inbreuk op merkrechten. (Logisch!) maar wel een beetje laat! Ik heb de naam van de service in QnaMaker.ai moeten aanpassen naar FAQBOT.

In webpagina embedden

Als de uitrol succesvol is verlopen, dan zie je het Azure Bot Service ontwikkelscherm.
Via de knop "Channels" kan je de bot in een kanaal laten landen. Er zijn verschillende kanalen beschikbaar zoals; Skype, Facebook, Teams en Web Chat. In dit voorbeeld kiezen we voor "Web Chat". Hiermee kan je een stukje code implementeren op een webpagina waarna een chatscherm zichtbaar wordt.

Klik in de regel "Web Chat" op "Edit". Nu zie je 2 "Secret"keys. Deze keys worden gebruikt om vanaf een webpagina gebruik te kunnen maken van de bot service.

Ook is HTML-code beschikbaar waarmee je de Web Chat in een webpagina kan embedden:

<iframe src='https://webchat.botframework.com/embed/WINDOWSFAQBOT?s=YOUR_SECRET_HERE'></iframe>

Op de plek van "YOUR_SECRET_HERE" plak je de "secret" die je zojuist hebt gekregen.
Nu kan je de HTML code opnemen in de webpagina of SharePoint site.

Analytics

Om te weten te komen of de bot ook daadwerkelijk gebruikt wordt, kan je analytische gegevens opvragen. Dit kan via de Azure Portal (App Service).

De gegevens over de afgelopen 7 dagen zijn inzichtelijk in de volgende grafieken:

Submit a comment

Niek Jachimowski

Niek Jachimowski

Security Consultant