Есть ли способ отобразить варианты с помощью опций приглашения в виде кнопок, даже если немногие варианты имеют текст большей длины в MSBOT через C# SDKV4? - PullRequest
1 голос
/ 19 февраля 2020

Я создаю чат-бот с помощью Microsoft Bot Framework, используя SDKV4 в C#. BOT имеет несколько диалогов водопада. Канал является каналом веб-чата.

В этом одном диалоговом классе показано несколько вариантов выбора в виде кнопок с использованием параметров подсказки. Обычно, если список выбора прост, например, 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. Запрос модели / лицензии
  6. Запрос новой виртуальной машины
  7. Расширение моей существующей виртуальной машины
  8. Выход из системы
  9. Помощь

Теперь, если я удаляю пробелы между словами, т.е. если я изменяю / перезаписываю одну из опций как только «RequestModel / License» (без пробелов), как мудро, если это удаляет пробел для всего текста, который имеет более 2-3 словами, при выполнении кода теперь варианты выбора будут отображаться в виде кнопок, как и ожидалось.

Итак, что касается моего вопроса / вопроса: как я могу по-прежнему использовать варианты в опциях подсказок, как показано в коде выше (с более длинной строкой) ценности) и до сих пор делают но тонн, которые будут отображаться?

Обратите внимание, что я немного новичок в кодировании, поэтому я бы смиренно попросил предоставить подробные шаги, если такое поведение достижимо.

Заранее спасибо

С уважением

ChaitanyaNG

1 Ответ

0 голосов
/ 19 февраля 2020

Если вы спрашиваете, есть ли способ заставить кнопки отображаться, это, скорее всего, невозможно. Длина зависит от канала (например, кнопки в веб-чате могут отображаться как нумерованный список в командах) и не могут быть изменены. При изучении класса я увидел некоторые вещи, которые предположительно могли бы переопределить это поведение, но ничего из этого не сработало.

Если вы просто хотите отправить значение, отличное от отображаемого на кнопке, вы можете сделать это, добавив атрибут действия на выбор. 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» вместо того, чтобы использовать слова вместе, но это ваше личное предпочтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...