У меня есть бот, который работает с использованием встроенных каналов вместе с DirectLine для пользовательских каналов.
В канале DirectLine я получаю ответные действия и пытаюсь извлечь информацию из Attachments
, чтобы преобразовать ее в настраиваемый формат канала.
Анализируя действия, я проверяю наличие вложения и обнаруживаю, что оно находится на "ContentType" = "application/vnd.microsoft.card.hero"
. Затем я пытаюсь преобразовать вложение Content
как HeroCard
. Это не работает в канале DirectLine. В рамках моих модульных тестов встроенных каналов я могу это сделать и правильно проверить все свои данные.
Разве это не ожидаемое поведение? Как я могу получить содержимое вложения в канале DirectLine?
var type = attachment.ContentType;
if (type == "application/vnd.microsoft.card.hero")
{
var temp = attachment.Content;
var heroCard = temp as HeroCard; // This yields a 'null'
...
}
Примечание: если я заменю строку «var heroCard = temp as HeroCard;» с участием
var temp = JsonConvert.SerializeObject(attachment.Content);
var heroCard = JsonConvert.DeserializeObject<HeroCard>(temp);
Затем у меня есть карта героя, которую я могу разобрать. Но это кажется очень неэффективным.