智能对话机器人


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

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

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

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

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

机器人的数据会在每次登录后自动同步至客户端。本地机器人数据由 NIMRobotManager 管理。机器人由 `` 表示。

NIMRobotManager 原型

@interface NIMRobot : NSObject

/**
 *  机器人对应的云信账号 Id
 */
@property (nullable,nonatomic,copy)   NSString    *userId;

/**
 *  机器人对应的波特 Id
 */
@property (nullable,nonatomic,copy,readonly) NSString *botId;

/**
 *  机器人昵称
 */
@property (nullable,nonatomic,copy,readonly) NSString *nickname;

/**
 *  机器人简介
 */
@property (nullable,nonatomic,copy,readonly) NSString *intro;

/**
 *  机器人头像
 */
@property (nullable,nonatomic,copy,readonly) NSString *avatarUrl;

/**
 *  机器人头像缩略图
 *  @discussion 仅适用于使用云信上传服务进行上传的资源,否则无效。
 */
@property (nullable,nonatomic,copy,readonly) NSString *thumbAvatarUrl;

@end

属性列表

参数 类型 说明
userId NSString 机器人对应的云信账号 Id
botId NSString 机器人对应的波特 Id
nickname NSString 机器人昵称
intro NSString 机器人简介
avatarUrl NSString 机器人头像
thumbAvatarUrl NSString 机器人头像缩略图,仅适用于使用云信上传服务进行上传的资源,否则无效。
@protocol NIMRobotManager <NSObject>
/**
 *  获取所有的机器人
 *  @return 所有机器人信息
 */
- (NSArray *)allRobots
@end
@protocol NIMRobotManager <NSObject>
/**
 *  是否是有效的机器人
 *
 *  @param userId 用户Id (机器人在云信的id)
 *  @return 是否是机器人
 */
- (BOOL)isValidRobot:(NSString *)userId
@end

当机器人被移除时,userId 对应的机器人则为无效。

@protocol NIMRobotManager <NSObject>
/**
 *  获取机器人信息
 *  @param userId 用户Id (机器人在云信的id)
 *  @return 机器人信息
 */
- (NIMRobot *)robotInfo:(NSString *)userId
@end

机器人消息

机器人消息分上行消息和下行消息。用户向机器人发送的消息被称为上行消息,构造示例可以参考发送消息 章节;机器人向用户回复的消息被称为下行消息。

在 NIMRobotObject 里,判断是否上下行的字段为

/**
 *  判断此消息是否是属于机器人回复的消息
 */
@property (nonatomic, assign, readonly) BOOL isFromRobot;

同时,设置了只有机器人下行消息才有效的只读字段:

/**
 *  机器人回复的消息所属的提问消息 Id ,只在机器人下行消息,此字段有效
 */
@property (nullable, nonatomic, copy, readonly) NSString *responseForMessageId
/**
 *  机器人回复的消息结果,只在机器人下行消息,此字段有效
 */
@property (nullable, nonatomic, copy, readonly) NSDictionary *response