会自动产生,这等等会用到。
YOUR_DOMAIN_NAME.COM 要换成你自己的网域名称,不用加 http:// 开头,接着依照它的指示做即可。
我是选择 Easy,让 http 和 https 都可以使用,如果选择 Secure,则所有 API 呼叫都要走 https。
成功完成的画面
凭证产生好后,我们需要将凭证複製到我们的 API 专案内,我这边是在专案内建立一个 ssl 的资料夹,并且使用终端机切换目录到 /etc/letsencrypt/live/YOUR_DOMAIN_NAME.COM/里面,将 fullchain.pem 和 privkey.pem 複製到刚刚建立的 ssl 资料夹,这等等会用到,千万别複製错档案,我一开始就是複製到 cert.pem / privkey.pem,然后后面就出错了。
複製错凭证档案,在设定 Callback Webhook 就出错了。
OK,到目前为止,前置步骤算完成,我们可以开始写程式了。
程式撰写程式的部分主要分成三个主要步骤:
新增一个可以接收验证码的 HTTP GET 方法,里面的 I_AM_VERIFICATION_CODE 要换成自己的,其他 hub. 开头的都是 Facebook 既定好的,要照着写。
再回到 Facebook 应用程式主控台,按下 Setup Webhooks 会出现下图的视窗,要将你的 API 网址和上面的 I_AM_VERIFICATION_CODE 分别输入进去,然后勾选你要的讯息功能:
勾选订阅项目如下:
从 Facebook 传递过来的文字讯息 JSON 格式如下:
可以从 entry → messaging 取得每一则讯息传送者和内容,取得讯息程式如下,使用 HTTP POST,然后去解 JSON 即可:
@app.route def fb_handle_message: message_entries = json.loads)['entry'] for entry in message_entries: messagings = entry['messaging'] for message in messagings: sender = message['sender']['id'] if message.get: text = message['message']['text'] print) return "Hi" 3. 传递讯息。 传递讯息也很简单,只需要呼叫 Graph Message API 即可,程式码如下: def send_fb_message: post_message_url = 'https://graph.facebook.com/v2.6/me/messages?access_token={token}'.format response_message = json.dumps req = requests.post print 里面的 config.FB_TOKEN 是我们在前置作业新增的 FB 应用程式所产生的,要去应用程式的主控台去找。 FB_TOKEN 就是从这页面的粉丝专页存取权杖複製而得。 curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=ACCESS_TOKEN" 上面的 ACCESS_TOKEN 要用刚刚的粉丝专页存取权杖複製代换,执行完成功后会出现 {“success”: true} → 最后一步,我们要启动我们的 API,加入执行 API 的程式: if __name__ == '__main__': context = app.run 这边的 context 所用到是我们前置作业所複製出来的两个凭证,为了是让我们的 API 是用 https 存取,这也是 Facebook Message Platform 所要求的。 完成程式码如 GitHub 连结:请给星星吧,我需要你们的支持~
再来要绑定这个 FB 应用程式和你 Bot 的粉丝团,开启终端机执行
最后执行 API 来让我们跟 Bot 聊天吧。可以成功跟 Bot 聊天
欢迎加入「Inside」Line 官方帐号,关注最新创业、科技、网路、工作讯息
使用 Postman 测试 Webhook API