【问题标题】:Bot Framework Cortana C# Adaptive Cards Action Buttons no longer workingBot Framework Cortana C# Adaptive Cards Action Buttons 不再工作
【发布时间】:2018-08-22 04:05:15
【问题描述】:

在过去的几天里,Cortana 有什么变化吗? 我在自适应卡上有按钮,现在什么都不做。我已经按预期进行了远程调试并击中了所有断点,但是当点击按钮时没有任何反应。好像按钮以某种方式被禁用。 在模拟器中一切正常。 我的 Bot 代码只是在自适应卡片中显示按钮,然后发布它们的 DataJson 值,该值由 MessageReceivedAsync 方法接收。 我一直在完善这一切的工作原理,因为我发现 Cortana 在一张卡上的操作限制为 5 个。我在这方面做了一些工作,让每个按钮都出现在卡片上。 因此,我一直在想,在我的炼制中,我做了一些事情,让这些按钮不再起作用。 但是,我现在已经将我的代码恢复到几天前的状态,这在 Cortana 中确实可以工作,但现在无法正常工作。 因此,我的问题是,Cortana 方面是否有任何改变来阻止这种情况?

谢谢!

【问题讨论】:

  • 我只是以为我的手机在 Insider Fast Ring 上,现在是 OS Build: 10.0.15254.527。这是否已经更新、更改了 Cortana 应用并导致了这种情况?
  • 情况发生了变化(新的 OAuth 字段和需要重新生成密钥),但我不确定我是否有足够的信息来提供帮助。有错误吗? Cortana 的调试说明了什么?网络应用机器人控制台说什么?
  • 我使用 Adaptive Cards 创建了一个示例并使用 Cortana 通道进行了测试,我可以重现相同的问题:DataJson 值不会在按钮时回传到机器人应用程序(s ) 被点击。 Cortana 好像不完全支持 Adaptive Cards,如果可以的话,可以create an issue 举报。
  • 我正在尝试重新创建一个简单的样本来确认。
  • 嗨@AlexanderPizzoferro,今天我用 Cortana 通道重新测试了机器人,使用自适应卡的相同代码现在可以按预期工作,如果我单击按钮,DataJson 值可以回传到机器人应用程序。不确定 Cortana 的临时问题是否会导致该问题。

标签: c# botframework cortana adaptive-cards


【解决方案1】:

我修改了 echodemo 以放置一个简单的自适应卡,它按文档说明工作:“感谢点击!SomeType 是 SomeData”。 (我正在记录一张将文档更新到自适应卡 v1.0.3 的票证)。

    public async Task ClickHandleAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
    {
        var message = await argument;
        try
        {
            string someValue = "unknown";
            if (message.Value != null)
            {
                // Got an Action Submit
                dynamic value = message.Value;
                string s = value.ToString();
                Trace.WriteLine(s);
                someValue = value.SomeType;
            }
            else
                Trace.TraceInformation("There is no value");

            //string data = message.ChannelData.ToString();
            //Trace.WriteLine(data);

            //Trace.TraceInformation("stringify message");
            //string json = new JavaScriptSerializer().Serialize(message);
            //Trace.WriteLine(json);
            await context.PostAsync("Thanks for the click! SomeType is " + someValue);
            context.Wait(MessageReceivedAsync);
        }
        catch (Exception e)
        {
            Trace.TraceInformation(e.ToString());
        }
    }

    public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
    {
        var message = await argument;

        if (message.Text == "show card")
        {
            var response = context.MakeMessage();
            if (response.Attachments == null)
                response.Attachments = new List<Attachment>();

            AdaptiveCard card = new AdaptiveCard();

            card.Body.Add(new AdaptiveTextBlock()
            {
                Text = "This is a test",
                Weight = AdaptiveTextWeight.Bolder,
                Size = AdaptiveTextSize.Medium
            });

            card.Actions.Add(new AdaptiveSubmitAction()
            {
                Title = "Click Me",
                Id = "12345678",
                DataJson = "{ \"SomeType\": \"SomeData\" }"
            });

            Attachment attachment = new Attachment()
            {
                ContentType = AdaptiveCard.ContentType,
                Content = card,
                Name = "MyCard"
            };
            response.Attachments.Add(attachment);

            await context.PostAsync(response);
            context.Wait(ClickHandleAsync);
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2017-12-22
    • 2020-12-10
    • 2021-10-13
    • 2020-02-17
    相关资源
    最近更新 更多