Facebook Messenger Python快速回复按钮

2024-03-29 14:48:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试将快速回复按钮添加到我的messenger聊天机器人中,该聊天机器人是我在Amazon Lambda中使用Amazon Lex和Python开发的。我在Facebook的开发者网站上发现了这个:

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient":{
    "id":"<PSID>"
  },
  "message":{
    "text": "Here's a quick reply!",
    "quick_replies":[
      {
        "content_type":"text",
        "title":"Search",
        "payload":"<POSTBACK_PAYLOAD>",
        "image_url":"http://example.com/img/red.png"
      },
      {
        "content_type":"location"
      },
      {
        "content_type":"text",
        "title":"Something Else",
        "payload":"<POSTBACK_PAYLOAD>"
      }
    ]
  }
}' "https://graph.facebook.com/v2.6/me/messages?access_token=<PAGE_ACCESS_TOKEN>"

我试图寻找解决方案,但他们需要fbmessenger库。我希望使用urllib库而不是开源库。有解决办法吗?在

Quick Reply Button in Messenger

^{pr2}$

Tags: lambdatextcomamazonfacebooktitletype机器人
2条回答

因为您正在与Lex和Lambda一起工作,所以我想您应该将响应按钮发送给用户,以便他继续进行对话。在

下面是在Lambda函数中执行此操作的方法:

'responseCard': {
    'version': '0',
    'contentType': 'application/vnd.amazonaws.card.generic',
    'genericAttachments': [
        {
        'title': 'title1',
        "buttons":[ 
             {
                "text":"button_1",
                "value":"value_to_be_sent_to_server_on_click"
             },
             {
                "text":"button_2",
                "value":"value_to_be_sent_to_server_on_click"
             },
             {
                "text":"button_3",
                "value":"value_to_be_sent_to_server_on_click"
             }
            ]
        }
    ]
}

您可以在Close消息和ElicitSlot消息中使用这些按钮,此外,您还可以将图像与按钮一起使用。在

下面是关闭消息中包含按钮和图像的代码。在

^{pr2}$

注意:在一条传送带中,您最多可以有3个按钮,,但在一条信息中最多可以添加10个旋转木马。如果你有3个以上的按钮,你不会得到错误,但只会显示前3个。在

您需要在Facebook应用程序的messenger设置中检查messaging_postbacks事件,才能使旋转木马按钮正常工作。

您将在messenger中收到如下回复:
enter image description here

希望有帮助。在

这是一个大致的方法,你可以得到和发送。在

获取消息:

data = request.get_json()

if data["object"] == "page":

    for entry in data["entry"]:
        for messaging_event in entry["messaging"]:

            if messaging_event.get("message"):

                sender_id = messaging_event["sender"]["id"]
                recipient_id = messaging_event["recipient"]["id"]
                message_text = messaging_event["message"]["text"]

                send_message(sender_id, "roger that!")

            if messaging_event.get("delivery"):
                pass

            if messaging_event.get("optin"):
                pass

            if messaging_event.get("postback"):
                pass

return "ok", 200

发送消息:

您只需在中包含快速回复按钮代码

"message"

^{pr2}$

事实上,您可以根据此处显示的curl示例定制所需的内容。在

相关问题 更多 >