【问题标题】:Error with Facebook messenger bot codeFacebook Messenger 机器人代码错误
【发布时间】:2016-09-22 06:45:16
【问题描述】:

我正在尝试使用 Facebook Messenger Bot 代码快速入门(可在此处找到:https://developers.facebook.com/docs/messenger-platform/quickstart

我收到了这个错误:

{"error":{"message":"(#100) 参数接收者必须为非空。","type":"OAuthException","code":100,"fbtrace_id":"ALtKsX4nJtX"} }

有什么想法吗?似乎我正在返回正确的响应,但由于某种原因 Facebook 不接受它?谢谢

代码如下(python/appengine):

import webapp2
import json
import urllib
from google.appengine.api import urlfetch

class MainHandler(webapp2.RequestHandler):
    print "hello"

FB_MESSENGER_ACCESS_TOKEN = ""

def respond_FB(sender_id, text):
    json_data = {
        "recipient": {"id": sender_id},
        "message": {"text": text + " to you!"}
    }
    url = "https://graph.facebook.com/v2.6/me/messages?access_token="+FB_MESSENGER_ACCESS_TOKEN
    print("json_data", json_data)
    data = urllib.urlencode(json_data)
    response = urlfetch.fetch(url = url, payload = data, method = urlfetch.POST, headers = {"Content-Type": "application/json"})
    print(response.content)

class FacebookMessenger(webapp2.RequestHandler):
    def get(self):
        if (self.request.get("hub.verify_token") == 'tomstoken'):
            return self.response.write(self.request.get("hub.challenge"))
        return self.response.write('Error, wrong validation token')


    def post(self):
        body = self.request.body
        messaging_events = json.loads(body.decode("utf-8"))
        sender_id = messaging_events["entry"][0]["messaging"][0]["sender"]["id"]
        message = messaging_events["entry"][0]["messaging"][0]["message"]["text"]
        respond_FB(sender_id, message)
        return self.response.write('Received.')

app = webapp2.WSGIApplication([
    ('/', MainHandler),
    ('/webhook*', FacebookMessenger)
], debug=True)

【问题讨论】:

  • 看来我必须将 sender_id 包装在 str(sender_id) 中.....

标签: python google-app-engine facebook-messenger


【解决方案1】:

我刚刚测试了你的函数respond_FB(sender_id, text),由于我没有谷歌应用引擎api,所以我使用了requests

response = requests.post(url, json=data)

如果data替换为 json_data

,一切都会正常

不知道为什么你需要编码json_data,它不是url

【讨论】:

    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多