Я использую botframework (шаблон корпоративного бота) и LUIS.ai:
Моя проблема в том, что когда я заполняю настраиваемую адаптивную карточку (у нее три поля для ввода текста) и нажимаю «Отправить», я получаю следующее сообщение: «Извините, я не могу с этим помочь». Я вижу в эмуляторе, что кнопка отправки отправляет обратно введенные значения, но я не уверен, как я прислушиваюсь к действию кнопки. Я думаю, что мне нужно слушать, когда вызывается идентификатор действия, но я Я не совсем уверен, как это сделать.
Ниже приведен код, вызывающий диалог:
public static IMessageActivity SendTicketFormCard(ITurnContext turnContext, dynamic data)
{
var response = turnContext.Activity.CreateReply();
var introcard = File.ReadAllText(@".\dialogs\main\resources\Ticket_Fields.json");
response.Attachments = new List<Attachment>();
response.Attachments.Add(new Attachment()
{
ContentType = "application/vnd.microsoft.card.adaptive",
Content = JsonConvert.DeserializeObject(introcard),
});
return response;
}
Где диалог JSON выглядит так:
{
"type": "AdaptiveCard",
"body": [
{
"type": "TextBlock",
"horizontalAlignment": "Center",
"size": "Medium",
"weight": "Bolder",
"color": "Dark",
"text": "Search Ticket"
},
{
"type": "TextBlock",
"id": "94358428-5ef2-43a5-9056-d3cac1abfabd",
"text": "Ticket ID:",
"maxLines": 1
},
{
"type": "Input.Text",
"id": "68e1e180-4cdc-4ad6-bb8f-743554f1f58b",
"placeholder": "Ticket ID (required)",
"maxLength": 10
},
{
"type": "TextBlock",
"id": "2da1df9d-7f61-4e5c-9ff9-7aba2c5b306b",
"text": "Summary:",
"maxLines": 1
},
{
"type": "Input.Text",
"id": "403979a3-ccba-4baa-a885-2abca754cc69",
"placeholder": "Summary (optional)",
"maxLength": 250,
"isMultiline": true
},
{
"type": "TextBlock",
"id": "a25464c7-07ea-4270-995f-5e57b783b52d",
"text": "Status:",
"maxLines": 1
},
{
"type": "Input.Text",
"id": "7794d725-feb5-4516-9786-d18684892106",
"placeholder": "Status (optional)",
"maxLength": 30
}
],
"actions": [
{
"type": "Action.Submit",
"id": "783fe2e4-4056-449e-8cc6-5dc9c406222a",
"title": "Search"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.0"
}
Размещение карты отличается от вызова диалога. Карты - это не диалоги. docs.microsoft.com/en-us/azure/bot-service/…
@Colby - Тебе все еще нужна помощь?





Сообщение "Извините, я не могу с этим помочь". является ответом на намерение LUIS "None" в классе MainDialog корпоративного шаблона. Вы можете найти сообщение в MainStrings.resx.
Действие отправки адаптивной карты отправляет боту сообщение без текста, а затем LUIS пытается интерпретировать намерение этого сообщения, используя текст сообщения, но текста нет. Отправленные данные будут содержаться в свойстве Value действия. Чтобы прочитать данные из свойства Value, вам необходимо использовать идентификаторы полей ввода карты в качестве ключей.
private const string TICKETFIELD = "68e1e180-4cdc-4ad6-bb8f-743554f1f58b";
private const string SUMMARYFIELD = "403979a3-ccba-4baa-a885-2abca754cc69";
private const string STATUSFIELD = "7794d725-feb5-4516-9786-d18684892106";
Вы захотите проверить входящие сообщения, чтобы увидеть, нет ли в них текста, а затем ответить так, как будто это возможное действие отправки. Вы можете сделать это, когда LUIS уже определил намерение как «Нет», но вы также можете выполнить проверку еще до того, как сообщение будет отправлено в LUIS. Перейдите к методу RouteAsync MainDialog и оберните весь существующий код в блок else, а затем вы можете поместить код, который отвечает на действие отправки, в свой блок if:
protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken))
{
if (string.IsNullOrEmpty(activity.Text))
{
dynamic value = dc.Context.Activity.Value;
await turnContext.SendActivityAsync($"Ticket = {value[TICKETFIELD]}, Summary = {value[SUMMARYFIELD]}, Status = {value[STATUSFIELD]}");
}
else
{
// All the code that was already there
}
}
Когда вы когда-либо нажимаете кнопку «Отправить» в адаптивной карточке, канал отправляет обратно токен «postback»: «true» в объекте данных канала. Наряду с этим данные, настроенные для кнопки отправки, отправляются в объект Value в файле json. Вам необходимо проанализировать это значение, чтобы получить сведения, необходимые для дальнейших действий. Я опубликовал сообщение об этом. Пожалуйста, проверьте это на Реактивные адаптивные карты BotFramework: как читать данные о кнопках действий в адаптивных картах
Я не уверен в решении. Все, что я могу сделать, это сослаться на статью это