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

重要

このセクションのコード サンプルは、バージョン 4.6 以降のバージョンの Bot Framework SDK に基づいています。 以前のバージョンのドキュメントをお探しの場合は、ドキュメントのレガシ SDK フォルダーの ボット - v3 SDK セクションを参照してください。

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

メッセージを更新する

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

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

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

// Send initial message
var response = await turnContext.SendActivityAsync(MessageFactory.Attachment(card.ToAttachment()), cancellationToken);
var activityId = response.Id; // Fetch activity id.

// MessageFactory.Text(): Specifies the type of text data in a message attachment.
var newActivity = MessageFactory.Text("The new text for the activity");
newActivity.Id = activityId;

// UpdateActivityAsync(): A method that can participate in update activity events for the current turn.
await turnContext.UpdateActivityAsync(newActivity, cancellationToken);

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

カードを更新する

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

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

// Returns a message activity that contains an attachment.
var activity = MessageFactory.Attachment(card.ToAttachment());
activity.Id = turnContext.Activity.ReplyToId;

// A method that can participate in update activity events for the current turn.
await turnContext.UpdateActivityAsync(activity, cancellationToken);

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

メッセージを削除する

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

メッセージを削除するには、そのアクティビティの ID を TurnContext クラスの DeleteActivityAsync メソッドに渡します。

foreach (var activityId in _list)
{
    // When overridden in a derived class, deletes an existing activity in the conversation.
    await turnContext.DeleteActivityAsync(activityId, cancellationToken);
}

コード サンプル

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

サンプルの名前 説明 .NET Node.js Python マニフェスト
Teams での会話の基本 このサンプルでは、ボット フレームワーク v4 で使用できるさまざまなボット会話イベントを個人用とチームのスコープに使用する方法を示します。 表示 表示 表示 表示

次の手順

関連項目