предлагаемые действия исчезают после нажатия на прямую линию

Я настроил прямой канал для Microsoft bot framework v4 с узлом js. Я предложил действия в приветственном сообщении. когда я щелкнул любое предлагаемое действие, оно исчезло в пользовательском интерфейсе, но его ответ получил боту.

var msg =  MessageFactory.suggestedActions(
        CardFactory.actions([
                        {
                            type: 'messageBack',
                            title: 'xyz',
                            value: 'xyzDialog'
                        }]),'please select choice');

  await    context.sendActivity(msg);

не могли бы вы посоветовать мне, как сделать так, чтобы конечному пользователю показалось, что щелкнули предложенное действие?

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


person Anil    schedule 09.03.2020    source источник
comment
Возможно, вы захотите использовать ActionTypes.ImBack, он записывает выбор в окно чата,   -  person Developer    schedule 17.12.2020


Ответы (2)


Согласно документации, здесь:

В отличие от кнопок, которые появляются на многофункциональных карточках (которые остаются видимыми и доступными для пользователя даже после нажатия), кнопки, которые появляются на панели предлагаемых действий, исчезают после того, как пользователь сделает выбор. Это предотвращает нажатие пользователем устаревших кнопок в разговоре и упрощает разработку ботов (поскольку вам не нужно будет учитывать этот сценарий).

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

  1. Обработайте предлагаемое действие в коде бота и отправьте ответ пользователю, поблагодарив его за ввод (и, возможно, повторив его ввод обратно ему «спасибо за выбор X»).
  2. Вместо этого используется CardAction согласно этому от образец.
  3. Используйте адаптивную карту (новый способ), доступен образец здесь вместе с подробное руководство.

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

person Matt Stannett    schedule 10.03.2020
comment
Есть возможность отключить кнопки карты. Обратите внимание на ответ, опубликованный здесь, в котором предлагается использовать состояние бота для отслеживания нажатий кнопок. - person Steven Kanberg; 16.03.2020
comment
@StevenKanberg благодарим вас за предоставленную ссылку на более подробный ответ, который лучше объясняет последнее предложение моего ответа. Обратной стороной последних двух подходов является то, что пользователи смогут многократно нажимать на эти кнопки, поэтому ваш бот должен обрабатывать несколько отправок в бэкэнд .. :-) - person Matt Stannett; 17.03.2020

Для получения информации о Предложить действие с помощью кнопки.

    var msg = MessageFactory.suggestedActions(['x', 'y', 'z'], 'please select choice?');
    await turnContext.sendActivity(msg);

также suggestedActions потребность IEnumerable<CardAction> см Метод MessageFactory.SuggestedActions код будет

var msg = MessageFactory.SuggestedActions(
       new CardAction[]
       {
           new CardAction(title: "x", type: ActionTypes.ImBack, value: "x"),
           new CardAction( title: "y", type: ActionTypes.ImBack, value: "y"),
           new CardAction(title: "z", type: ActionTypes.ImBack, value: "z")
       }, text: "please select choice");

   // Send the activity as a reply to the user.
   await context.SendActivity(msg);
person K. Ch    schedule 10.03.2020