1. 后端处理服务器API
1.1  数据库结构
1.2  后端处理服务器HTTP 接口
1.3. 数据包
1.3.1  数据包的基本信息
1.3.2  所有数据包
2. 后端处理服务器应用集成API
2.1  设置应用集成
2.2  API 格式和签名机制
2.3  API 定义
3. 客户端扩展机制
3.1. 扩展定义
3.1.1  扩展类型
3.1.2  扩展包目录结构
3.1.3  扩展描述文件
3.2. 扩展模块
3.2.1  主入口模块
3.2.2. 扩展模块API
3.2.2.1  扩展 API 概览
3.2.2.2  扩展 API 权限
3.2.2.3  扩展 API 定义
3.2.3  扩展实例对象
3.2.4  数据存储机制
3.2.5  自定义上下文菜单
3.2.6  自定义命令
3.2.7  自定义网址解析
3.3. 开发扩展
3.3.1  载入开发中的扩展
3.3.2  开发应用扩展
3.3.3  开发插件扩展
3.3.4  开发主题扩展
3.4  内置扩展
3.5  分发扩展
4. 会话机器人开发指南
4.1  机器人应用开发

主入口模块

2020-08-11 10:57:03
孙浩
7262
最后编辑:孙浩 于 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('用户登录失败了。');
        }
    },
}
发表评论
评论通过审核后显示。
联系我们
公众号