澄清GenerateMessages()方法的用法

时间:2017-08-08 15:45:42

标签: c# botframework

使用Prompter方法在FormFlow中发送自定义卡片。查看代码时发现有一个GenerateMessages()方法,对于下面的代码总是返回false。有人可以澄清为什么/何时使用这种方法?

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 个答案:

答案 0 :(得分:0)

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

除非有:

,否则似乎会返回false
  1. 按钮或说明中的图像AND
  2. “提示”中的一个或多个Environment.NewLine字符
  3. 我没有亲自使用过它,但是在使用FormFlow定义多行提示消息时,这种方法似乎很有用。由于并非所有渠道都支持markdown,因此此方法提供了一些解决方法:启用多行消息。