2017-08-08 56 views
2

使用Prompter方法在FormFlow中發送自定義卡片。查看代碼看到有一個GenerateMessages()方法,對於下面的代碼總是返回false。有人可以澄清爲什麼/何時使用這種方法?澄清GenerateMessages()方法的用法

https://docs.botframework.com/en-us/csharp/builder/sdkreference/d7/d6d/class_microsoft_1_1_bot_1_1_builder_1_1_form_flow_1_1_advanced_1_1_extensions.html#abff216af1ae24937c78767e621477935

.Prompter(async (context, prompt, state, field) => { 
      var preamble = context.MakeMessage(); 
      var promptMessage = context.MakeMessage(); 

      if (prompt.GenerateMessages(preamble, promptMessage)) 
      { 
       await context.PostAsync(preamble); 
      } 
      else 
      { 
       promptMessage.Text = prompt.Prompt; 
     var attachment = Helper.GetAttachment();      
       promptMessage.Attachments.Add(attachment); 
       await context.PostAsync(promptMessage); 
      } 

回答

1

爲.GenerateMessages的代碼可以在這裏找到:https://github.com/Microsoft/BotBuilder/blob/497252e8d9949be20baa2cebaa6ce56de04461cf/CSharp/Library/Microsoft.Bot.Builder/FormFlow/IPrompt.cs#L248

除非有看來,返回False:

  1. 按鈕或在圖像說明AND
  2. 提示中的一個或多個Environment.NewLine字符

我還沒有親自使用過它,但是看起來這種方法在使用FormFlow定義多行提示消息時很有用。由於所有通道都不支持降價,因此此方法提供了一些解決方法:啓用多線消息。