Hoe maak ik een chatbot voor Facebook Messenger

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 ModulesNode 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 poortLaten 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 FacebookVerificatie-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 FacebookData-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 berichtAankomst 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 versturenBerichten 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 APIVersturen 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.
© 2017 - 2024 Omnia, het auteursrecht van dit artikel ligt bij de infoteur. Zonder toestemming is vermenigvuldiging verboden. Per 2021 gaat InfoNu verder als archief, artikelen worden nog maar beperkt geactualiseerd.
Gerelateerde artikelen
Chatten met online robot of een zogenaamde chatbotChatten met online robot of een zogenaamde chatbotPraten met een online robot is een leuke tijdsbesteding. Kunstmatige intelligentie wordt steeds realistischer. Er zijn b…
Kunstmatige intelligentie (KI): toepassingen en KI studerenKunstmatige intelligentie (KI): toepassingen en KI studerenKunstmatige intelligentie (KI), ook wel artificial intelligence (AI) genoemd is een term waarmee aangeduid wordt dat een…
De TNM-classificatie, stadiëring van kankerDe TNM-classificatie is een systeem dat wordt gebruikt om elke vorm van kanker waarbij sprake is van een tumor een stadi…
Borrelhapjes traditioneel of nieuwBorrelhapjes traditioneel of nieuwBorrelhapjes horen er altijd bij, zijn het niet de traditionele toastjes dan toch wel een sushihapje, gevuld gerechtje o…
Gif-animatie: bewegende plaatjes makenGif-animatie: bewegende plaatjes makenBewegende afbeeldingen in een webpagina zijn erg leuk. Ook in een mailtje met een verjaardagsgroet of kerstwens heeft ee…
Bronnen en referenties
  • Eigen ervaring
  • https://developers.facebook.com/
  • http://www.emerce.nl/cc?_r=/achtergrond/gelooft-eerdere-koploper-rabobank-nog-chatbots
  • https://nodejs.org/en/
Omnia (8 artikelen)
Laatste update: 23-01-2017
Rubriek: Pc en Internet
Subrubriek: Programmeren
Bronnen en referenties: 4
Per 2021 gaat InfoNu verder als archief. Het grote aanbod van artikelen blijft beschikbaar maar er worden geen nieuwe artikelen meer gepubliceerd en nog maar beperkt geactualiseerd, daardoor kunnen artikelen op bepaalde punten verouderd zijn. Reacties plaatsen bij artikelen is niet meer mogelijk.