A simple python chatbot for Facebook Messenger.
The bot reads incoming Facebook Messenger messages, and responds by generating random text from a corpus. The length of the response is randomly selected around the length of the incoming message, and a random word from the incoming message is selected as the starting word of the response.
Use of virtualenv is highly recommended, especially since the old version of nltk
used requires an old version of setuptools
.
$ pip install -r requirements.txt
- You're going to need a publicly routed https address. I used ngrok to create a tunnel to my local development machine.
- The server will need to be started for you to verify the webhook. See "Starting the server" below.
- Follow the instructions provided in the Facebook quickstart tutorial for creating a page and an app.
- Set the
VERIFY_TOKEN
andFACEBOOK_TOKEN
environment variables to the values you get from following the tutorial.
Before you start the server, there has to be a file called corpus.txt
in the root directory. This can be any text, but I found it interesting to use all of my sent emails as the corpus.
If you have your emails in mbox format (you can get them from Gmail using Google Takeout), you can use the provided mail_corpus.py
to build a corpus.
$ python mail_corpus.py emails.mbox youremail1@example.com youremail2@example.com ...
This will grab the text from all emails from the specified addresses (it tries to not include text responded to, signatures and so on), and create a corpus from it.
Is just a matter of
$ python server.py
- A big corpus takes a loooong time to load
- Tests
- Send structured messages
- Handle postbacks