MS Teamsにメッセージを投稿するTeamsボットがあります。新しい会話の最初のアクティビティは常にアダプティブカードであり、時々、新しいカードで更新します。これは、このボットで新しいチームを作成するまで問題ありませんでした。
UpdateActivityAsyncで実行しようとしている更新は、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);
例外はあまり多くの詳細を提供しません:
操作が無効なステータスコード「NotFound」を返しました
会話が見つかりません。
チーム間のこの変更を回避し、カードによるアクティビティの更新を許可する方法を知っている人はいますか?
また(これはそれほど重要ではありませんが、追加すると便利だと思います)時々(2回見たことがあります)チームがアダプティブカードをレンダリングできず、代わりにURIObject XMLを表示しているように見えました。 。ただし、クライアントを終了して再起動すると、正常にレンダリングされます...これまでのところ、これまでのチャネルでこれまで見たことがない。
Teamsクライアントバージョン1.3.00.362(64ビット)(開発モードなし)。通常のAzureテナント(プレビュー/試用なし)
編集11/05/2020これは、「古い」名前(@ thread.skype)を持つチームでも発生するようです。したがって、「@ thread.tacv2」は関係がないようです。
指定された正確なタイムスタンプでログを見つけることはできませんでしたが、それらの日付の会話IDのログは見つかりましたが、UTCで同じ分と秒の404が表示されました。提供されたタイムスタンプは異なるタイムゾーンで表されていると想定しています。
ログから、次のパターンが表示されます。
Bot sends PUT activity with card - 404 returned
Bot sends PUT activity with text - 200 returned
Bot sends PUT activity with card - 200 returned
これは、元の投稿で共有したのと同じパターンのようです。
新しいメッセージが返信チェーンに送信された後、ボットが既存のカードメッセージをまったく同じカードで更新しようとすると、PUTSで404が返される原因となるシナリオがあります。
これらはレポのステップです:
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
ボットがこれに遭遇している可能性はありますか?ボットが最初のPUTリクエストで送信しているカードが、元のメッセージにすでにあるカードと同じかどうかを確認する方法はありますか