chat.received、chat.sent、および関連する X Chat アクティビティを、ペイロード内の暗号文とともに配信します。Chat XDK で復号します。
プライベート X Chat イベントタイプは、監視するユーザーに対する認可が必要です。暗号化された X Chat ファイル添付は、Post API の
expansions=attachments.media_keys / media.fields=variants ではなく、media_hash_key と X Chat メディアダウンロードを使用します。
イベントタイプ
1. 配信方法を選択する
アクティビティストリーム(ボットには多くの場合最もシンプル): アプリの Bearer トークンでGET /2/activity/stream(オプションの backfill_minutes、start_time、end_time は OpenAPI ごと)。クライアント側で chat.received / chat.sent をフィルタリングします。
アクティビティサブスクリプション: 以下で永続的なサブスクリプションを管理します:
POST /2/activity/subscriptions— 作成GET /2/activity/subscriptions— 一覧(ページネーション)PUT /2/activity/subscriptions/{subscription_id}— 更新DELETE /2/activity/subscriptions/{subscription_id}またはDELETE /2/activity/subscriptions?ids=— 削除
dm.read などチャットイベントに関連するスコープを持つ OAuth 2.0 ユーザーコンテキスト)が必要です。
Webhook: HTTPS エンドポイントでイベントを終端する場合、POST /2/webhooks で Webhook を登録し、CRC チャレンジをパスし、その後 POST /2/activity/subscriptions で webhook_id を参照してアクティビティサブスクリプションを作成します(OpenAPI の Webhooks および Activity オペレーションを参照)。Python/TypeScript XDK は、SDK のバージョンに含まれる場合、Webhook とアクティビティのヘルパーを公開することがあります。
- Python
- TypeScript
chat.sent にもサブスクライブしてください。他の言語: 同じ /2/activity/* HTTPS ルートを直接呼び出します(サブスクリプションの作成にはユーザーコンテキストトークン、ストリームにはアプリの Bearer トークン)。
2. CRC(Webhook のみ)
Webhook を使用する場合、コンシューマシークレットを使ったトークンの HMAC-SHA256 を、Webhook 製品が期待する JSON 形式(通常はsha256=<base64>)で Challenge-Response Checks(GET crc_token)に応答してください。
3. Chat XDK で復号する
ライブフィールド:payload.encoded_event、オプションの payload.conversation_key_change_event。event_uuid で重複を排除します。
JavaScript は camelCase のイベントタイプ(message)を使用します;他のバインディングは "Message" と snake_case フィールドを使用します。
- Python
- TypeScript
- Rust
- Go
- C#
- Java
GET /2/chat/conversations/{id}/events + decrypt_events — Getting Started を参照。
ペイロードの形(ライブ)
プラクティス
- プラットフォームの要件に従って Webhook 署名を検証する
- 会話鍵と送信者の公開鍵をキャッシュする
- 依存メッセージを復号する前に鍵変更 blob を適用する
event_uuidで重複を排除する