机器人管理
通过 IM 服务端接口 创建管理 AI 机器人 创建机器人后,SDK 提供接口获取机器人以及相关会话信息。您可根据具体业务场景选择合适的集成方式,实现机器人互动、对聊、智能应答等能力。
提示
从 25.11.0 版本开始支持。
机器人监听事件
在 IM 连接前,开发者需要通过 addRobotEventListener 接口添加监听。设置成功后,IM 连接成功时 SDK 会同步拉取当前所有配置的机器人信息,拉取成功后,通过 RobotEventListener 监听中的 onRobotSyncCompleted 回调通知应用。
注册机器人监听
TypeScript
/// 添加机器人监听
IMEngine.getInstance().addRobotEventListener(listener);
/// 选择适合时机移除监听
IMEngine.getInstance().removeRobotEventListener(listener);
实现机器人同步回调方法
TypeScript
/// 机器人同步完成回调
///
/// - code: 错误码
/// - nativeArr: 连接后同步服务器的增量机器人数组
onRobotSyncCompleted(
code: number,
nativeArr: Array<RobotInfo>
);
获取机器人信息
如果用户通过融云的服务端接口配置了多个机器人,应用可以使用 getAllRobots 方法获取机器人信息列表。也可以通过 getRobotById 传入机器人 ID,获取单个机器人信息。
返回参数说明
类型:RobotInfo
| 参数 | 类型 | 描述 |
|---|---|---|
robotId | string | 机器人的唯一 ID |
name | string | 机器人的昵称 |
portraitUri | string | 指定机器人头像的 URL |
robotType | string | 指定机器人的类型,以便对机器人进行分类 |
metadata | HashMap | 自定义元数据键值对,可用于存储业务相关附加信息。格式为键值对集合,其中键(key)为 1-32 字符的字符串,值(value)为 1-128 字符的字符串,最多支持 16 对 |
createTime | number | 机器人创建时间 |
updateTime | number | 机器人信息最后一次更新时间 |
获取所有机器人
TypeScript
IMEngine.getInstance().getAllRobots().then(result => {
// code 不为 0 时,表示获取到的是本地数据
let ret: object = result;
if (result.data) {
ret = Array.from(result.data);
}
});
获取单个机器人
TypeScript
let robotId = "robotId";
IMEngine.getInstance().getRobotById(robotId).then(result => {
if (result.data) {
// 获取到机器人信息
}
});
获取包含机器人的会话
会话管理中,对于机器人参与的会话可以通过 getConversationsIncludingRobots 接口获取包含机器人的会话,当前版本仅支持单聊和系统会话类型。
参数说明
类型:GetConversationsByPageOption
| 参数 | 类型 | 描述 |
|---|---|---|
conversationTypes | List | 会话类型列表,ConversationType 的集合,目前仅支持单聊会话、系统会话。非法值返回错误码 34284(包含非单聊、系统会话,或长度为 0) |
count | number | 获取数量,有效范围 [1, 100],非法值返回错误码 34232 |
timestamp | number | 时间戳,单位毫秒,默认值为 0,表示从最新的会话开始获取 |
topPriority | boolean | 是否置顶优先级,默认值为 false |
示例代码
TypeScript
let conTypeList = new List<ConversationType>();
conTypeList.add(ConversationType.Private);
conTypeList.add(ConversationType.System);
let timestamp = 0; // 按需填写实际的时间戳
let count = 10; // 按需填写实际需要获取的条数
let topPriority = false; // 按需填写是否需要置顶优先
let option: GetConversationsByPageOption = {
conversationTypes: conTypeList,
timestamp: timestamp,
count: count,
topPriority: topPriority
}
IMEngine.getInstance().getConversationsIncludingRobots(option).then(result => {
if (EngineError.Success !== result.code) {
// 获取会话列表失败
return;
}
if (!result.data) {
// 会话列表为空
return;
}
let conList = result.data as List<Conversation>;
});