ruby-on-rails Facebook Messenger Webhook不接受我的回调URL

kh212irz  于 2023-04-22  发布在  Ruby
关注(0)|答案(1)|浏览(165)

我正在用Facebook Messenger开发者平台创建一个聊天机器人。
我的问题是,我试图使用ngrok隧道作为callback_url来设置Webhook,并使用figaro gem将我的access_tokenverify_token添加到我的应用程序中。
不知怎么的,考试总是过不了,我也不知道为什么。
我的ngrok网站在浏览器中运行得很好。但我认为问题源于Webhook没有接收到它想要的信息,从我的理解来看,也就是access_tokenverify_token
我尝试将ngrok隧道重定向到一个返回两个环境变量(ENV["ACCESS_TOKEN"]ENV["VERIFY_TOKEN"])的页面,但这不起作用。所以我只是不确定API期望什么以及为什么它没有得到它。
谢谢你的帮助!
screenshot of what I see on the fb developer platform

frebpwbc

frebpwbc1#

其实很简单,让我解释一下。

@app.route('/facebook/webhook', methods=['GET'])
    def verify_webhook():
        mode = request.args.get('hub.mode')
        token = request.args.get('hub.verify_token')
        challenge = request.args.get('hub.challenge')

        if mode and token and mode == 'subscribe' and token == fb_app_token:        
            return challenge
        else:
            return 'Error, wrong token', 403

@app.route('/facebook/webhook', methods=['POST'])
    def handle_webhook():
        data = request.json
        print('were here')
        print('we got here', data)
        if data['object'] == 'page':
            for entry in data['entry']:
                messaging = entry['messaging']
                for message in messaging:
                    if 'message' in message:
                        sender_id = message['sender']['id']
                        chatbot_response = chatbot_service.call_chatbot([message['message'].get('text', '')])
                        # Reply with the same text received
                        send_message(sender_id, chatbot_response)

假设您将这两个函数公开为端点。
verify_webhook()有一个名为fb_app_token的字符串,这只是一个任意值的字符串,我在这里使用了GUID值。
另外,handle_webhook()也是你将要公开的实际callbackurl函数。
注意HTTP方法,尽管端点命名约定相同。
Facebook会向你提供的CallbackUrl发送一个GET请求。
回拨URL:https://www.myweb_or_ngrok.com/facebook/webhook
验证令牌:为fb_app_token生成的GUID
Facebook将在GET请求中的任何请求之前向您的callbackurl发送VerifyToken值。如果它们匹配,则Facebook确认它已命中正确的端点,并且它现在可以向您的callbackurl发送实际的POST请求。
太多提到callbackurl这个词了:)。
这应该会让你在FB上验证/注册你的callbackurl。

相关问题