将自适应卡JSON添加到Bot脚本-C#

时间:2020-06-08 22:47:17

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

我是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)。为实现自适应卡,A应该创建其他功能吗?

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

1 个答案:

答案 0 :(得分:2)

以下是有关如何向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/

只需搜索AdaptiveCard和Botframework,您就会从各种来源中找到更多信息。他们都很好。