Webhooks

概要

Webhooksは、カスタム統合アプリでWorkplaceのイベントをサブスクリプション登録し、リアルタイムでアップデートを受信できるようにします。Workplaceで変更が発生した場合、関連するWebhookトピックをサブスクリプション登録している各カスタム統合アプリのコールバックURLに対し、HTTPS POSTリクエストが送信されます。

こうすることにより、変更が行われた時点でアプリでその変更を把握でき、最新のコンテンツを取得するために継続的または定期的にグラフAPIリクエストを行う必要がなくなるので、アプリがより効率化されます。

WorkplaceのWebhookサポートは、グラフAPI用Webhooksと同じフレームワークによって提供されています。

Webhookトピックのサブスクリプション登録

[カスタム統合を編集]ダイアログには、Workplaceのアプリで利用可能な各Webhookトピックのタブが用意されています。

[カスタム統合を編集]ダイアログのWebhooksセクション

特定のトピックに新しいWebhookサブスクリプションを追加するには、[コールバックURL][検証トークン]を指定してから、アプリが提供する機能に必要な[サブスクリプションフィールド]を選択します。

Webhookトピックごとに1つのURLしかサブスクリプション登録できませんが、複数のトピックで同じURLを使うこともできます。

確認リクエストの処理

新しいサブスクリプションを追加したり、既存のサブスクリプションを修正したりすると、コールバックサーバーの有効性を確認するために、MetaサーバーからコールバックURLに対してGETリクエストが実行されます。

コールバックURLには、次のパラメーターを使用してクエリ文字列が追加されます。

  • hub.mode - このパラメーターでは文字列「subscribe」が渡されます
  • hub.challenge - ランダムな文字列
  • hub.verify_token - サブスクリプションを作成したときに指定したverify_token

エンドポイントは確認リクエストを受け取ると、必ず次のことを行います。

  • hub.verify_token値が、Webbook設定時に[トークンの確認]フィールドで設定した文字列と一致していることを確認します。
  • hub.challenge値で応答します。

Webhookのセキュリティ

開発者が定義したコールバックURLへのWebhook呼び出しはすべてHTTPSを介して行われ、Webhookペイロードのトランスポートレベルのセキュリティが確保されます。

追加のセキュリティを提供するために、各POSTペイロードにはHTTPヘッダーX-Hub-Signature-256が含まれており、これを使用することによって、ペイロードがMetaサーバーからのものであることを確認できます。

この動作について、詳しくはWebhookフレームワークに関するドキュメントをご覧ください。

開発者が定義したコールバックURLへのWebhook呼び出しはすべてHTTPSを介して行われ、Webhookペイロードのトランスポートレベルのセキュリティが確保されます。

API呼び出しを使用したWebhooksへのサブスクリプション登録

Webhookサブスクリプションを読み込んだり変更したりするためのAPI呼び出しには、通常のカスタム統合トークンではなく、アプリトークンを使用する必要があります。アプリトークンは、アプリID、「|」記号、app secretを連結して生成できます。

例:

データ文字列

アプリID

504221332732118

app secret

d76ab3f35f3ff5aa6ffdc8637a660d2ea7

アプリトークン

504221332732118|d76ab3f35f3ff5aa6ffdc8637a660d2ea7

現在のWebhookサブスクリプション登録を取得する(アプリトークンを使用)

GET graph.facebook.com
  /{app-id}/subscriptions
    &access_token={your_app_token}

新しいWebhookサブスクリプション登録を追加する(アプリトークンを使用)

POST graph.facebook.com
  /{app-id}/subscriptions
    ?object=page
    &fields=mention,messages
    &callback_url={your-url}
    &verify_token={your-verify-token}
    &access_token={your_app_token}

ページとアプリのサブスクリプション登録のトラブルシューティング

Webhooksを想定通りに受信できない場合は、ページとアプリの間のサブスクリプション登録が正しく設定されているかを確認してください。これは自動で設定されますが、失敗する場合もあります。例えば、Webhookの配信に長期間失敗した場合、このサブスクリプション登録は削除されることがあります。サードパーティアプリの場合は、アプリダッシュボードにアラートが表示されます。

このサブスクリプション登録を確認するには、以下のAPI呼び出しを使用します。

現在のアプリ/ページのサブスクリプション登録を取得する(ページトークンを使用)

GET graph.facebook.com
  /me/subscribed_apps?access_token={your_page_token}

このサブスクリプション登録を再作成するには、以下のAPI呼び出しを使用します。

現在のアプリ/ページのサブスクリプション登録を再作成する(ページトークンを使用)

POST graph.facebook.com
  /me/subscribed_apps?access_token={your_page_token}
	{"subscribed_fields": ["messages"...]}

Webhookのトピック

Workplaceでのアクティビティは、いくつかのトピックにグループ化されます。各トピックには、特定のトピックのイベントに対応する多数のフィールドがあります。アプリは、各トピックのWebhookの更新や、各トピック内の特定のフィールドについてサブスクリプション登録することができます。

現在、Workplaceでは次のトピックやグループのWebhooksが提供されています。

ページ

詳しくはページトピックのリファレンスドキュメントをご覧ください。

サブスクリプションフィールド動作

mention

カスタム統合ページ(ボット)がグループ内でメンションされたときにトリガーされます。

messages

カスタム統合ページ(ボット)にWork Chatでメッセージが送信されたときにトリガーされます。

message_deliveries

カスタム統合ページ(ボット)から送信されたメッセージが配信されたときにトリガーされます。

messaging_postbacks

Work Chatでポストバックボタンが押されたときにトリガーされます。

message_reads

カスタム統合ページ(ボット)からのメッセージが受信者に読まれたときにトリガーされます。

グループ

詳しくはグループトピックのリファレンスドキュメントをご覧ください。

サブスクリプションフィールド動作

posts

グループで投稿が追加、更新、削除されたときにトリガーされます。

comments

グループの投稿に新しいコメントが追加されたり、コメントが更新または削除されたりするたびにトリガーされます。

membership

グループのメンバーが変更されたときにトリガーされます。

membership_requests

ユーザーがグループのメンバーになるためのリクエストを行った時点でトリガーされます。

ユーザー

詳しくは、ユーザートピックのリファレンスドキュメントをご覧ください。

サブスクリプションフィールド動作

status

ユーザーが投稿をしたり、自分のプロフィールの近況アップデートを編集したりしたときにトリガーされます。これには、ユーザーのタイムラインの投稿も含まれます。

events

ユーザーがイベントを作成、承諾、拒否するたびにトリガーされます。

message_sends

ユーザーがWorkplace Chatメッセージを送信するたびにトリガーされます。

message_unsends

ユーザーがスレッドの全員宛てのWorkplaceチャットメッセージを削除するたびにトリガーされます。

timeline_comments

ユーザーのタイムラインの投稿にコメントがあるたびにトリガーされます。

セキュリティ

詳しくは、セキュリティトピックのリファレンスドキュメントをご覧ください。

admin_activity

管理者がWorkplaceコミュニティに追加された、またはそこから削除されたときにトリガーされるイベント

イベント動作

admin_set_to_unclaimed

管理者が管理者用パネルから、またはアカウント管理APIを介して、ユーザーのアカウント状態を未取得に設定した。

admin_force_log_out

管理者が管理者用パネルで、ユーザーをすべてのデバイスから強制的にログアウトさせた。

admin_deactivate

管理者が管理者用パネルから、またはアカウント管理APIを介して、アカウントを停止した。

admin_activate_account

管理者が管理者用パネルから、またはアカウント管理APIを介して、アカウントを有効にした。

force_password_reset

管理者が管理者用パネルで、ユーザーのパスワードを強制的にリセットした。

admin_create_account

管理者が管理者用パネルでアカウントを作成した。

compromised_credentials

コミュニティ内の一部のユーザーアカウントのWorkplaceパスワードにリスクがあると考えられるときにトリガーされるイベント。

イベント動作

found_compromised_credentials

Workplaceは不正使用された認証情報を検出した。

files

Workplaceのファイルアクティビティでトリガーされるイベント。

イベント動作

group_file_upload

ユーザーがグループにファイルをアップロードした。

group_file_download

ユーザーがグループからファイルをダウンロードした。

file_upload_malware_found

アップロードされたファイルにマルウェアが見つかった。

groups

社員がWorkplaceの会社間グループを作成、または会社間グループに参加したときにトリガーされるイベント。

イベント動作

mcg_join

コミュニティのユーザーがMCGに参加した。

mcg_create

コミュニティのユーザーがMCGを作成した。

integrations

管理者が統合のプロパティを作成または変更したときにトリガーされるイベント。

イベント動作

custom_integration_create

管理者がカスタム統合を作成した。

custom_integration_edit

管理者がカスタム統合を編集した。

custom_integration_delete

管理者がカスタム統合を削除した。

custom_integration_token_reset

管理者がカスタム統合の新しいアクセストークンを生成した。

content_app_install

ユーザーがコンテンツ統合を作成した。

content_app_uninstall

ユーザーがコンテンツ統合をアンインストールした。

invites

社員がセルフ招待経由でWorkplaceに参加したときに発生するイベント。

イベント動作

coworker_invite_sent

ユーザーが同僚をコミュニティに招待した。

self_invite_sent

ユーザーが自分用の招待メールをリクエストした。

passwords

社員がパスワードを変更したり、パスワードのリセットをリクエストしたりしたときにトリガーされるイベント。

イベント動作

password_change

パスワード再設定を実行した結果、またはアカウント設定から、ユーザーのパスワードが変更された。

password_reset_request

ユーザーのパスワード再設定フローが開始され、ユーザーのメールアドレスにコードが送信された。

password_reset_wrong_code

ユーザーが誤ったパスワードリセットリカバリーコードを入力した。

password_reset_success

ユーザーのパスワード再設定フローが正常に完了した。

sessions

社員がWorkplaceでログインまたはログアウトを実行したときにトリガーされるイベント。

イベント動作

log_in

ユーザーが、wwwまたはモバイルアプリのいずれかで、パスワードまたはSSOを使用してWorkplaceにログインした。

log_out

ユーザーが、wwwまたはモバイルアプリのいずれかで、パスワードまたはSSOを使用してWorkplaceからログアウトした。

管理者による強制ログアウトは含まれません(admin_force_log_outを参照)

two_factor

社員が二段階認証を有効または無効にしたときにトリガーされるイベント。

イベント動作

two_factor_enable

ユーザーが[設定]タブから二段階認証を有効にした。これは、誰かが特定の電話番号を確認したときに取得されるのではなく、機能が有効になったことを示します。

two_factor_disable

ユーザーが[設定]タブから二段階認証を無効にした。これは、誰かが特定の電話番号の二段階認証を無効にしたときに取得されるのではなく、機能が無効になっていることを示します。

add_two_factor_phone

二段階認証に使用する電話番号をユーザーが追加、確認した。

two_factor_code_success

ユーザーがWorkplaceのウェブサイトまたはモバイルウェブサイトにログインする際に、有効な二段階コードを入力した

two_factor_code_failure

ユーザーがWorkplaceのウェブサイトまたはモバイルウェブサイトにログインする際に、無効な二段階コードを入力した

two_factor_code_success_m

ユーザーがWorkplace iOSまたはAndroidモバイルアプリにログインする際に、有効な二段階コードを入力した

two_factor_code_failure_m

ユーザーがWorkplace iOSまたはAndroidモバイルアプリにログインする際に、無効な二段階コードを入力した

reseller_events

リセラーに関連するイベント。

イベント動作

reseller_user_added

リセラー会社の非管理ユーザーがリセラーコンソールを表示できるようにする。

reseller_user_removed

リセラー会社の非管理ユーザーがリセラーコンソールを表示できないようにする。

reseller_invite_sent

リセラーが自社とリンクするよう別の会社を招待する。

reseller_invite_accepted

ある会社がリセラーからのリンク招待を受け入れる。

reseller_invite_declined

ある会社がリセラーからのリンク招待を拒否する。

リンク

詳しくは、リンクトピックのリファレンスドキュメントをご覧ください

イベント動作

preview

シェア可能なリンクへのアクセスをリクエストしているユーザーに関するメタデータ。

collection

プレビューを生成するためにWorkplaceでシェアされたリンクのメタデータ。

情報ライブラリ

さらに詳しくは、情報ライブラリカテゴリグラフAPIのドキュメントをご覧ください。

サブスクリプションフィールド動作

categories

情報ライブラリのコンテンツが追加、更新、削除された時点、または読み取りオーディエンスが更新された時点でトリガーされます。

comments

情報ライブラリに新しいコメントが追加されたり、コメントが更新または削除されたりするたびにトリガーされます。

quicklinks

情報ライブラリクイックリンクが追加、更新、削除される時点でトリガーされます。