2017-12-07 4 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. 등을 삭제 웹 페이지 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

버튼을 사용하여 제목을 표시 텍스트로 설정하고 다시 게시해야하는 값으로 설정할 수 있습니다. 그런 다음, 줄을 따라 무언가를 말하는 버튼 위에 텍스트의 작은 부분이있을 수 있습니다. "시도 할 버튼 중 하나를 클릭하십시오".

메신저 내에서이 방법을 사용하여 버튼 텍스트를 짧게하지만 버튼의 "페이로드"(또는 값)를 더 풍부한 설명으로 설정합니다. 다음은 값이 사용자에게 표시되지 않지만 메시지 활동의 채널 데이터 부분 내의 프레임 워크가 값을 수신한다는 것입니다.