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

Callbacks not rendered as native Facebook messages?

据此

用于使用示例消息 - 文本对其进行测试。而且效果很好。

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

真正的问题是:

Sample text :

context.Activity.Id
"mid.$cAAOmNGtaSJ9i1_f223cprKylFOpb"

on button click (callback) :

context.Activity.Id
"9Yw5TAcq1qr"

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

                    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);

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

处理这种情况的最佳方法是什么?

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

是否可以使用回调的 activity.id 调用图 api?

根据我之前关于如何 link 从 botFramework 到 messages in Conversation in Facebook's Graph API 的回答,我查看了你的问题.

分析

在我看来,这个 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(类型 = 回发,值 = Method_HumanSupport)
  • Human support 是点击 CardAction
  • 时发送的内容

令人惊讶的是,在机器人端,对于这 2 条消息,我们有以下 Activity.Id 的值:

  • 对于"id":"m_mid.$cAAC3Jml0RcBi2I5bXlcp0kScM7af"(我的缩略图)=> mid.$cAAC3Jml0RcBi2I5bXlcp0kScM7af,所以匹配
  • 对于"id":"m_mid.$cAAC3Jml0RcBi2JK3Clcp01uu8FFe"(回调)=> 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

解决方法

有几种解决方法取决于您的全球用例:您可以尝试在讨论中记录 "normal" 消息的 Activity.Id 并稍后在您的回调被点击时使用此值,或者您也可以尝试更改流程以避免在 Bot Framework 和 Facebook Graph API.

之间产生这种 link