【问题标题】:Adding the Adaptive Card JSON to the bot script - C#将自适应卡片 JSON 添加到机器人脚本 - C#
【发布时间】:2020-09-28 00:38:20
【问题描述】:

我是 Bot Framework 的新手,刚开始使用 C# 的 Echo Bot 示例。但是,最后,我想将我的机器人集成到 Teams 频道,其中一个对话流需要整合来自多个 API 的信息并将其发送给用户。

我想我们可以使用'ColumnSet'以表格格式显示来自how-to-display-data-in-table-format-in-microsoft-bot-framework的数据

现在我有了自适应卡片 JSON 对象(表格中的数据),我不确定在哪里以及如何将这个自适应卡片组件准确地集成到 echo bot 脚本中。很少有示例显示存储自适应卡 JSON 并从路径读取并将其作为附件发送,但我仍然不清楚。

以下是 echo bot 项目文件夹中的 C# bot 代码 (Echobot.cs)。是否应该创建一个不同的函数来实现自适应卡?

using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;

namespace Microsoft.BotBuilderSamples.Bots
{
    public class EchoBot : ActivityHandler
    {
        protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            var replyText = $"Echo: {turnContext.Activity.Text}";
            await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
        }

        protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            var welcomeText = "Hello and welcome!";
            foreach (var member in membersAdded)
            {
                if (member.Id != turnContext.Activity.Recipient.Id)
                {
                    await turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText), cancellationToken);
                }
            }
        }
    }
}

【问题讨论】:

  • 我不确定发布 Microsoft 的 Echo Bot 示例代码是否构成发布到目前为止您尝试了什么“示例显示了存储自适应卡 JSON 并从路径读取并将其作为附件发送,但我仍然不清楚” - 什么不清楚?你为什么不合并它?

标签: c# azure botframework azure-language-understanding adaptive-cards


【解决方案1】:

这是一个关于如何将卡片发送到 MS Teams 的示例:

                var newActivity = new Activity
            {
                Text = string.Empty,
                Summary = GetActivityText(data,eventData,step),
                Type = ActivityTypes.Message,
                Attachments = new List<Attachment>
                {
                    new Attachment
                    {
                        ContentType = "application/vnd.microsoft.card.adaptive",
                        Content = card
                    },
                },
                Conversation = new ConversationAccount
                {
                    Id = conversationid,
                }
            };
           await turnContext.SendActivityAsync(activity, cancellationToken);

但是,有多种方法可以做到这一点。这取决于事件的一点点。例如,MessageExtensions 需要稍微不同的方法。

一般来说,您创建一个新活动,将卡片作为附件添加到活动中,然后发送。

正如 MickyD 在评论中指出的那样,所有这些都在文档中进行了解释。 以下是有关此的更多信息:https://blog.botframework.com/2019/07/02/using-adaptive-cards-with-the-microsoft-bot-framework/

只需搜索 AdaptiveCards 和 Botframework,您就会发现来自各种来源的更多信息。他们都很好。

【讨论】:

    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 2020-04-11
    • 2020-03-29
    • 2021-08-09
    • 2021-05-01
    • 2020-10-09
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多