Webhooks

概览

Webhooks 支持自定义集成应用订阅 Workplace 中的事件以及实时接收更新。Workplace 中发生更改时,系统会将 HTTPS POST 请求发送至订阅相关 Webhooks 主题的各个自定义集成应用的回调网址。

这样能让应用知道发生更改的准确时间,不再需要依靠持续的或者甚至是周期性的图谱 API 请求才能获取最新内容,因此会让应用变得更加高效。

适用于 Workplace 的 Webhooks 支持由支持图谱 API 的 Webhooks 的同一框架提供。

订阅 Webhooks 主题

编辑自定义集成对话框中的选项卡包括 Workplace 中应用可用的每个 Webhooks 主题。

“编辑自定义集成”对话框中的“Webhooks”部分

如要添加特定主题的新 Webhooks 订阅,请提供回调网址验证口令,然后选择所需订阅字段,以便应用提供相关功能。

一个 Webhooks 主题只能订阅一个网址,但是相同网址可以用于多个主题。

处理验证请求

添加新订阅或修改现有订阅时,Meta 服务器会向回调网址发送 GET 请求,以便验证回调服务器的有效性。

此网址会附加包含以下参数的查询字符串:

  • hub.mode — 在此参数中传递“subscribe”字符串
  • hub.challenge — 随机字符串
  • hub.verify_token — 创建订阅时指定的 verify_token

每当您的端点收到验证请求时,都必须执行以下操作:

  • 确认 hub.verify_token 值与您在配置 Webhooks 时,在“验证口令”字段中设置的字符串一致。
  • hub.challenge 值作出响应。

Webhooks 安全

所有向开发者定义的回调网址发出的 Webhooks 调用均是通过 HTTPS 完成,可在传输层级确保 Webhooks 负载的安全。

为进一步保障安全,在每个 POST 负载中还添加了 HTTP 标头 X-Hub-Signature-256。您应该使用该参数验证负载是否来自 Meta 服务器。

如要了解此行为的全部详情,请参阅 Webhooks 框架文档

所有向开发者定义的回调网址发出的 Webhooks 调用均是通过 HTTPS 完成,可在传输层级确保 Webhooks 负载的安全。

使用 API 调用订阅 Webhooks

如要发出 API 调用来读取或修改 Webhooks 订阅,需要使用应用口令,而不是常用的自定义集成口令。您可以将应用编号、“|”符号以及应用密钥相连,以生成应用口令。

例如:

数据字符串

应用编号

504221332732118

应用密钥

d76ab3f35f3ff5aa6ffdc8637a660d2ea7

应用口令:

504221332732118|d76ab3f35f3ff5aa6ffdc8637a660d2ea7

获取当前 Webhooks 订阅(使用应用口令)

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

添加新的 Webhooks 订阅(使用应用口令)

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,建议您检查是否已妥善设置公共主页与应用之间的订阅。通常情况下,系统会自动进行此项设置,但是有时候会出现设置失败的情况。例如,如果 Webhooks 在较长时间内都未能送达,此订阅就会被移除。对于第三方应用,这种情况会导致应用面板弹出提醒。

如要检查此订阅,可以使用以下 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"...]}

Webhooks 主题

Workplace 上的活动会被归类到各种主题中。每个主题有多个字段,这些字段对应特定主题中的事件。应用可以订阅每个主题的 Webhooks 更新以及每个主题中的特定字段。

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) 时触发的事件。

事件行为

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

用户使用密码或 SSO 登录 Workplace 的网页版或移动应用。

log_out

用户使用密码或 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

添加、更新或删除资料库快捷链接时触发。