智能对话机器人

智能对话机器人功能,智能对话机器人解决方案依托网易IM即时通讯、语音识别、语义理解等服务,为开发者提供人机交互方式API/SDK、语音识别、意图识别、知识库配置、动态接口等功能,可以在应用IM内快速集成场景丰富的智能对话机器人。

区别于开发者业务后台自行设定的机器人,网易波特中配置的机器人,类似网易精灵、小黄鸡这种通过配置知识库,与用户进行交流问答的智能对话机器人。开发者可以在 网易波特服务 开通机器人服务。

智能对话机器人和云信账号是有绑定关系的,一个机器人账号对应了一个云信 id ,两者互相独立 , 云信内部负责维护对应关系。机器人所对应的云信用户不会在线,也不应该和其他正常用户有用户关系,如加好友,拉黑等。

智能对话机器人消息属于云信内置基础消息类型中的一种,详细请参考 消息收发 章节。

机器人的数据会在每次登录后自动同步至客户端,机器人信息由 NimRobotInfo 表示 NimRobotInfo 继承 UserInfo

NimRobotInfo接口列表

返回值 NimRobotInfo 接口 说明
String getBotId() 返回bot 账号
String getAccount() 返回bot 对应的云信账号
String getIntroduce() 返回机器人简介
String getName() 返回机器人名称
String getAvatar() 返回机器人头像地址

获取机器人信息

在每次登录成功之后机器人信息会同步至本地,开发者在应用启动之后,首先查询本地机器人信息,此外注册监听机器人增、减变化通知。

RobotService 获取本地机器人接口

/**
 * 获取本地所有有效的机器人
 *
 * @return 机器人信息集合
 */
List<NimRobotInfo> getAllRobots();

RobotServiceObserve 监听机器人变化接口

/**
 * 监听机器人变更通知
 *
 * @param observer 观察者,参数为收到的机器人变更通知。
 * @param register true为注册监听,false为取消监听
 */
void observeRobotChangedNotify(Observer<RobotChangedNotify> observer, boolean register);

RobotChangedNotify 说明

参数 说明
updatedRobots 更新的机器人列表
deletedRobots 被删除的机器人列表
List<NimRobotInfo> robots = NIMClient.getService(RobotService.class).getAllRobots();
private Observer<RobotChangedNotify> robotChangedNotifyObserver = new Observer<RobotChangedNotify>() {
    @Override
    public void onEvent(RobotChangedNotify robotChangedNotify) {
        // 更新本地机器人信息缓存
    }
};

NIMClient.getService(RobotServiceObserve.class).observeRobotChangedNotify(robotChangedNotifyObserver, register);

机器人消息

智能对话机器人是云信消息类型的一种,机器人类型消息分为机器人上行、下行消息,分别表示发送给机器人和机器人下发的消息。客户端发送机器人上行消息之后,会收到机器人应答的下行消息。

在机器人消息附件 RobotAttachment 调用下面的接口区分上行、下行消息

public boolean isRobotSend();

机器人内容格式规范可参考 机器人消息体模板说明

客户端构建上行消息并调用消息发送接口,收到机器人下行消息之后,在机器人消息附件 RobotAttachment 调用下面的接口

public String getResponse();

同步获取机器人列表

getAllRobots 接口从本地存储中获取机器人信息,此外还可以直接增量同步获取机器人列表,与本地合并后全量返回,供开发者选择调用。

/**
 * 获取全部机器人列表,和服务端同步
 * @return InvocationFuture 可设置回调函数。回调中返回操作成功或者失败具体的错误码。
 */
InvocationFuture<List<NimRobotInfo>> pullAllRobots();