聊天功能插件


智能助手可利用聊天功能插件提供交互式社交功能,用户可在对话中直接使用这些功能。
目录
  1. 概览
  2. 配置抽屉式导航接入点
  3. 分享
  4. 获取用户编号和对话上下文
  5. 权限管理
  6. 提示和最佳实践
  7. 常见问题和疑难解答

概览

互动模型

用户与关联的智能助手发生互动后,聊天功能插件会在 Messenger 的编写工具抽屉式导航中显示。

用户轻触聊天功能插件图标时,开发者指定的网页视图用户界面会打开。用户随后可创建或选择要在对话中分享的内容。在对话中分享的消息可包含图片、链接等。

如果对话组中的用户与通过此方式分享的任何消息互动,开发者将拥有访问对话中上下文信息的权限、请求权限的能力,以及 Messenger 功能插件 JavaScript SDK 中提供的所有其他功能。

可能的使用场景

  • 交流: 直接在 Messenger 中创建贴图或连环消息。分享歌曲、视频或其他内容。
  • 媒体: 向对话组发送所关注主题的最新动态。
  • 商业: 小组订购和规划
  • 生产力: 发送来自任务追踪器的更新,协作编辑文档。
  • 娱乐: 创建游戏或小组挑战。

示例项目

我们提供开源的 TaskBot,该智能助手能够展示本文介绍的所有功能。


在 Messenger 中尝试 →Github 存储库 →

配置抽屉式导航接入点

为了在抽屉式导航中向添加了智能助手的用户显示智能助手,您必须设置智能助手的主页网址。

如果您的聊天功能插件尚未做好发布准备,请注意将 in_test 设置为 true,以防在准备就绪前向非开发者用户显示该功能插件。

详细了解 →

分享

Messenger 平台支持来自网页视图的自定义分享内容,因此,开发者能够为通过其智能助手分享的消息提供自定义消息和目标位置。

这些功能添加了多项功能增强,以便与聊天功能插件配合使用。以下是您需要了解的内容:

分享到当前对话

beginShareFlow() 函数具有 mode 参数,该参数现在支持 current_thread 模式。这让用户能够将内容分享到他们从其中调用了聊天功能插件的对话,而无需选择其他对话。大部分开发者应为功能插件本身选择 current_thread 模式。

您可能会想要检查用户的 Messenger 版本是否支持此模式。使用 getSupportedFeatures() 方法并检查键 "sharing_direct" 进行确定。

响应分享

无论用户是确认分享还是取消分享,只要没有遇到错误,就会调用 beginShareFlow()success 回调。

Messenger 现在传递 is_sent 字段来响应 success 回调,告知是否实际发送了消息。

用户进行分享后,您可以在完成后关闭窗口,也可以将用户定向到流程的下一部分。

<script> 
    var messageToShare = { ... };
      
    MessengerExtensions.beginShareFlow(function success(response) {
      if(response.is_sent === true){ 
      	// User shared. We're done here!
      	MessengerExtensions.requestCloseBrowser();
      }
      else{
      	// User canceled their share! 
      
      }
    }, 
    function error(errorCode, errorMessage) {      
  	// An error occurred trying to share!
    },
    messageToShare,
    "current_thread");   
</script>

更多详情请参阅 beginShareFlow() 的文档

详细了解 →

获取用户编号和对话上下文

调用 getContext() 函数,获取:

  • 用户编号 (PSID)
  • 对话编号
  • 对话类型

此函数适用于使用网页视图的所有用户,而无论他们是否与您的智能助手展开对话。

请注意,通过此方法获取用户编号不意味着能够获取用户的个人主页。如需获取个人主页,您需要具有个人主页权限。


详细了解 →

权限管理

用户与您的智能助手开始对话时,您会自动获得向该用户发送消息以及获取该用户的个人主页的权限。对于屏蔽智能助手或删除对话的用户,这些权限会被撤销。

对于通过网页视图使用智能助手,但没有与智能助手展开对话的用户,您可能需要请求这些权限。为此,您可以使用 Messenger 功能插件 JavaScript SDK 中的权限函数。

详细了解 →

提示和最佳实践

对于如何创建卓越的聊天功能插件,Messenger 平台建议了一些最佳实践,其中包括:

  • 常规方法
  • 如何使用不同的分享模式
  • 如何控制网页视图获得最大效果
  • 如何确保反向兼容性
详细了解 →

设计工具包

准备好设计聊天功能插件了吗? 查看我们方便的 Sketch 文件,其中包含您需要的所有组件!

获取工具包 →

常见问题和疑难解答

问: 开发聊天功能插件必须有一个智能助手吗?

答: 是的! 聊天功能插件是智能助手中的功能插件。

问: 怎样才能在编写工具抽屉式导航中显示聊天功能插件?

答: 用户与关联的智能助手互动后,编写工具抽屉式导航中会显示聊天功能插件。

问: 是否必须拥有聊天功能插件才能让用户通过智能助手分享?

答: 不是! Messenger 平台提供多种其他方式,可供用户通过智能助手分享。

问: 是否必须拥有聊天功能插件才能在智能助手中使用网页视图和 Messenger 功能插件 Javascript SDK? 它们有什么关联?

答: 不是! 我们只是喜欢这种方式。实际上,除了聊天功能插件以外,很多方式都可以调用网页视图,这些方式都支持使用 Messenger 功能插件。

问: 聊天功能插件的接收人轻触链接时,Messenger 功能插件 Javascript SDK 提供哪些功能?

答: 打开分享内容的用户可以使用发送人可用的所有功能。您可以获得用户编号、对话上下文,或者开始自己的分享等等。注意,在这些情形下,您将不能访问用户的个人主页或是给这些用户发送消息,除非您请求必需的权限

问: 聊天功能插件能在 Messenger.com 和 Facebook.com 使用吗?

答: 此功能仅支持 iOS 和 Android 设备。 基于网页的客户端用户可能可以点击聊天功能插件用户分享的链接,但将无法使用 JavaScript SDK 提供的功能。如需更多信息,参考聊天功能插件最佳实践指南的“向后兼容”部分。

问: 分享到当前对话与通过广播分享之间有何差异?

答: 聊天功能插件基于之前发布的网页视图分享功能构建,方法是添加名为 "current_thread" 的流程。

如果用户使用编写工具在对话内调用智能助手,唯一的可能是他们想要在对话中分享内容,而不是想要与其他用户分享。“current_thread”流程与之类似,用户可确认向当前对话发送某条内容,而不是广播到多个对话。

问: 我正在使用最新版的 Messenger,但 SDK 在网页视图中无法正常工作。问题出在哪里?

答: 检查以下项:

  • 隐藏的主页: 如果智能助手附加到的主页被隐藏,则不具有任何主页身份(例如,开发者、管理员)的用户无法加载 SDK。为用户添加主页身份或发布主页。

  • messenger_extension 属性未设置: 请确保,在打开网页视图的所有位置中,您已将 messenger_extensions 设置为 true。其中包括:


问: 我创建了一个聊天功能插件,但无法让其显示到编写工具抽屉式导航。怎么办?

检查以下项:

  1. 确认您针对要显示到的具体主页设置了 home_url,并使用了该主页的正确主页访问口令。将智能助手从一个 Facebook 主页转移到另一主页将不会转移主页网址。

  2. 如果您在开发模式,且将 in_test 属性设置为 true,那么请确认查看抽屉式导航的用户为相关智能助手的开发者或测试人员,或是其 Facebook 主页的管理人员。如果您已经公开发布智能助手,确认您已提交智能助手,且智能助手已被批准获得 pages_messaging 权限。

  3. 确认添加智能助手的 Facebook 主页为发布状态

  4. 确认智能助手本身为公开模式

  5. 确认您之前曾与智能助手对话。

  6. 编写工具抽屉式导航显示的聊天功能插件已缓存。您可能需要等待片刻,它才会显示。