Bot Framework Cortana C#自适应卡操作按钮不再起作用

时间:2018-08-18 21:25:28

标签: c# botframework cortana adaptive-cards

过去几天,Cortana发生了什么变化? 我在自适应卡上有按钮,现在什么也不做。我已经进行了远程调试,并按预期达到了所有断点,但是在点击按钮时什么也没有发生。好像按钮以某种方式被禁用。 在模拟器中一切正常。 我的Bot代码仅显示了自适应卡中的按钮,然后将其发布到DataJson值中,该值由MessageReceivedAsync方法接收。 我一直在完善这一切的工作方式,因为我发现Cortana在一张卡上最多只能进行5次操作。我对此做了一些处理,使每个按钮都出现在卡上。 因此,我一直在思考,在优化过程中,我做了一些使这些按钮不再起作用的事情。 但是,我现在将代码放回到了几天前的版本,该版本在Cortana中确实有效,而现在却不起作用。 因此,我的问题是,Cortana方面有什么改变可以阻止这种情况吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我修改了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);
        }