2017-12-07 12 views
1

Skype、Slack、またはMessengerユーザーに、いくつかのpostBackアクションを使ってカード(またはリンクのリスト)を表示しようとしています。 Herocardが正常に動作しますボットフレームワーク - ボタンのないimBackまたはpostBackメッセージ?出来ますか?

は、彼らがこの例のように、テキストとボタンを表示:

IMessageActivity replyMessage = context.MakeMessage(); 
    replyMessage.Attachments.Add(
    new HeroCard 
    { 
     Subtitle = "Settings", 
     Buttons = new List<CardAction> { 
      new CardAction(ActionTypes.ImBack, $"Spell-check {spellcheckst}", value: $"Set Spell-check setting {spellcheckst}", text: $"Spell-check {spellcheckst}", displayText: $"Spell-check {spellcheckst}"), 
      new CardAction(ActionTypes.ImBack, $"Small-talk {smalltalkst}", value: $"Set Small-talk setting {smalltalkst}", text: $"Small-talk {smalltalkst}", displayText: $"Small-talk {smalltalkst}") 

     } 
    }.ToAttachment() 
    ); 
    await context.PostAsync(replyMessage); 

しかし、ボタンが画面の不動産とそのキャプションが切り捨てられている多くの多くの時間を取ります。

ボタンを表示せずにpostBackまたはimBackカードアクションをトリガーする方法はありますか。ユーザーがヘルプを要求したときにここでは例のシナリオは、ある、コマンドのボットが表示リスト:

  1. は、ウェブページTry Me
  2. ヘルプを表示しますTry Me
  3. などを削除して、WebページTry Me
  4. を追加

「Try Me」リンクは、上記のボタンとまったく同じようにボットにポストバックします。

これは可能ですか?

おかげ

答えて

0

は確かに、大きなボタンの名前は、問題を作成し、それはカードへの外国人のように見えるのです。その代わりに、カルーセルカードを使用して行うことができます。ダイアログの下にコードを入力してチェックしてください。私はそれとその働きをしています。

public Task StartAsync(IDialogContext context) 
     { 
      context.Wait(MessageReceivedAsync); 

      return Task.CompletedTask; 
     } 
     public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result) 
     { 
      var reply = context.MakeMessage(); 

      reply.AttachmentLayout = AttachmentLayoutTypes.Carousel; 
      reply.Attachments = GetCardsAttachments(); 

      await context.PostAsync(reply); 

      context.Wait(this.MessageReceivedAsync); 
     } 

     private static IList<Attachment> GetCardsAttachments() 
     { 
      return new List<Attachment>() 
      { 
       GetHeroCard(
        "Add a webpage", 
        "", 
        "", 
        new CardImage(url: "https://cdn.dribbble.com/users/22691/screenshots/1958250/attachments/340010/Button_800x600.gif?sz=328"), 
        new CardAction(ActionTypes.ImBack, "Add a webpage", value: "Add a webpage")), 
       GetHeroCard(
        "delete a webpage", 
        "", 
        "", 
        new CardImage(url: "https://cdn.dribbble.com/users/22691/screenshots/1958250/attachments/340010/Button_800x600.gif?sz=328"), 
        new CardAction(ActionTypes.ImBack, "delete a webpage", value: "delete a webpage")), 
       GetHeroCard(
        "Display help", 
        "", 
        "", 
        new CardImage(url: "https://cdn.dribbble.com/users/22691/screenshots/1958250/attachments/340010/Button_800x600.gif?sz=328"), 
        new CardAction(ActionTypes.ImBack, "Display help", value: "Display help")), 
       GetHeroCard(
        "etc", 
        "", 
        "", 
        new CardImage(url: "https://cdn.dribbble.com/users/22691/screenshots/1958250/attachments/340010/Button_800x600.gif?sz=328"), 
        new CardAction(ActionTypes.ImBack, "etc", value: "etc")), 

      }; 
     } 

     private static Attachment GetHeroCard(string title, string subtitle, string text, CardImage cardImage, CardAction cardAction) 
     { 
      var heroCard = new HeroCard 
      { 
       Title = title, 
       Subtitle = subtitle, 
       Text = text, 
       Images = new List<CardImage>() { cardImage }, 
       Buttons = new List<CardAction>() { cardAction }, 
      }; 

      return heroCard.ToAttachment(); 
     } 

これがあなたの懸念を解決するのに役立つことを願っています。

以下は参照用のショットです。 enter image description here

0

ボタンを使用すると、タイトルを表示テキストに設定し、値を投稿する必要があるものに設定できます。それから、線の上に何かを言うボタンの上に小さなテキストを置くことができます。「試したいボタンをクリックしてください」。

私は私のボタンテキストを短くするために、メッセンジャー内このアプローチを使用していますが、豊かな記述に設定ボタンの「ペイロード」(または値)。次に、値はユーザーに表示されませんが、メッセージアクティビティのチャネルデータ部分内のフレームワークによって受信されます。

関連する問題