У нас есть бот Teams, который отправляет сообщения в MS Teams. Первым действием в новом разговоре всегда является адаптивная карта, и время от времени мы обновляем ее новой картой. Это работало нормально, пока я не создал новую Команду с этим ботом.
Обновление, которое мы пробуем с UpdateActivityAsyn c, возвращает NotFound.
После некоторого устранения неполадок я заметил следующее:
- У новой команды другое имя: 19: ... @ thread.tacv2, а не 19: ... @ thread.skype.
- Когда я использую старую команду, он работает, как и ожидалось.
- Когда я обновляю упражнение только с текстом (поэтому адаптивная карта не является вложением), оно всегда будет обновляться, как ожидается.
- После обновления с текстом мы можем обновить с помощью адаптивной карты ОДИН РАЗ. После одного обновления с адаптивной картой любые последующие обновления с адаптивными картами будут возвращать NotFound.
- Итак, в качестве обходного пути я сначала сначала обновляю текст, а сразу после этого отправляю обновление с картой. Это плохой интерфейс (мерцание), но пока он работает.
Мы используем старую версию фреймворка бота 3, которая, как я знаю, больше не поддерживается, но, насколько я могу найти, она все еще должен работать (нет планов прекратить работу). Также с учетом вышеупомянутых пунктов (в частности, пункт 4), я ожидаю, что он использует те же вызовы под капотом.
Таким образом, это работает для старых команд, но не для команды с @ thread.tacv2
await connector.Conversations.UpdateActivityAsync(
teamsConversationId,
activityId,
(Activity)messageWithCard);
И для команд с @thread.tacv2
теперь мы должны использовать это
var messageWithText = Activity.CreateMessageActivity();
messageWithText.ChannelId = teamsConversationId;
messageWithText.Id = activityId;
messageWithText.Type = ActivityTypes.Message;
messageWithText.Text = "Updated";
await connector.Conversations.UpdateActivityAsync(
teamsConversationId,
activityId,
(Activity)messageWithText);
await connector.Conversations.UpdateActivityAsync(
teamsConversationId,
activityId,
(Activity)messageWithCard);
Исключение не предоставляет слишком много деталей:
Операция вернула недопустимый статус код «Не найден»
Разговор не найден.
Кто-нибудь знает, как избежать этого изменения между командами и разрешить обновления активности с карточками?
Кроме того (и это гораздо менее важно, но я думаю, что это полезно добавить), я заметил, что иногда (я уже дважды видел это) команды, кажется, не могут отрендерить адаптивную карту и вместо этого отображают URIObject XML, содержащий ошибка: cards.unsupported. Однако, если я выйду из клиента и перезапущу его, он будет работать нормально ... Я никогда не видел этого до сих пор в старых каналах.
Команда клиента версии 1.3.00.362 (64-разрядная версия) (без режима разработки) ). Обычный Azure арендатор (без предварительного просмотра / пробного использования)
РЕДАКТИРОВАТЬ 11/05/2020 Кажется, что это также происходит в командах со «старым» именем (@ thread.skype). Таким образом, '@ thread.tacv2' кажется не связанным.