2016-07-28 6 views
0

Привет, Я разрабатываю один бот, используя проект Microsoft botframework, в котором я использую интерфейс IDialog. В этом я использую ThumbnailCard для отображения карт. Здесь, когда я прикрепляю некоторые данные к своим картам, и данные прикрепляются должным образом, но в методе PostAsync он не дает ответа.Как использовать ThumbnailCard в контенте IDialog

public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument) 
    { 
     ThumbnailCard plCard = null; 
     IMessageActivity replyToConversation =await argument; 
     replyToConversation.Type = "message"; 
     replyToConversation.Attachments = new List<Attachment>(); 
     replyToConversation.Text = "welcome to book my show"; 
     Dictionary<string, string> cardContentList = new Dictionary<string, string>(); 
     cardContentList.Add("Jason Bourne", "URL"); 
     cardContentList.Add("The Land", "URL"); 
     cardContentList.Add("Yoga Hosers", "URL"); 
     foreach (KeyValuePair<string, string> cardContent in cardContentList) 
     { 
      List<CardImage> cardImages = new List<CardImage>(); 
      cardImages.Add(new CardImage(url: cardContent.Value)); 
      List<CardAction> cardButtons = new List<CardAction>(); 
      if (cardContent.Key == "Jason Bourne") 
      { 
       CardAction plButton1 = new CardAction() 
       { 
        Value = $"", 
        Type = "openUrl", 
        Title = "Book Now" 
       }; 

       CardAction plButton2 = new CardAction() 
       { 
        Value = "tel:1-800-800-5705", 
        Type = "call", 
        Title = "Show timings" 
       }; 
       cardButtons.Add(plButton1); 
       cardButtons.Add(plButton2); 

       plCard = new ThumbnailCard() 
       { 
        Title = $"Jason Bourne", 
        Subtitle = " ", 
        Images = cardImages, 
        Buttons = cardButtons, 

       }; 
       Attachment plAttachment = plCard.ToAttachment(); 
       replyToConversation.Attachments.Add(plAttachment); 
      } 
      else if (cardContent.Key == "The Land") 
      { 
       CardAction plButton1 = new CardAction() 
       { 
        Value = $"", 
        Type = "openUrl", 
        Title = "Book Now" 
       }; 
       CardAction plButton2 = new CardAction() 
       { 
        Value = "tel:1-800-800-5705", 
        Type = "call", 
        Title = "Show Timings" 
       }; 
       cardButtons.Add(plButton1); 
       cardButtons.Add(plButton2); 

       plCard = new ThumbnailCard() 
       { 
        Title = $"The Land", 
        Subtitle = "", 
        Images = cardImages, 
        Buttons = cardButtons, 

       }; 
       Attachment plAttachment = plCard.ToAttachment(); 
       replyToConversation.Attachments.Add(plAttachment); 
      } 
      else if (cardContent.Key == "Yoga Hosers") 
      { 

       CardAction plButton1 = new CardAction() 
       { 
        Value = $"", 
        Type = "openUrl", 
        Title = "Book Now" 
       }; 
       CardAction plButton2 = new CardAction() 
       { 
        Value = "tel:1-800-800-5705", 
        Type = "call", 
        Title = "Show timings" 
       }; 
       cardButtons.Add(plButton1); 
       cardButtons.Add(plButton2); 

       plCard = new ThumbnailCard() 
       { 
        Title = $"Yoga Hosers", 
        Subtitle = "", 
        Images = cardImages, 
        Buttons = cardButtons, 
       }; 
       Attachment plAttachment = plCard.ToAttachment(); 
       replyToConversation.Attachments.Add(plAttachment); 
      } 
     } 
     replyToConversation.AttachmentLayout = AttachmentLayoutTypes.List; 
     await context.PostAsync(replyToConversation); 
    }  

Когда я запустить бот его шоу следующей ошибки enter image description here

Можно ли использовать карты в IDialog контекста для вложений?

ответ

1

Проблема с IMessageActivity, вы пытаетесь отправить IMessageActicity в context.PostAsync. Вот почему он терпит неудачу.

Выполните следующие изменения, чтобы сделать его работу

Изменить метод подписи, как показано ниже

private async Task messageReceived(IDialogContext context, IAwaitable<object> argument) 

и модифицировать IMessageActivity replyToConversation =await argument; нравится ниже

var message = await argument as Activity;   
     Activity replyToConversation = message.CreateReply("Welcome." + "(Hi)"); 
     replyToConversation.Recipient = message.From; 

Теперь он должен работать, если вы все еще есть вопрос прокомментировать здесь.

-Kishore

+0

Спасибо Kishore и спасибо за ваше предложение, и теперь мой код работает исправно – sateesh

 Смежные вопросы

  • Нет связанных вопросов^_^