2017-11-23 15 views
1

こんにちは私は、ユーザーがボタンをクリックしたときのような要件があるという点でボットに取り組んでいます。このような次のカードに関連するコンテンツを表示します。それぞれのカードでボットのボタンクリック機能を実装する方法

enter image description here

誰もが適応カード、豊富なカードやサムネイルカードのような任意のカードを使ってボットに上記のシナリオを実装する方法を教えていただけますか?適応型カードとの

答えて

1

、あなたはそのためAdaptiveSubmitActionを使用することができます。

new AdaptiveSubmitAction() 
{ 
    Data = "show me the next card" 
}; 

これはmessage.TextDataの値であると、あなたはそれをユーザーから通常のメッセージと同じように処理できるとの新しい着信メッセージを生成します。

あなたがImBackPostBackアクションを使用して、他の豊富なカード/サムネールカードで同じことを達成することができます

new CardAction() 
{ 
    Type = ActionTypes.ImBack, 
    Value = "show me the next card" 
} 

AdaptiveSubmitActionもあなたの代わりにDataを使用することができますDataJson性質を持っている(DataJsonは効果がありません両方を使用します)。そこにjson構造を置くことができます。message.Valueの着信メッセージになりますが、message.Textはnullになります。

これは、詳細を渡す必要がある場合などに便利です。 DataJson = "{ \"CardName\": \"City\", \"Name\": \"New York\" }"は、ニューヨーク市の都市カードをいくつか開くことを希望している可能性があります。そして、あなたは、このような構造を取得することができます。

protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item) 
    { 
     var message = await item; 
     if (string.IsNullOrEmpty(message.Text)) 
     { 
      dynamic value = message.Value; 
      if (value == null) 
      { 
       // empty message - show help, error etc. 
      } 
      dynamic cardName = value.CardName; 
      // check the name, respond with the wanted card ... 
     } 
     else 
     { 
      // process as usual 
      await base.MessageReceived(context, item); 
     } 
    } 

Hereは、JSONのアプローチを使用するサンプルプロジェクトです。

+0

私は既にそれをしましたが、ボットに私のメッセージに値を渡す方法を立てることができません。上記の例のシナリオでは、それらはすべて詳細を提供して値を取得していますが、私のシナリオでは、ボタンをクリックしてテキストのような値を押して、可能性があり、jsonデータを渡さずに処理できます。 ..可能性がある場合はお知らせください。 – sateesh

+0

Adaptive Cardを使用し、メッセージの 'Text'プロパティに値を設定したいのですか?私はjsonのアプローチを使ってより多くの情報を渡しましたが、私はあなたのテキストを 'DataJson'ではなく' Data'に設定できることを知りました。私は答えを更新しました。 –

+0

あなたのソリューションでうまくいってくれてありがとう – sateesh

関連する問題