在bot启动时发送自适应卡作为欢迎消息

时间:2017-06-16 17:21:35

标签: c# botframework adaptive-cards

我有一些机器人的代码在启动时发送消息(字符串)。

但是,不要像在下面的代码中看到的那样发送文本。我试图找出在这种情况下如何发送自适应卡。我之前从RootDialog发送了一张卡,但没有从MessageController.cs发送。任何方向都会很棒!

else if (message.Type == ActivityTypes.ConversationUpdate)
            {
                // Handle conversation state changes, like members being added and removed
                // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
                // Not available in all channels

                IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity;
                if (iConversationUpdated != null)
                {
                    ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));

                    foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty<ChannelAccount>())
                    {
                        // if the bot is added, then
                        if (member.Id == iConversationUpdated.Recipient.Id)
                        {
                            var reply = ((Activity)iConversationUpdated).CreateReply($"WELCOME MESSAGE HERE");
                            await connector.Conversations.ReplyToActivityAsync(reply);
                        }
                    }
                }
            }

由于

1 个答案:

答案 0 :(得分:4)

使用您提供的代码段,您应该能够复制并粘贴此代码片段以替换它。有关机器人框架中卡片的更多信息,请访问in this blog

       else if (message.Type == ActivityTypes.ConversationUpdate)
        {
            IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity;
            if (iConversationUpdated != null)
            {
                ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));

                foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty<ChannelAccount>())
                {
                    // if the bot is added, then
                    if (member.Id == iConversationUpdated.Recipient.Id)
                    {

                        Activity replyToConversation = message.CreateReply("Should go to conversation");
                        replyToConversation.Attachments = new List<Attachment>();

                        AdaptiveCard card = new AdaptiveCard();

                        // Specify speech for the card.
                        card.Speak = "<s>Your  meeting about \"Adaptive Card design session\"<break strength='weak'/> is starting at 12:30pm</s><s>Do you want to snooze <break strength='weak'/> or do you want to send a late notification to the attendees?</s>";

                        // Add text to the card.
                        card.Body.Add(new TextBlock()
                        {
                            Text = "Adaptive Card design session",
                            Size = TextSize.Large,
                            Weight = TextWeight.Bolder
                        });
                        // Add text to the card.
                        card.Body.Add(new TextBlock()
                        {
                            Text = "Conf Room 112/3377 (10)"
                        });
                        // Add text to the card.
                        card.Body.Add(new TextBlock()
                        {
                            Text = "12:30 PM - 1:30 PM"
                        });
                        // Add list of choices to the card.
                        card.Body.Add(new ChoiceSet()
                        {
                            Id = "snooze",
                            Style = ChoiceInputStyle.Compact,
                            Choices = new List<Choice>()
                            {
                                new Choice() { Title = "5 minutes", Value = "5", IsSelected = true },
                                new Choice() { Title = "15 minutes", Value = "15" },
                                new Choice() { Title = "30 minutes", Value = "30" }
                            }
                        });
                        // Add buttons to the card.
                        card.Actions.Add(new HttpAction()
                        {
                            Url = "http://foo.com",
                            Title = "Snooze"
                        });
                        card.Actions.Add(new HttpAction()
                        {
                            Url = "http://foo.com",
                            Title = "I'll be late"
                        });
                        card.Actions.Add(new HttpAction()
                        {
                            Url = "http://foo.com",
                            Title = "Dismiss"
                        });
                        // Create the attachment.
                        Attachment attachment = new Attachment()
                        {
                            ContentType = AdaptiveCard.ContentType,
                            Content = card
                        };
                        replyToConversation.Attachments.Add(attachment);

                        var reply = await connector.Conversations.SendToConversationAsync(replyToConversation);
                    }
                }
            }
        }