предлагаемые действия исчезают после клика в прямой линии - PullRequest
0 голосов
/ 09 марта 2020

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

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

  await    context.sendActivity(msg);

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

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

Ответы [ 2 ]

1 голос
/ 10 марта 2020

В соответствии с документацией здесь :

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

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

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

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

0 голосов
/ 10 марта 2020

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

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

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

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);
...