Skip to main content
X は chat.receivedchat.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_minutesstart_timeend_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= — 削除
リクエストボディと必要なスコープは、各ルートの OpenAPI オペレーションで定義されています。X Activity API(XAA)サブスクリプションの作成には、監視対象ユーザーに対するユーザーコンテキスト認可dm.read などチャットイベントに関連するスコープを持つ OAuth 2.0 ユーザーコンテキスト)が必要です。 Webhook: HTTPS エンドポイントでイベントを終端する場合、POST /2/webhooks で Webhook を登録し、CRC チャレンジをパスし、その後 POST /2/activity/subscriptionswebhook_id を参照してアクティビティサブスクリプションを作成します(OpenAPI の Webhooks および Activity オペレーションを参照)。Python/TypeScript XDK は、SDK のバージョンに含まれる場合、Webhook とアクティビティのヘルパーを公開することがあります。
送信コピーが必要な場合は 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_eventevent_uuid で重複を排除します。 JavaScript は camelCase のイベントタイプ(message)を使用します;他のバインディングは "Message" と snake_case フィールドを使用します。
履歴: GET /2/chat/conversations/{id}/events + decrypt_eventsGetting Started を参照。

ペイロードの形(ライブ)


プラクティス

  • プラットフォームの要件に従って Webhook 署名を検証する
  • 会話鍵と送信者の公開鍵をキャッシュする
  • 依存メッセージを復号する前に鍵変更 blob を適用する
  • event_uuid で重複を排除する