Hoe maak ik een chatbot voor Facebook Messenger
Misschien wordt 2017 wel het jaar van de chatbots. Chatbots zijn weer helemaal terug van weggeweest. De eerste chatbot gaat terug naar de jaren 50 en ook in de jaren 90 waren chatbots een tijd lang populair. In 2007 had de Rabobank zelfs al een chatbot op het MSN Messenger-platform waar jongeren informatie konden opvragen over hun geldzaken. Een chatbot maakt het leven makkelijker. In plaats van dat jij als gebruiker de informatie opvraagt, komt de informatie met een chatbot naar je toe. Heel handig natuurlijk. Wist je dat je zelf vrij makkelijk een chatbot kunt maken? Er zijn applicaties waarmee je zelf een chatbot kunt creëren. Helaas ben je met dit soort applicaties niet helemaal vrij om te doen wat je wilt. Je kunt ook een chatbot maken op het Facebook Messenger-platform, daar is wel wat programmeerkennis voor nodig, maar je bent vrij om te maken wat je wil. Met Node.js kun je makkelijk een koppeling maken met de Facebook Messenger API.
Benodigdheden vooraf
Om een chatbot op het Facebook Messenger-platform te kunnen maken moet heb je wat programmeerkennis hebben. Heb je dit niet, zorg dan dat je dit eerst opdoet. De volgende onderdelen heb je nodig om te kunnen beginnen:
Node.js
In deze uitleg wordt Node.js gebruikt als backend voor de chatbot. Node.js is een Javascript framework. Node.js is de serverside variant van Javascript en je kunt er eenvoudig webcalls naar databases en API's mee doen. Handig dus als je later informatie vanuit een database wilt ophalen of een externe API wilt gebruiken om de gebruiker te voorzien van informatie. Download dus Node.js voor je begint. Als je Node.js geïnstalleerd hebt, heb je de volgende bibliotheken nodig. Je kunt deze downloaden door in je terminal het volgende commando te typen: npm install <naam module>. Deze bibliotheken heb je nodig om je applicatie te laten werken.
- npm install http
- npm install express
- npm install request
- npm install body-parser
Ngrok
Daarnaast communiceert je testchatbot via de Facebook Messenger API. Om deze communicatie tot stand te brengen moet je een webhook met de API opzetten. Een webhook is een manier voor een applicatie om andere applicaties te voorzien van real-time informatie. In dit geval voorziet Facebook jouw app van real-time informatie wanneer iemand de chatbot een bericht stuurt. Om een webhook te maken heb je een URL nodig zodat we informatie van Facebook kunnen ontvangen en verzenden. Deze URL noem je ook wel een 'endpoint'. Het is noodzakelijk dat je endpoint gebruik maakt van https. Facebook kan alleen met web URL's communiceren.Als je geen eigen hosting hebt kun je het programma ngrok gebruiken om een tunnel op te zetten naar de localhost van je computer. Ngrok genereert een https URL naar je localhost. Deze https URL is normale web URL geschikt voor het opzetten van de webhook.
Zelf een chatbot maken, de voorbereiding
Voordat je zelf een chatbot gaat maken moet je natuurlijk weten wat het onderwerp wordt van de bot. Wil je een chatbot die alleen een conversatie voert met een gebruiker, dan hebben we het over een zogenaamde conversational chatbot. Je kunt hierbij gebruik maken van Machine Learning en artificial intelligence tools. Je kunt ook een chatbot maken die aan de hand van keywords iets ophaalt uit een database of een gebruiker doorstuurt naar een webpagina waarop een actie moet worden ondernomen. Bij een dergelijke chatbot is het doel om de bezoeker informatie te verschaffen of te converteren van bezoeker naar klant. Deze chatbot is eigenlijk niets anders dan een gewone webservice maar dan met een andere interface. Deze manier is veruit de makkelijkste manier om een chatbot te maken. Als je je onderwerp hebt gekozen ben je klaar om de eerste stappen naar je eerste eigen chatbot te zetten.
Creëer een Facebook-page
Om een Facebook Messenger-bot te kunnen maken moet je eerst een
Facebook Page aanmaken. Je chatbot leeft straks in deze Facebook pagina. Geef de pagina dus een passende naam. Om te communiceren met je chatbot moeten gebruikers op deze pagina een bericht sturen. De tweede stap is het koppelen van je Facebook-pagina aan een Facebook-app. Hiervoor ga je naar
de omgeving voor ontwikkelaars. Hier meld je jezelf aan met je Facebook-account. Ga naar de
developers quick start-pagina en kies
Skip and create app id rechts bovenaan de pagina. Maak nu een nieuwe app-id, geef de app een naam en ga naar de volgende pagina. Kies nu voor de optie
Messenger en klik
Get Started. Je komt nu in het dashboard van je Facebook-app.
Access token genereren
Om te kunnen authenticeren heb je een page access token nodig. Ga in het Facebook-dashboard naar het tabblad
Messenger en kies voor
Settings Selecteer bij het hoofdstuk Token Generation je Facebook pagina en je page access token wordt gegenereerd.
Webhook opzetten
Om een webhook op te zetten heb je ngrok nodig. Download en installeer deze applicatie. Open nu je terminal of Command Prompt als je op Windows werkt en voer het volgende commando uit: ./ngrok.http 8080.
Met deze applicatie opgestart heeft nu iedere computer van buitenaf toegang tot je localhost. Dus ook Facebook. Kopieer de hele URL die ngrok heeft gegenereerd en ga naar je app dashboard. Kies hier voor
Webhooks in het menu en vul de URL in bij
callback URL. Het verificatie token kun je zelf bedenken.
Node.js code schrijven
Nu wordt het interessant. Je gaat nu de hersenen van je chatbot maken, oftewel je eerste stuk programmacode voor je chatbot en ga je Facebook verbinden met de chatbot. Maak op je computer een map aan voor de code van je chatbot. Maak in deze map een bestand app.js genaamd. Open je editor. Mocht je nog geen code editor gebruiken dan is Sublime een aanrader.
Node Modules
Node.js modules toevoegen
Eerst moet je de node modules die we nodig hebben toevoegen aan je app.js.
Laten luisteren op de juiste poort
Je app laten luisteren op de juiste poort
Nu heb je nog een stukje code nodig dat zorgt dat je app luistert naar de juiste poort.
Verificatie-antwoord naar Facebook
Verificatie-antwoord naar Facebook
Facebook stuurt een
challenge token samen met het verificatie-token dat je zelf hebt ingegeven. Als het gestuurde verificatie-token overeen komt met het verificatie-token in je applicatie moet de applicatie een antwoord terugsturen dat overeenkomst met het door Facebook gestuurde challenge-token. Als je het onderstaande stukje hebt overgenomen ga je naar de Facebook-dashboard en ga je terug naar de menu optie webhook. Als de ngrok URL en je verificatie-token goed staan ingesteld kun je nu op
Verify and Save klikken.
Je hebt nu een verbinding tussen Facebook en je applicatie.
Data-uitwisseling tussen de applicatie en Facebook
Maak data-uitwisseling tussen de webhook en je applicatie mogelijk
Nu moet je ervoor zorgen dat je berichten kunt ontvangen. Je applicatie moet gaan luisteren of er POST calls van Facebook binnenkomen. Dit zijn de berichten die je applicatie gaat ontvangen.
Nu kun je berichten ontvangen.
Aankomst bericht
Je eerste bericht versturen
Nu je applicatie kan communiceren met de Facebook Messenger API en berichten kan ontvangen is het tijd om het versturen van berichten ook mogelijk te maken. Daarnaast moet je nog iets anders doen. Om te zorgen dat je kunt zien of een bericht is aangekomen en of het gelezen is door de gebruiker maak je een aantal functies aan.
Berichten versturen
Je kunt nu via de terminal in de gaten houden of het bericht aangekomen is bij de gebruiker. Nu moet je de code maken om berichten te kunnen versturen.
Versturen naar de Facebook Messenger API
De functie moet vervolgens de gegevens versturen naar de Facebook Messenger API. Hiervoor roept deze een functie aan die ervoor moet zorgen dat de gegevens worden verstuurd naar de Facebook Messenger API.
Je bent nu klaar om berichten te kunnen versturen. Doe dit door de functie
SendTextMessage aan te roepen, waarbij je het id van de gebruiker en het bericht meegeeft als parameters. Je kunt nu berichten ontvangen en versturen. De chatbot moet nu slimmer gemaakt worden en toegevoegde waarde gaan bieden voor de gebruiker.