【问题标题】:How can we dynamically populate quick replies of facebook messenger from a JSON object?我们如何从 JSON 对象动态填充 facebook messenger 的快速回复?
【发布时间】:2017-02-22 04:43:43
【问题描述】:

我真的很喜欢 Facebook 的快速回复功能,它可以帮助我们引导与用户的对话。 我的背景是我正在构建一个表单填写机器人。在将用户重定向到适当的页面之前,会询问用户几个问题。问题及其选项以 JSON 对象的形式出现。 我想将问题作为短信并将选项作为快速回复。这将极大地帮助用户快速回答几个问题并填写表格。 我被困在需要用问题选项填充快速回复选项的地步。 我正在使用 Microsoft Bot 构建器框架来构建机器人

【问题讨论】:

    标签: facebook bots botframework facebook-messenger chatbot


    【解决方案1】:

    通过ChannelData (C#) / sourceEvent (Node) 字段支持频道的特定功能(例如来自 Facebook 的快速回复)。因此,您需要通过它发送特定信息,以便 Facebook 能够理解并做出相应的反应。

    Here 是一个快速示例,展示了如何发送 Facebook 的快速回复。

    var channelData = JObject.FromObject(new
            {
                quick_replies = new dynamic[]
                {
                    new
                    {
                        content_type = "text",
                        title = "Blue",
                        payload = "DEFINED_PAYLOAD_FOR_PICKING_BLUE",
                        image_url = "https://cdn3.iconfinder.com/data/icons/developperss/PNG/Blue%20Ball.png"
                    },
                    new
                    {
                        content_type = "text",
                        title = "Green",
                        payload = "DEFINED_PAYLOAD_FOR_PICKING_GREEN",
                        image_url = "https://cdn3.iconfinder.com/data/icons/developperss/PNG/Green%20Ball.png"
                    },
                    new
                    {
                        content_type = "text",
                        title = "Red",
                        payload = "DEFINED_PAYLOAD_FOR_PICKING_RED",
                    }
                }
            });
    
            reply.ChannelData = channelData;
    

    您还可以在此blog post 中找到有关如何通过 BotFramework 使用 Facebook 新功能的更多详细信息。

    请注意,在快速回复的特殊情况下,BotFramework 团队正在库中添加对它们的支持。 commit 仍在开发分支中;所以它还没有公开(你仍然可以构建库并引用它而不是公共 NuGet)

    【讨论】:

    • 感谢 Ezequiel Jadib。我错过了另一个障碍。选项的数量各不相同,即有些问题有 3 个选项,而有些问题有 6 个。
    • 谢谢 Ani110591。我不明白这有什么问题。我认为快速回复最多支持 10 个按钮
    • 因此您提供的链接提到了一个帮助程序类,其中可以填充预定义的有效负载。但我需要制作一组动态的选项,这些选项在 3 到 6 个选项之间变化,具体取决于作为 ping 问题 API 响应的选项数量。
    • 帮助类只是为了避免使用动态对象;对于您遇到的每个问题,您都需要创建不同的“快速回复”,这意味着 3 或 6 个选项。如果我在这里遗漏了什么,请道歉;但我想象的流程是:ping 问题 API 给了我 3 个选项,然后我会做一个 for 来创建快速回复。如果它给我6;完美,我也会这样做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多