Nous avons un bot Teams qui publie des messages dans MS Teams. La première activité d'une nouvelle conversation est toujours une carte adaptative et de temps en temps, nous la mettons à jour avec une nouvelle carte. Cela fonctionnait bien jusqu'à ce que je forme une nouvelle équipe avec ce bot.
La mise à jour que nous essayons avec UpdateActivityAsync, renvoie NotFound.
Après quelques dépannage, j'ai remarqué ce qui suit:
Nous utilisons l'ancienne version 3 du bot framework, qui, je le sais, n'est plus maintenue, mais pour autant que je sache, cela devrait toujours fonctionner (pas de projet d'interruption de fonctionnement). Compte tenu également des points ci-dessus (en particulier le point 4), je suppose qu'il utilise les mêmes appels sous le capot.
Donc, cela fonctionne pour les équipes plus anciennes, mais pas pour une équipe avec @ thread.tacv2
await connector.Conversations.UpdateActivityAsync(
teamsConversationId,
activityId,
(Activity)messageWithCard);
Et pour les équipes avec @thread.tacv2
nous devons maintenant utiliser ceci
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);
L'exception ne fournit pas trop de détails:
L'opération a renvoyé un code d'état invalide 'NotFound'
Conversation introuvable.
Quelqu'un sait-il comment éviter ce changement entre les équipes et autoriser les mises à jour d'activité avec des cartes?
Aussi (et c'est beaucoup moins important, mais je pense qu'il est utile d'ajouter) j'ai remarqué que parfois (je l'ai vu deux fois maintenant) Teams semble incapable de rendre la carte adaptative et affiche à la place le XML URIObject, contenant l'erreur: cards.unsupported . Cependant, si je quitte le client et le redémarre, il rend bien ... Je n'ai jamais vu cela jusqu'à présent dans les anciens canaux.
Client Teams version 1.3.00.362 (64 bits) (pas de mode de développement). Locataire Azure normal (pas d'aperçu/d'essai)
EDIT 11/05/2020 Il semble que cela se produise également sur les équipes avec le "vieux" nom (@ thread.skype). Ainsi, le '@ thread.tacv2' ne semble pas lié.
Nous n'avons pas pu trouver les journaux aux horodatages exacts que vous avez fournis, mais nous avons trouvé des journaux pour les identifiants de conversation à ces dates et voir les 404 avec les mêmes minutes et secondes en UTC. Nous supposons que les horodatages fournis sont représentés dans un fuseau horaire différent.
À partir des journaux, nous voyons le modèle suivant:
Bot sends PUT activity with card - 404 returned
Bot sends PUT activity with text - 200 returned
Bot sends PUT activity with card - 200 returned
Cela ressemble au même modèle que vous avez partagé dans votre message d'origine.
Il existe un scénario qui entraîne le retour des 404 sur PUTS chaque fois que le bot tente de mettre à jour un message de carte existant avec exactement la même carte après que de nouveaux messages ont été envoyés à une chaîne de réponse.
Voici les étapes du repo:
Bot send card to reply chain (can be root message or reply message)
Any user sends a message to the chain
Bot attempts to update message with the exact same card
Est-il possible que votre bot rencontre cela? Existe-t-il un moyen de vérifier si la carte que votre bot envoie dans la première demande PUT est la même carte qui se trouve déjà dans le message d'origine