2017-05-11 16 views
0

私はボットフレームワークを使い慣れていません。サンプルのヒーローカードを返信するシンプルなボットをコードするためにC#を使用しています。問題は、Hero CardがBot Framework Channel Emulatorに表示されていないことです。ここでは、コードです:あなたが見ることができるように、私は両方のコンテキストとコネクタにしようとしてきたが、up.I'veが表示されないカードは、アプリケーションをデバッグし、私は、入力された情報があることで見ることができますヒーローカードがボットフレームワークのエミュレータに表示されない

public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> arg) 
    { 
     var referenceMessage = await arg as IMessageActivity; 
     var msg = (Activity)context.MakeMessage(); 
     Activity replyToConversation = msg.CreateReply($"Buscando resultados para {referenceMessage.Text}"); 
     replyToConversation.Recipient = msg.From; 
     replyToConversation.Type = "message"; 
     replyToConversation.ReplyToId = referenceMessage.Id; 
     replyToConversation.AttachmentLayout = "carousel"; 
     replyToConversation.Attachments = new List<Attachment>(); 
     List<CardImage> CardImages = new List<CardImage>(); 
     CardImages.Add(new CardImage() 
     { 
      Url = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/BMW-Z4_diagonal_front_at_IAA_2005.jpg/243px-BMW-Z4_diagonal_front_at_IAA_2005.jpg" 
     }); 

     CardAction btnWebsite = new CardAction() 
     { 
      Type = "openUrl", 
      Title = "Open", 
      Value = "http://bmw.com" 
     }; 

     HeroCard plCard = new HeroCard() 
     { 
      Title = $"{referenceMessage.Text}", 
      Subtitle = $"Resultados de busqueda para {referenceMessage.Text}", 
      Images = CardImages, 
      Tap = btnWebsite 
     }; 

     var attachment = plCard.ToAttachment(); 
     replyToConversation.Attachments.Add(attachment); 
     await context.PostAsync(replyToConversation); 

     //var connector = new ConnectorClient(new Uri(msg.ServiceUrl)); 
     //var reply = connector.Conversations.SendToConversationAsync(replyToConversation); 
    } 

正しくキャプチャしました

これについてのご意見はありますか?

+0

それが役に立てば幸い画像のURL。画像のURLを「https://upload.wikimedia.org/wikipedia/en/archive/a/a9/20151112035044!Banyan_Tree_(_Shiv_Bajrang_Dham_Kishunpur).jpeg」に変更してください。それが動作すれば、私たちに知らせてください。 – OmG

答えて

2

可能な解決策を掲載します。

*あなたの関数は、いくつかのIDialogクラスであり、そしてあなたは次のようになりますいくつかの結果を期待している場合場合:

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument) 

*第2の解決策は、(もし私があなただったら、私はこれを使用します)を作成することです現在のコンテキストからのメッセージ。だからあなたのコードは次のようになります。

public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> arg) 
    { 

     var replyToConversation= context.MakeMessage(); 

     replyToConversation.AttachmentLayout = "carousel"; 
     replyToConversation.Attachments = new List<Attachment>(); 
     List<CardImage> CardImages = new List<CardImage>(); 
     CardImages.Add(new CardImage() 
     { 
      Url = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/BMW-Z4_diagonal_front_at_IAA_2005.jpg/243px-BMW-Z4_diagonal_front_at_IAA_2005.jpg" 
     }); 

     CardAction btnWebsite = new CardAction() 
     { 
      Type = "openUrl", 
      Title = "Open", 
      Value = "http://bmw.com" 
     }; 

     HeroCard plCard = new HeroCard() 
     { 
      Title = $"{referenceMessage.Text}", 
      Subtitle = $"Resultados de busqueda para {referenceMessage.Text}", 
      Images = CardImages, 
      Tap = btnWebsite 
     }; 

     var attachment = plCard.ToAttachment(); 
     replyToConversation.Attachments.Add(attachment); 
     await context.PostAsync(replyToConversation); 
    } 

注:

代わりの

replyToConversation.AttachmentLayout = "carousel", 

使用

replyToConversation.AttachmentLayout = AttachmentLayoutTypes.Carousel; 

は時々問題から来る:)

+0

こんにちはボブ、あなたの答えをどうもありがとう、それは素晴らしい仕事と私のコードを簡素化するのに役立ちました。乾杯! – user1659653

+0

それを聞いてうれしい。 :) –

関連する問題