移交协议

Messenger 开放平台移交协议支持两个或更多应用相互传递对话控制权,从而参与对话。通过 Facebook 公共主页订阅的应用会自动启用移交协议。

注意:对话路由现已推出,很快将取代移交协议。您应该尽快将应用更新为使用对话路由。

运作方式

Facebook 公共主页或 Instagram 专业帐户可使用多种消息应用与对其内容感兴趣的客户或用户交流。例如,在提供客户支持服务时,可将客户转到自动化体验,如果自动化体验无法解决客户的问题,则可将客户转到由客服人员提供在线支持的其他应用。如要在应用之间,或应用与 Facebook 公共主页收件箱或 Instagram 收件箱之间转移对话和有关对话的元数据,必须将对话控制权从一个应用传递到另一个应用。移交协议支持转移对话控制权。

默认情况下,当客户发送消息来发起对话时,此对话处于空闲模式。应用将通过 Webhooks 收到通知,表明已收到消息,而且该消息正在等待回复。应用需要订阅针对移交的 Webhooks,才能收到此通知。

当对话处于空闲模式时,任何应用均可接管对话控制权。掌握对话控制权的应用拥有回复消息的专属能力。一次只有一个应用掌握控制权,在掌握控制权的应用释放控制权之前,其他应用无法发送消息。在应用释放控制权后,对话恢复空闲模式,然后下一个应用便可接管控制权。

应用接管对话控制权后,将收到消息 Webhooks 发送的通知。所有其他应用将收到针对移交的 Webhooks 发送的通知。

如果对话在 24 小时内没有收到任何活动,将自动恢复空闲模式。掌握控制权的应用可以根据需要延长控制权到期时间,使该时间超过 24 小时。

如果未掌握对话控制权的应用试图向用户发送消息,系统将返回 400 错误,错误子代码为 2018300

主要接收器

如果想要在收到消息后让特定应用处理消息,您可以将此应用指定为主要接收器。主要接收器接收对话的所有新消息,可以将对话控制权转移到其他应用、Facebook 公共主页收件箱或 Instagram 收件箱,而且在必要情况下可以从其他应用接管对话控制权。当非主要接收器应用结束对话,并释放控制权时,此对话将被设置为空闲模式。

如果对话处于空闲模式时用户向您的公共主页或帐户发送新消息,则主要接收器将接管对话控制权,并接收有关新消息的 Webhooks 通知。

注意:设置主要接收器不是必要操作。

收件箱

您无法将 Facebook 公共主页收件箱或 Instagram 收件箱指定为主要接收器。但是,如果您将消息移到“主要”文件夹,或者回复收件箱未控制的对话中的消息,收件箱会接管此对话的控制权。如果您回复的消息在收件箱中被标记为完成,则对话控制权仍为之前掌握控制权的应用或主要接收器(如果已设置)所有,或者系统会释放控制权,使对话恢复空闲模式。

对话接入点

使用 Messenger 直达广告 (CTM) 对话接入点时,您可以将对话指定至特定应用。商家可以使用 CTM 发起与客户的对话,以开发潜在客户、提升品牌知名度等等。

固定菜单

如果不设置主要接收器,任何应用均可设置公共主页层级菜单。如果已设置主要应用,只有主要应用可以设置或删除公共主页层级菜单。

掌握对话控制权的应用可设置或删除用户层级菜单,即使此应用不是主要接收器也是如此,并且当对话处于空闲模式时,任何应用都能设置用户层级菜单。

当客户从菜单中选择项目时,创建此菜单的应用将接管对话的控制权。在配置创建菜单的应用处理该数据后,可完成此操作。

回传行动号召

当客户点击回传行动号召 (CTA) 时,创建此回传行动号召 (CTA) 的应用将接管对话的控制权,即使其他应用掌握了控制权也是如此。在配置创建回传行动号召 (CTA) 的应用处理该数据后,可完成此操作。

客户调查

如果在其他应用控制对话时发送调查,此调查将在其他应用释放控制权且对话处于空闲模式后才能送达。

组件

Facebook 公共主页订阅的消息应用需要具备以下组件才能成功实现移交协议。

访问口令

需要可在公共主页上执行 MODERATE 任务的用户请求的公共主页访问口令,才能向移交协议端点发出调用。

应用审核

应用需要通过应用审核,才能:

  • 为没有该应用身份的用户所使用
  • 允许人工客服回复客户

人工客服功能

如果应用已通过应用审核,获准使用人工客服功能,即使该应用未掌握对话控制权,也可向用户发送消息,并且该消息上将标记人工客服标签。这是唯一一种未掌握对话控制权的应用可发送消息的情况。

权限

应用需要具备 pages_messaging 权限,才能请求客户授予访问消息数据的权限。

Webhooks

使用移交协议时,应用应订阅两类 Webhooks,即消息 Webhooks 和待命 Webhooks。应用收到的通知取决于对话控制权。如果应用掌握对话控制权,会收到消息 Webhooks 通知。如果应用未掌握对话控制权,会收到待命 Webhooks 通知。

常见用途

客户支持

商家可使用一个应用提供自动化体验,用于解决常见问题,如果自动化体验无法解决客户的问题,则可将客户转到另一个提供在线支持的应用。自动化应用可设置为主要接收器,使所有对话都由自动化应用控制。当在线支持客服人员需要加入对话时,提供在线支持的应用可以请求对话的控制权。当在线客服人员应用完成对话后,会释放对话控制权,让自动化应用重新掌握控制权。如果在线客服人员应用需要更长时间来处理客户的问题,可以请求延长时间。这些应用都应该订阅消息 Webhooks 和待命 Webhooks,以确保正常开展对话。

营销活动 - 商品潜在客户

商家可开展营销活动,通过自动化体验甄选潜在客户,或根据商品测验提供商品推荐。在甄选潜在客户后,商家可以使用 Facebook 公共主页收件箱或 Instagram 收件箱跟进这些潜在客户。自动化应用可设置为主要接收器,使所有对话都由自动化应用控制。自动化应用在完成潜在客户甄选阶段的任务后,会将对话控制权传递给 Facebook 公共主页收件箱或 Instagram 收件箱。在 Facebook 公共主页收件箱或 Instagram 收件箱中完成对话后,系统会将此对话标记为完成。这样会释放对话控制权,以便主要应用掌握控制权。这些应用都应该订阅消息 Webhooks 和待命 Webhooks,以确保正常开展对话。

营销活动 - Messenger 直达广告

商家可开展营销活动,将潜在客户转到自动化应用,尝试特定 Messenger 体验。自动化应用可设置为主要接收器,使所有对话都由自动化应用控制。当在线支持客服人员需要加入对话时,提供在线支持的应用可以请求对话的控制权。当在线客服人员应用完成对话后,会释放对话控制权,让自动化应用重新掌握控制权。如果在线客服人员应用需要更长时间来处理客户的问题,可以请求延长时间。这些应用都应该订阅消息 Webhooks 和待命 Webhooks,以确保正常开展对话。

最佳实践

  1. 建议将自动化体验设置为主要接收器应用,并将任何在线客服人员应用设置为非主要应用。建议在线客服人员应用侦听待命事件,并且除非有需要,否则不采取行动。
  2. 始终使用接管对话控制权 API 检查您是否掌握对话控制权,然后根据情况调用其他 API。如果您没有控制权,请勿打断或中断对话。
  3. 在其他应用掌握对话控制权时,请勿尝试向对话发送消息。如果您的应用是主要应用,请仅在需要时使用接管对话控制权 API。在非紧急情况下,或者您的应用是非主要应用时,请请求对话控制权。
  4. 确保在所有可能的情况下,接受任何其他应用发出的请求对话控制权事件,并将对话控制权传递给发出请求的应用。如果您因故无法立即传递对话控制权,请使用传递元数据 API 将其他背景信息发送至发出请求的应用,并维护队列,以在您完成对话时传递对话控制权。
  5. 如果您已完成对话,请将对话控制权传递给仍在队列中的之前发出请求的应用,或释放对话控制权,使对话恢复空闲模式,以便任何其他应用接管此对话。如果不这样操作,您的应用在 24 小时后会自动释放对话控制权,并且对话将进入空闲模式。在此情况下,代码及其相关状态都会发生相应的变化。
  6. 如果您发现在调用接管对话控制权 API 后,对话进入空闲模式,可通过请求对话控制权来接管对话控制权,以便您可以拥有向用户发送消息的专属能力,避免对话中断,而且在完成对话后释放控制权。

后续步骤

现在您已了解移交协议运作方式,如要实现此协议,您需要执行以下操作: