-
1. 后端处理服务器API
- 1.1 数据库结构
- 1.2 后端处理服务器HTTP 接口
- 1.3. 数据包
-
2. 后端处理服务器应用集成API
- 2.1 设置应用集成
- 2.2 API 格式和签名机制
- 2.3 API 定义
- 3. 客户端扩展机制
-
4. 会话机器人开发指南
- 4.1 机器人应用开发
主入口模块
- 2020-08-11 10:57:03
- 孙浩
- 7260
- 最后编辑:孙浩 于 2020-08-11 11:00:09
- 分享链接
扩展机制要求扩展入口模块导出为一个对象,该对象包含如下可以被客户端使用的字段:
onAttach(ext)
扩展生命周期函数:当扩展被加载后调用,此时可以对扩展进行初始化。函数参数定义如下:
- ext: 为当前被载入的扩展对象。
onReady(ext)
扩展生命周期函数:当界面加载完毕时调用,此时扩展可以处理与界面相关操作。函数参数定义如下:
- ext为当前被载入的扩展对象。
onDetach(ext)
扩展生命周期函数:当扩展被卸载时调用,此时应该将扩展使用的资源进行释放,例如销毁定时器等。函数参数定义如下:
- ext:为当前被载入的扩展对象。
onUserLogin(user, error)
扩展生命周期函数:当用户登录完成时调用。函数参数定义如下:
- user为登录的用户对象;
- error当登录失败时返回的错误信息,如果登录成功,则此参数为null。
onUserLogout(user)
扩展生命周期函数:当当前登录的退出登录时调用。函数参数定义如下:
- user为退出登录的用户对象。
onUserStatusChange(status, oldStatus, user)
扩展生命周期函数:当用户状态发生变化时调用。函数参数定义如下:
- status为用户新的状态代码;
- oldStatus为用户之前的状态代码;
- user为当前状态发生变化的用户对象。
用户状态代码含义:
- 0: 未登录;
- 1: 登录过,但掉线了;
- 2: 登录成功;
- 3: 在线;
- 4: 忙碌;
- 5: 离开。
onSendChatMessages(messages, chat, user)
扩展生命周期函数:当用户发送聊天消息时调用。函数参数定义如下:*messages为用户要发送出去的消息对象数组
- chat为用户发送消息的会话对象
- user为当前发送消息的用户的对象
onReceiveChatMessages(messages, user)
扩展生命周期函数:当用户接收到聊天消息时调用。函数参数定义如下:
- messages为用户接收到的消息对象数组
- user为当前接收消息的用户的对象
onRenderChatMessageContent(content)
扩展生命周期函数:当在界面上需要转化 markdown 格式的消息文本为 html 时会调用此回调方法。函数参数定义如下:
- messages为用户接收到的消息对象数组
- user为当前接收消息的用户的对象
onRequestOpenApp
当扩展类型为应用且应用类型为'custom'时,使用此函数来执行用户点击应用图标时的操作。函数参数定义如下:
- openedApp为当前打开的应用对象。
MainView
当扩展类型为应用(app)且appType为'insideView'时作为内嵌应用的 React 实现的界面主组件。MainView应该返回一个 React 组件类或组件函数。
commands
扩展支持的命令。commands为一个对象,对象的键名为响应的命令名称,键值为命令回调函数或者命令定义对象。
contextMenuCreators
为消息增加操作菜单。contextMenuCreators为一个菜单生成对象数组,对象数组为每个菜单生成对象。菜单生成对象包括match属性用于定义匹配的菜单类型,creator属性用于生成菜单项目的函数。
urlInspectors
网址解释器,可以将消息中的网址渲染成卡片形式。urlInspectors为一个对象数组,每个对象包含有test属性为正则表达式用于匹配要解释的 url 地址,inspector为回调函数(function(url: string))用于生成 URL 对应的卡片参数。
主入口模块示例
下面为一个简单等插件扩展主入口模块示例:
// 从全局扩展对象中引入模块 const Modal = require('xext/components/Modal'); // 用于存储计时器标志 let timerTask = null; module.exports = { onAttach: (ext) => { // 扩展加载完毕了, 此时设置一个计时器,在加载完成 10 秒中之后在界面上显示一个消息 timerTask = setTimeout(() => { Modal.alert('扩展加载完成已经 10 秒钟了,刚刚加载等扩展名称是:' + ext.displayName); }, 10 * 1000); }, onDetach: (ext) => { // 扩展将被卸载,此时应该清理计时器 clearTimeout(timerTask); timerTask = null; }, onUserLogin: (user) => { // 当用户登录时在此处可以进行相关操作,下面以显示当前登录等结果和用户名为例 if (user) { // 表示登录成功 Modal.alert('用户登录成功了,用户名称是:' + user.displayName); } else { Modal.alert('用户登录失败了。'); } }, }
微信公众号