# 如何接入 Facebook Messenger

# 如果你还没有 Facebook page 的话则需要先创建一个

Facebook Messenger 是绑定到 Facebook page 上的,如果你的项目还没有 Facebook page,那么你需要先创建一个。

# 创建一个 Facebook App

Facebook Messenger chatbot 同时也绑定一个 Facebook App,参考下面的步骤创建你的 app,然后绑定到上面创建的 Facebook page 上去。

  1. 打开https://developers.facebook.com, 找到 My Apps 菜单,点击 Create App

  2. 设置一个 Display Name 然后点击 Create App ID.

  3. 找到 Messenger Card 点击 Set Up.

  4. 向下拖动一点页面,找到 Access Token 然后点击 Add or Remove Page 按钮.

  5. 点击确认

  6. 这里会看到 Facebook 为你创建好的 Facebook page,选择你想添加 chatbot 的页面然后点击 Next.

  7. 点击 Done 暂时忽律警告信息,等部署完 chatbot以后你需要至少 locale 权限,Botfront 需要这个权限用以获得用户所使用的语言,从而为用户提供对应语言的服务。

  1. 点击 Generate Token 按钮
  • 点击 I understand 查看 token,注意!如提示所说,你不会再看到这个 token,所以赶紧把它记到一个安全的地方保存起来。
  • 点击 Copy 然后直接粘贴到 channel 部分:

 


rasa_addons.core.channels.messenger.FBmessenger:
  page-access-token: <your token>
  ...
  1. 点击 Done.

  2. 点击左边菜单中的 Settings -> Basic 然后在 App Secret 部分点击 show 。把这个值拷贝到你 channel 的 app_secret 中。



 


rasa_addons.core.channels.messenger.FBmessenger:
  page-access-token: <your token>
  secret: <your secret>
  ...
  1. 添加一个验证 token,这个 token 是一串你定义的任意字符串,只要别选特别简单的就行。


 


rasa_addons.core.channels.messenger.FBmessenger:
  page-access-token: <your token>
  secret: <your secret>
  verify: <your verify token>

# 本地开发

如果你是在你本地机器上进行开发,那么你需要把本地机器的特定端口暴露到公网上去,让 Facebook 的服务器可以访问到你的机器,推荐两个方式,一个是 localtunnel.me , 另一个是 ngrok.com,当然如果你有 frp 之类的服务已经在跑了那就更是小菜一碟了。

Localtunnel 是开源的, Ngrok 是商业软件,但它的免费授权应该足以满足大部分的开发需求了。我们的经验是 Ngrok 要更稳定些(the tunnel breaks often with LT),并且它提供了更友好的用户界面、可方便的重发请求,你会发现在调试的过程中重发请求是一个非常方便的特性,所以接下来的介绍里面我们主要基于 Ngrok 来做介绍。

# 1. 设置 Ngrok

登录 Ngrok 网站 获取一个免费授权。

下载并配置好 Ngrok

ngrok 加到系统路径中去或者创建一个软连接(MacOS 和 Linux):

# cd into your local bin directory
cd /usr/local/bin
# create symlink to the installation path
ln -s /Applications/ngrok ngrok

执行 ngrok http 5005启动 Ngrok5005 是你本地机器 Rasa 的监听端口,执行后你应该可以看到类似下面的输出:

所有发到 https://bea5a753.ngrok.io 的请求都会被重定向到你本地开发机器的 https://localhost:5005 端口,接下来把这个配置添加到 Facebook 中。

# 2. 配置 Webhook

在前面创建的 App 中向下滑到 Webhook ,点击 Add Callback URL.

把上面得到的 ngrok url(https://<ngrok_host>/webhooks/facebook/webhook) 和之前第 11 步获得的 verify token 填进去, 点击 Save.

监听对应的时间. 你应该会看到类似下图中的输出, 官方文档 中有更详细的介绍。

# 3. 测试你的 chatbot

导航到 https://m.me/<page_id><page_id> 可以在你的 app 设置页面找到 (如下图遮盖的位置).