回调未呈现为本机Facebook消息?

时间:2017-06-14 13:44:41

标签: facebook facebook-graph-api botframework facebook-messenger-bot

根据scenario

用于使用示例消息 - 文本对其进行测试。它工作正常。

我应该通过使用按钮(回调)来实现它。

真正的问题是:

  

示例文字:

context.Activity.Id
"mid.$cAAOmNGtaSJ9i1_f223cprKylFOpb"
  按钮点击(回调)

context.Activity.Id
"9Yw5TAcq1qr"

这是我用来发布人工支持按钮的代码:

                    msg.AttachmentLayout = AttachmentLayoutTypes.Carousel;
                    msg.Attachments = new List<Attachment>();
 
                    ThumbnailCard thumbnailCard2 = new ThumbnailCard()
                    {
                        Buttons = new List<CardAction>
                        {
                                new CardAction ()
                            {
                                Value = "Method_Support",
                                Type = "postBack",
                                Title = "Human Support"
 
                            },
                        },
                    };
                    msg.Attachments.Add(thumbnailCard2.ToAttachment());
                    await context.PostAsync(msg);

它返回activity.Id:9Yw5TAcq1qr - 正如我已经提到的那样。我无法使用该ID来查询Facebook图表api。

处理这样的场景的最佳方法是什么?

是否可以将所有传入的消息呈现为本机Facebook(样本文本)消息?

是否可以使用回调活动来调用图表api.id?

1 个答案:

答案 0 :(得分:2)

根据我之前的回答,关于如何将Activity从botFramework链接到Facebook的图表API中的对话中的messages,我看了你的问题。

分析

从我的观点来看,这个Activity.Id值存在一个奇怪的现象,因为在Facebook的一面,所有消息都具有相同的id格式,即使对于回调也是如此。

以下是来自Facebook Graph API的2条消息(第1条是最新的消息)的捕获:

{
    "data": [{
        "messages": {
            "data": [
                {
                    "id": "m_mid.$cAAC3Jml0RcBi2JK3Clcp01uu8FFe",
                    "message": "Human support"
                },
                {
                    "id": "m_mid.$cAAC3Jml0RcBi2I5bXlcp0kScM7af",
                    "message": ""
                }
            ]
        },
        "id": "t_mid.$..."
    }]
}
  • 带有空文本的消息是ThumbnailCard,其中包含CardAction(type = postback,Value = Method_HumanSupport)
  • Human support是CardAction点击发送的内容

令人惊讶的是,在机器人方面,对于这2条消息,我们为Activity.Id提供了以下值:

  • For&#34; id&#34;:&#34; m_mid。$ cAAC3Jml0RcBi2I5bXlcp0kScM7af&#34; (我的缩略图)=&gt; mid。$ cAAC3Jml0RcBi2I5bXlcp0kScM7af,所以匹配
  • For&#34; id&#34;:&#34; m_mid。$ cAAC3Jml0RcBi2JK3Clcp01uu8FFe&#34; (回调)=&gt; DWhE2C0VO79完全不匹配

有关信息,我的ThumbnailCard就像OP所说的那样:

var msg = context.MakeMessage();
msg.AttachmentLayout = AttachmentLayoutTypes.Carousel;
msg.Attachments = new List<Attachment>();
msg.Text = "updates & support";

ThumbnailCard thumbnailCard2 = new ThumbnailCard()
{
    Buttons = new List<CardAction>
    {

        new CardAction ()
        {
            Value = "Method_HumanSupport",
            Type = "postBack",
            Title = "Human support"
        }
    }
};

我将在Bot Framework GitHub项目中添加一个问题。 编辑:已记录问题:https://github.com/Microsoft/BotBuilder/issues/2950

解决方法

有几种解决方法取决于您的全局用例:您可以尝试记录&#34;正常&#34;的Activity.Id。讨论中的消息,稍后在单击回调时使用此值,或者您也可以尝试更改流程以避免在Bot Framework和Facebook Graph API之间建立此类链接。