Не получить значение Team Bot Isback - PullRequest
0 голосов
/ 03 апреля 2020

Я пытался показать пользователю некоторую информацию о нажатии кнопки моего бота.

var card = new HeroCard
{
    Title = "Welcome to Covid-19 Tracker",
    Text = "Type 'help' to see what bot can do?",
    Subtitle = "Know more about Covid-19.",
    Buttons = new List<CardAction>
    { 
        new CardAction(ActionTypes.PostBack, "How it spreads?", value: "spread"),
        new CardAction(ActionTypes.MessageBack, "Symptoms" , value: "Symptom"),
        new CardAction(ActionTypes.MessageBack, "Prevention Guidelines" , value: "Prevention")
    },
};

Когда я нажимаю на эту кнопку в эмуляторе, я могу прочитать значение свойства, но когда я развертываю его в Команды, значение приходит как {}. Я получаю значение, используя приведенный ниже код.

turnContext.Activity.Value.ToString()

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

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

  1. Добавить свойство текста в действие карты
  2. или изменить ActionTypes на ActionTypes.ImBack
0 голосов
/ 06 апреля 2020

Microsoft Teams не поддерживает postBack как отдельный тип действия из messageBack, поэтому он будет интерпретировать postBack и messageBack одинаково. Вы можете увидеть четыре свойства, которые вы можете использовать в messageBack действии здесь .

Ваше действие не работает в командах, потому что вы пытаетесь использовать строку для свойства значения , Если вы хотите продолжать использовать строку, то вы можете использовать свойство text, как предложил Sandeep, и тогда ваш бот должен будет читать текст из свойства text входящей активности вместо его свойства value. Если вы хотите продолжать использовать свойство value, тогда вам следует использовать объект вместо строки, подобной этой:

new CardAction(ActionTypes.MessageBack, "Prevention Guidelines", value: new { choice: "Prevention" })

Это заполнит свойство value входящей активности тем же объектом, чтобы вы могли получить доступ выбор пользователя так:

var selection = turnContext.Activity.Value is null ? null : (JToken.FromObject(turnContext.Activity.Value) as JObject)?["choice"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...