是否有一种方法可以通过提示选项将选项显示为静态按钮,即使很少有选项通过C#SDKV4在MSBOT中具有更大长度的文本?

是否有一种方法可以通过提示选项将选项显示为静态按钮,即使很少有选项通过C#SDKV4在MSBOT中具有更大长度的文本?,c#,botframework,chatbot,C#,Botframework,Chatbot,我正在使用C#中的SDKV4使用microsoft Bot框架创建聊天机器人。机器人有多个瀑布对话框。该频道是网络聊天频道 在这个对话框中,类以使用提示选项的按钮的形式显示了一些选项。通常,如果选项列表很简单,如选项1、选项2等,直到选项6,按钮将正确显示。 但是,如果我有一些选择,其中文本长度更大,如以下代码中提供的值: return await stepContext.PromptAsync( "choicePrompt",

我正在使用C#中的SDKV4使用microsoft Bot框架创建聊天机器人。机器人有多个瀑布对话框。该频道是网络聊天频道

在这个对话框中,类以使用提示选项的按钮的形式显示了一些选项。通常,如果选项列表很简单,如选项1、选项2等,直到选项6,按钮将正确显示。 但是,如果我有一些选择,其中文本长度更大,如以下代码中提供的值:

return await stepContext.PromptAsync(
                            "choicePrompt",
                            new PromptOptions
                            {
                                Prompt = stepContext.Context.Activity.CreateReply("Based on the access privileges assigned to you by your admin, below are the options you can avail. Please click/choose any one from the following: "),
                                Choices = new[] { new Choice { Value = "Show My VMs" }, new Choice { Value = "Show VMs Status" }, new Choice { Value = "Start VM" }, new Choice { Value = "Stop VM" }, new Choice { Value = "Request Model/License" }, new Choice { Value = "Request For New VM" }, new Choice { Value = "Extend My Existing VM" }, new Choice { Value = "Logout" }, new Choice { Value = "Help" } }.ToList(),
                                RetryPrompt = stepContext.Context.Activity.CreateReply("Sorry, I did not understand that. Please choose any one from the options displayed below: "),
                            });
在执行代码时,选项列表中提供的值不会呈现为按钮,而是呈现为编号的项目符号文本选项列表,如下所示:

  • 显示我的虚拟机
  • 显示虚拟机状态
  • 启动虚拟机
  • 停止虚拟机
  • 申请型号/许可证
  • 请求新虚拟机
  • 扩展我现有的虚拟机
  • 注销
  • 帮助
  • 现在,如果我删除单词之间的空格,即如果我将其中一个选项修改/重写为仅“RequestModel/License”(无空格),如wise if,则删除所有超过2-3个单词的文本的空格,在执行代码时,选项将按预期显示为按钮

    那么,来谈谈我的问题: 如何仍然使用上述代码中所示的提示选项中的选项(具有更长的字符串值),并且仍然显示按钮

    请注意,我对编码有点陌生,因此如果这是可以实现的,我将谦虚地请求提供详细的步骤

    提前谢谢

    问候


    柴坦扬

    如果您询问是否有办法强制显示按钮,则可能不可能。频道的长度不同(例如,您可能会发现webchat中的按钮在团队中呈现为编号列表),因此无法更改。在检查这个类时,我看到了一些被认为会覆盖这个行为的东西,但没有一个起作用

    如果只想发送与按钮显示不同的值,可以通过向选项添加操作属性来实现。
    标题
    是按钮上显示的内容,
    是传递给stepContext.result的内容(或上下文对象的名称)。我不知道C#语法,但在nodejs中,选项定义是

    {
    值:“请求型号/许可证”,
    行动:{
    类型:“imBack”,
    标题:“请求模型/许可证”,
    值:“请求型号/许可证”
    },
    同义词:['Model','License']
    }
    

    显然,您不必使用同义词,但当有人可能手动键入类似的内容而不是使用按钮时,这也会很有帮助。值得一提的是,我喜欢缩写为“Req Model/License”,而不是将这些词放在一起,但这是您个人的偏好。

    如果您询问是否有办法强制显示按钮,这可能是不可能的。频道的长度不同(例如,您可能会发现webchat中的按钮在团队中呈现为编号列表),因此无法更改。在检查这个类时,我看到了一些被认为会覆盖这个行为的东西,但没有一个起作用

    如果只想发送与按钮显示不同的值,可以通过向选项添加操作属性来实现。
    标题
    是按钮上显示的内容,
    是传递给stepContext.result的内容(或上下文对象的名称)。我不知道C#语法,但在nodejs中,选项定义是

    {
    值:“请求型号/许可证”,
    行动:{
    类型:“imBack”,
    标题:“请求模型/许可证”,
    值:“请求型号/许可证”
    },
    同义词:['Model','License']
    }
    

    显然,您不必使用同义词,但当有人可能手动键入类似的内容而不是使用按钮时,这也会很有帮助。无论如何,我喜欢缩写为“Req模型/许可证”这是我从您的输入中了解到的:如果文本长度较大,则按钮的标签值基本上应该是一起运行的单词,这是通过屏幕中的提示选项显示的按钮的限制框架使用简短的形式来启用分隔的单词,这将减少文本长度(保留含义),从而使按钮显示,而不是列出的文本项。你能确认我的上述理解是否正确吗?我完全同意同义词的观点,我会看C#示例。谢谢。我想你明白了吗?使用title可以缩短按钮上的文本,使用value作为要传递到对话框中下一步的实际值。就我个人而言,我更喜欢使用单词缩写,而不是删除标题的空格。这是我从您的输入中了解到的:如果文本长度较大,按钮的标签值基本上应该是一起运行的单词,以便显示按钮,这是通过屏幕中的提示选项显示的按钮的限制框架使用简短的形式来启用分隔的单词,这将减少文本长度(保留含义),从而使按钮显示,而不是列出的文本项。你能确认我的上述理解是否正确吗?我完全同意同义词的观点,我会看C#示例。谢谢。我想你明白了吗?使用title可以缩短按钮上的文本,使用value作为要传递到对话框中下一步的实际值。就我个人而言,我更喜欢使用缩写词,而不是删除标题的空格。