ボットから送信されたメッセージを更新および削除する
[アーティクル]
06/29/2022
1 人の共同作成者
この記事の内容
重要
このセクションのコード サンプルは、バージョン 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);
既存のメッセージを更新するには、既存のアクティビティ ID を持つ新しい Activity オブジェクトを TurnContext オブジェクトの updateActivity メソッドに渡します。 詳細については、updateActivity を参照してください。
const newActivity = MessageFactory.text('The new text for the activity');
newActivity.id = activityId;
await turnContext.updateActivity(newActivity);
既存のメッセージを更新するには、既存のアクティビティ ID を持つ新しい Activity オブジェクトを TurnContext クラスの update_activity メソッドに渡します。 TurnContextClass を参照してください。
new_activity = MessageFactory.text("The new text for the activity")
new_activity.id = activity_id
update_result = await context.update_activity(new_activity)
注意
任意の Web プログラミング技術で Teams アプリを開発し、Bot Framework REST API を直接呼び出すことができますが、すべてのトークン処理を自分で実行する必要があります。 これを行うには、API 要求で [認証] セキュリティ手順を実装する必要があります。
会話内の既存のアクティビティを更新するには、リクエスト エンドポイントに conversationId と activityId を含めます。 このシナリオを完了するには、元の POST 呼び出しによって返されたアクティビティ ID をキャッシュする必要があります。
PUT /v3/conversations/{conversationId}/activities/{activityId}
メッセージを更新したので、受信アクティビティのボタン選択時に既存のカードを更新します。
カードを更新する
ボタン選択時に既存のカードを更新するには、着信アクティビティの ReplyToIdを使用できます。
ボタン選択で既存のカードを更新するには、更新されたカードとアクティビティ ID として ReplyToId を含む新しい Activity オブジェクトを TurnContext クラスの UpdateActivityAsync メソッドに渡します。 TurnContextClass を参照してください。
var activity = MessageFactory.Attachment(card.ToAttachment());
activity.Id = turnContext.Activity.ReplyToId;
await turnContext.UpdateActivityAsync(activity, cancellationToken);
ボタン選択で既存のカードを更新するには、更新されたカードとアクティビティ ID として replyToId を含む新しい Activity オブジェクトを TurnContext オブジェクトの updateActivity メソッドに渡します。 updateActivity に関する記事を参照してください。
const message = MessageFactory.attachment(card);
message.id = context.activity.replyToId;
await context.updateActivity(message);
ボタン クリックで既存のカードを更新するには、更新されたカードとアクティビティ ID として reply_to_id を含む新しい Activity オブジェクトを TurnContext クラスの update_activity メソッドに渡します。 TurnContextClass を参照してください。
updated_activity = MessageFactory.attachment(CardFactory.hero_card(card))
updated_activity.id = turn_context.activity.reply_to_id
await turn_context.update_activity(updated_activity)
注意
任意の Web プログラミング技術で Teams アプリを開発し、Bot Framework REST API を直接呼び出すことができますが、すべてのトークン処理を自分で実行する必要があります。 これを行うには、API 要求で [認証] セキュリティ手順を実装する必要があります。
会話内の既存のアクティビティを更新するには、リクエスト エンドポイントに conversationId と activityId を含めます。 このシナリオを完了するには、元の POST 呼び出しによって返されたアクティビティ ID をキャッシュする必要があります。
PUT /v3/conversations/{conversationId}/activities/{activityId}
カードを更新したので、Bot Framework を使用してメッセージを削除できます。
メッセージを削除する
Bot Framework では、すべてのメッセージに一意のアクティビティ識別子があります。 メッセージは、Bot Framework の DeleteActivity メソッドを使用して削除できます。
メッセージを削除するには、そのアクティビティの ID を TurnContext クラスの DeleteActivityAsync メソッドに渡します。 詳細については、「TurnContext.DeleteActivityAsync メソッド 」を参照してください。
foreach (var activityId in _list)
{
await turnContext.DeleteActivityAsync(activityId, cancellationToken);
}
メッセージを削除するには、そのアクティビティの ID を TurnContext オブジェクトの deleteActivity メソッドに渡します。 詳細については、deleteActivity を参照してください。
for (let i = 0; i < activityIds.length; i++) {
await turnContext.deleteActivity(activityIds[i]);
}
そのメッセージを削除するには、そのアクティビティの ID を TurnContext オブジェクトの delete_activity メソッドに渡します。 詳細については、activity-update-and-delete を参照してください。
for each activity_id in _list:
await TurnContext.delete_activity(activity_id)
会話内の既存のアクティビティを削除するには、リクエスト エンドポイントに conversationId と activityId を含めます。
DELETE /v3/conversations/{conversationId}/activities/{activityId}
要求および応答
[説明]
該当なし
操作の結果を示す HTTP 状態コード。 応答の本文には何も指定されません。
コード サンプル
次のコード サンプルは、会話の基本を示しています。
サンプルの名前
説明
.NET
Node.js
Python
Teams での会話の基本
メッセージの更新や削除など、Teams での会話の基本を示します。
表示
表示
表示
次の手順