2017-06-16 47 views
3

我有一些代码让bot在启动时发送消息(字符串)。在bot启动时发送自适应卡作为欢迎消息

但是,不要发送像您在下面的代码中看到的文本。我试图弄清楚在这种情况下你将如何发送一张自适应卡。我之前从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); 
         } 
        } 
       } 
      } 

感谢

回答

3

使用代码片断你提供你应该能够复制并粘贴此来代替它。有关卡片在bot框架中的更多信息可以发现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); 
        } 
       } 
      } 
     } 
+0

在bot模拟器中测试了这个,效果很好,谢谢 –