【问题标题】:Facebook Bot Messenger. PythonFacebook 机器人信使。 Python
【发布时间】:2017-01-17 15:38:25
【问题描述】:

我正在 GAE 上开发 FB 机器人,我的机器人的功能之一是发送图像。我想附上我的图片并将其发送给用户(不是通过链接)。

问题是我得到错误:必须指定收件人,但实际上我已经指定了它:

from requests_toolbelt import MultipartEncoder
from google.appengine.api import urlfetch

def send_image(recipient_id):
payload = {
    'recipient': json.dumps(
        {
            'id': recipient_id
        }
    ),
    'message': json.dumps(
        {
            'attachment': {
                'type': 'image',
                'payload': {}
            }
        }
    ),
    'filedata': (path, open(path, 'rb'))
}
multipart_data = MultipartEncoder(payload)
multipart_header = {
    u'Content-Type': multipart_data.content_type
}

result = urlfetch.fetch(
    url=request_endpoint,
    payload=multipart_data,
    method=urlfetch.POST,

    headers=multipart_header,
    deadline=10)

return result.content

result.response:

'{"error":{"message":"(#100) The parameter recipient is required","type":"OAuthException","code":100,"fbtrace_id":"CIGds8u22au"}}'

【问题讨论】:

  • 能打印出result.content吗?可能收件人 ID 为空或消息格式错误。您可以使用链接模型发送相同的消息吗?
  • @MatthewFisher,感谢您的回复。我已经编辑了这个问题。我已经检查了 multipart_data 有非空字段接收者。接收者 = '{"id": "value"}'。我不想使用链接,因为我以编程方式生成图片,所以在这种情况下我需要一些托管。
  • 这并不能告诉我们太多。打印 multipart_data 怎么样?可以发送其他消息吗?
  • @MatthewFisher, snag.gy/NTA1hv.jpg 我想问题是标题不合适,但看起来还可以,
  • 如果能得到程序实际在网络上发送的纯文本,那就太好了。也许有'urlfetch'的调试输出。我想将它与此处的示例进行比较https://developers.facebook.com/docs/messenger-platform/send-api-reference/image-attachmen filedata 字段对我来说看起来很奇怪。我期望一个 MIME 编码的文本块。您可以尝试使用链接样式吗?最好了解收件人是实际问题还是错误消息具有误导性。

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


【解决方案1】:

要发送图片,您可以使用附件上传 API。 过程很简单。 通过提供图片链接并获取附件 ID,您可以将图片作为附件上传。然后使用该附件 ID 向用户发送附件。 参考:Attachment Upload Api

【讨论】:

    猜你喜欢
    • 2016-09-30
    • 2016-10-21
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2016-09-27
    • 2016-12-05
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多