# Facebook Messenger

## Facebook Setup

You first need to set up a facebook page and app to get credentials to connect to Facebook Messenger. Once you have them you can add these to your `credentials.yml`.

### Getting Credentials

**How to get the Facebook credentials:**
You need to set up a Facebook app and a page.

> 1. To create the app head over to  
> [Facebook for Developers](https://developers.facebook.com/)  
> and click on **My Apps** → **Add New App**.  
> 2. Go onto the dashboard for the app and under **Products**,  
> find the **Messenger** section and click **Set Up**. Scroll down to  
> **Token Generation** and click on the link to create a new page for your  
> app.  
> 3. Create your page and select it in the dropdown menu for the  
> **Token Generation**. The shown **Page Access Token** is the  
> `page-access-token` needed later on.  
> 4. Locate the **App Secret** in the app dashboard under **Settings** → **Basic**.  
> This will be your `secret`.  
> 5. Use the collected `secret` and `page-access-token` in your  
> `credentials.yml`, and add a field called `verify` containing  
> a string of your choice. Start `rasa run` with the  
> `--credentials credentials.yml` option.  
> 6. Set up a **Webhook** and select at least the **messaging** and  
> **messaging_postback** subscriptions. Insert your callback URL which will  
> look like `https://<YOUR_HOST>/webhooks/facebook/webhook`. Insert the  
> **Verify Token** which has to match the `verify`  
> entry in your `credentials.yml`.

For more detailed steps, visit the [Messenger docs](https://developers.facebook.com/docs/graph-api/webhooks).

### Running On Facebook Messenger

If you want to connect to Facebook using the run script, e.g. using:

```
rasa run
```

you need to supply a `credentials.yml` with the following content:

```
facebook:
  verify: "rasa-bot"
  secret: "3e34709d01ea89032asdebfe5a74518"
  page-access-token: "EAAbHPa7H9rEBAAuFk4Q3gPKbDedQnx4djJJ1JmQ7CAqO4iJKrQcNT0wtD"
```

The endpoint for receiving Facebook messenger messages is  
`http://localhost:5005/webhooks/facebook/webhook`, replacing  
the host and port with the appropriate values. This is the URL  
you should add in the configuration of the webhook.
