跳到主要内容

机器人管理

通过 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

参数类型描述
robotIdstring机器人的唯一 ID
namestring机器人的昵称
portraitUristring指定机器人头像的 URL
robotTypestring指定机器人的类型,以便对机器人进行分类
metadataHashMap自定义元数据键值对,可用于存储业务相关附加信息。格式为键值对集合,其中键(key)为 1-32 字符的字符串,值(value)为 1-128 字符的字符串,最多支持 16 对
createTimenumber机器人创建时间
updateTimenumber机器人信息最后一次更新时间

获取所有机器人

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

参数类型描述
conversationTypesList会话类型列表,ConversationType 的集合,目前仅支持单聊会话、系统会话。非法值返回错误码 34284(包含非单聊、系统会话,或长度为 0)
countnumber获取数量,有效范围 [1, 100],非法值返回错误码 34232
timestampnumber时间戳,单位毫秒,默认值为 0,表示从最新的会话开始获取
topPriorityboolean是否置顶优先级,默认值为 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>;
});