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

Is there a way to display choices through prompt options as still buttons even though few choices have larger length text in MSBOT via C# SDKV4?

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

在这个对话框中 class 使用提示选项以按钮的形式显示了几个选项。通常,如果选择列表很简单,如 Option1、Option2 等等直到 Option6,按钮将正确显示。 但是如果我的选择有更长的文本,比如下面代码中提供的值:

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: "),
                            });

执行代码时,选择列表中提供的值不会呈现为按钮,而是呈现为带编号的带项目符号的文本选项列表,如下所示:

  1. 显示我的虚拟机
  2. 显示虚拟机状态
  3. 启动虚拟机
  4. 停止虚拟机
  5. 请求Model/License
  6. 请求新 VM
  7. 扩展我现有的虚拟机
  8. 注销
  9. 帮助

现在,如果我删除单词之间的 spaces 即如果我 modify/rewrite 选项之一作为唯一的 "RequestModel/License" (没有 spaces)就像明智的如果为所有超过 2-3 个单词的文本删除 space,现在在执行代码时,选项将按预期显示为按钮。

所以,来到我的query/issue: 我怎样才能仍然使用上面代码中所示的提示选项中的选项(具有更长的字符串值)并仍然显示按钮?

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

提前致谢

此致

ChaitanyaNG

如果您询问是否有强制显示按钮的方法,那很可能是不可能的。长度因频道而异(例如,您可能会发现网络聊天中的按钮在 Teams 中呈现为编号列表)并且无法更改。在检查 class 时,我看到了一些据称会覆盖此行为的东西,但 none 它起作用了。

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

{
   value: 'Request Model/License',
   action: {
      type: 'imBack',
      title: 'RequestModel/License',
      value: 'Request Model/License'
   },
   synonyms: ['Model','License']
}

显然您不必使用同义词,但是当有人可能手动键入类似的内容而不是使用按钮时,这也会有所帮助。对于它的价值,我喜欢缩写为 "Req Model/License" 而不是 运行,但这是您的个人偏好。

您似乎想在对 PromptOptions to ListStyle.SuggestedAction 的调用中设置 Style 参数。