ボットから送信されたメッセージを更新および削除する

重要

このセクションのコード サンプルは、バージョン 4.6 以降のバージョンの Bot Framework SDK に基づいて作成されます。 以前のバージョンのドキュメントを探している場合は、ドキュメントの Resources フォルダーの 「bots - v3 SDK」 セクションを参照してください。

ボットは、メッセージをデータの静的スナップショットとして保持する代わりに、メッセージを送信した後に動的に更新できます。 メッセージは、Bot Framework の DeleteActivity メソッドを使用して削除することもできます。

メッセージを更新する

ポーリングの更新、ボタンを押した後の使用可能なアクションの変更、その他の非同期状態の変更などのシナリオでは、動的メッセージ更新を使用できます。

新しいメッセージが元の種類と一致する必要はありません。 たとえば、元のメッセージに添付ファイルが含まれている場合、新しいメッセージは単純なテキスト メッセージにすることができます。

既存のメッセージを更新するには、既存のアクティビティ ID を持つ新しい Activity オブジェクトを TurnContext クラスの UpdateActivityAsync メソッドに渡します。 詳細については、TurnContextClass を参照してください。

var newActivity = MessageFactory.Text("The new text for the activity");
newActivity.Id = activityId;
await turnContext.UpdateActivityAsync(newActivity, cancellationToken);

メッセージを更新したので、受信アクティビティのボタン選択時に既存のカードを更新します。

カードを更新する

ボタン選択時に既存のカードを更新するには、着信アクティビティの ReplyToIdを使用できます。

ボタン選択で既存のカードを更新するには、更新されたカードとアクティビティ ID として ReplyToId を含む新しい Activity オブジェクトを TurnContext クラスの UpdateActivityAsync メソッドに渡します。 TurnContextClass を参照してください。

var activity = MessageFactory.Attachment(card.ToAttachment());
activity.Id = turnContext.Activity.ReplyToId;
await turnContext.UpdateActivityAsync(activity, cancellationToken);

カードを更新したので、Bot Framework を使用してメッセージを削除できます。

メッセージを削除する

Bot Framework では、すべてのメッセージに一意のアクティビティ識別子があります。 メッセージは、Bot Framework の DeleteActivity メソッドを使用して削除できます。

メッセージを削除するには、そのアクティビティの ID を TurnContext クラスの DeleteActivityAsync メソッドに渡します。 詳細については、「TurnContext.DeleteActivityAsync メソッド」を参照してください。

foreach (var activityId in _list)
{
    await turnContext.DeleteActivityAsync(activityId, cancellationToken);
}

コード サンプル

次のコード サンプルは、会話の基本を示しています。

サンプルの名前 説明 .NET Node.js Python
Teams での会話の基本 メッセージの更新や削除など、Teams での会話の基本を示します。 表示 表示 表示

次の手順