主页 > D生活台 >用Python开发FacebookBot >

用Python开发FacebookBot

[2020-07-24 07:24] 来源: 申博官网备用网址_真人炸金花app官方版下载
用Python开发FacebookBot

用Python开发FacebookBot 会自动产生,这等等会用到。

  • 为自己的网域名称申请 SSL:Facebook 要求所有 Messager 呼叫的 API 都是要走 https,所以这步骤是必要的,这边我用的是 Let's Encrypt 来申请,依照「Installing Client Software」的步骤来进行,先用 git clone 把专案複製下来,然后在终端机使用 certbot-auto 工具来产生凭证,我是用 Apache HTTP Server,所以执行
  • YOUR_DOMAIN_NAME.COM 要换成你自己的网域名称,不用加 http:// 开头,接着依照它的指示做即可。

    用Python开发FacebookBot我是选择 Easy,让 http 和 https 都可以使用,如果选择 Secure,则所有 API 呼叫都要走 https。

    用Python开发FacebookBot成功完成的画面

    凭证产生好后,我们需要将凭证複製到我们的 API 专案内,我这边是在专案内建立一个 ssl 的资料夹,并且使用终端机切换目录到 /etc/letsencrypt/live/YOUR_DOMAIN_NAME.COM/里面,将 fullchain.pem 和 privkey.pem 複製到刚刚建立的 ssl 资料夹,这等等会用到,千万别複製错档案,我一开始就是複製到 cert.pem / privkey.pem,然后后面就出错了。

    用Python开发FacebookBot複製错凭证档案,在设定 Callback Webhook 就出错了。

    OK,到目前为止,前置步骤算完成,我们可以开始写程式了。

    程式撰写

    程式的部分主要分成三个主要步骤:

    1. 设定 Webhook 做验证。
    2. 从 Facebook 接收使用者的讯息。
    3. 传递讯息到 Facebook。
    1. 设定 Webhook

    新增一个可以接收验证码的 HTTP GET 方法,里面的 I_AM_VERIFICATION_CODE 要换成自己的,其他 hub. 开头的都是 Facebook 既定好的,要照着写。

    再回到 Facebook 应用程式主控台,按下 Setup Webhooks 会出现下图的视窗,要将你的 API 网址和上面的 I_AM_VERIFICATION_CODE 分别输入进去,然后勾选你要的讯息功能:

    用Python开发FacebookBot

    勾选订阅项目如下:

    1. message_deliveries: 讯息传递的相关报表。
    2. messages: 最基本的讯息接收和传递。
    3. messaging_optins: 允许使用者使用在你网站上的 Send-to-Messager 按钮,并且可以授权传递讯息到这。
    4. messaging_postbacks: 允许你传递除了文字之外的讯息种类,例如:按钮和按钮按下后的事件。
    2. 接收讯息。

    从 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 就是从这页面的粉丝专页存取权杖複製而得。
    再来要绑定这个 FB 应用程式和你 Bot 的粉丝团,开启终端机执行

    curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=ACCESS_TOKEN"

    上面的 ACCESS_TOKEN 要用刚刚的粉丝专页存取权杖複製代换,执行完成功后会出现 {“success”: true} →

    用Python开发FacebookBot

    最后一步,我们要启动我们的 API,加入执行 API 的程式:

    if __name__ == '__main__':   context =    app.run

    这边的 context 所用到是我们前置作业所複製出来的两个凭证,为了是让我们的 API 是用 https 存取,这也是 Facebook Message Platform 所要求的。
    最后执行 API 来让我们跟 Bot 聊天吧。

    用Python开发FacebookBot可以成功跟 Bot 聊天

    完成程式码如 GitHub 连结:请给星星吧,我需要你们的支持~

    常见问题可能的解法
    1. Callback 网址有问题?先用工具测试你的 Webhook GET API 是否正常运作,可以呼叫 Webhook API 然后给 hub.verify_token 和 hub.challege 这两个参数,照我们写的程式正确会回传 hub.challege 的值。
      用Python开发FacebookBot使用 Postman 测试 Webhook API
    2. 讯息没有收到或传递失败?别忘了要绑定 Facebook 应用程式和粉丝团
    欢迎加入「Inside」Line 官方帐号,关注最新创业、科技、网路、工作讯息
    用Python开发FacebookBot
    相关推荐
    申博太阳城_真人炸金花app官方版下载|各方面新闻信息网|分享美食信息|网站地图 申博官网备用网址_申博138体育真人荷官 申博官网备用网址_菲律宾申博代理开户