与自定义机器人互动
更新时间: 2024/07/22 09:38:56
本文主要介绍如何快速接入类 ChatGPT 的自定义机器人,帮助您在 IM 应用中实现多样化的 AI 服务,在一对一(P2P)和群组(高级群,Team)场景中进行即时通讯。
网易云信的即时通讯自定义机器人服务,仅面向已成功接入的用户提供。对于尚未接入过的用户,推荐您尝试 AI 数字人 功能。
技术原理
接入自定义机器人后,IM 应用中的工作流程如下(以单聊为例):
主要流程如下:
- 用户发送消息给机器人(提前定义好机器人的用户账号 accid);
- 云信 IM 服务器检测到发送对象为机器人后,发送给云信机器人服务器;
- 云信机器人服务器调用自定义机器人服务的相关接口;
- 自定义机器人服务响应,返回回复内容;
- 云信机器人服务器调用云信的发送消息接口将回复内容发送到云信 IM 服务器;
- 云信 IM 服务器将机器人的回复消息返回给用户。
前提条件
- 已在云信控制台创建应用并注册云信 IM 账号,获取 accid 和 token。
实现流程
这里以单聊场景为例,描述用户与自定义机器人一对一聊天的实现步骤。
-
用户调用
NIMChatManagerDelegate
的onRecvMessages:
方法监听消息接收。示例代码如下:- (void)onRecvMessages:(NSArray *)messages { for (NIMMessage *message in messages) { // 获取消息机器人信息 NIMMessageRobotInfo *robotInfo = message.robotInfo; if (robotInfo) { // 处理消息机器人信息 // ... } } }
-
用户构建文本消息并调用
sendMessage:toSession:error:
方法向机器人发送文本消息。向机器人发送消息时,需要在消息体(
NIMMessage
)中配置robotInfo
字段设置好机器人信息,其中robotInfo
的字段类型为NIMMessageRobotInfo
。NIMMessageRobotInfo
字段说明:参数 类型 说明 function String 机器人具体功能 topic String 机器人消息话题 customContent String 机器人自定义内容 account String 机器人账号(仅当发送到群组有效,点对点会被忽略) 示例代码如下:
objc
// 构造一条文本消息 NIMMessage *message = [[NIMMessage alloc] init]; message.text = @"mock_text"; // 构造发送的目标会话 NIMSession *session = [NIMSession session:sessionId type:sessionType]; // 配置机器人字段 NIMMessageRobotInfo *robotInfo = [[NIMMessageRobotInfo alloc] init]; robotInfo.function = @"mock_function"; robotInfo.topic = @"mock_topic"; robotInfo.customContent = @"mock_customContent"; robotInfo.account = @"mock_account"; message.robotInfo = robotInfo; [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:session completion:^(NSError * __nullable error) { // 处理发送结果 }];
目前机器人消息功能支持多种消息类型,包括文本消息、图片消息、语音消息、视频消息、文件消息、地理位置消息、提示消息、通知消息以及自定义消息。
-
onRecvMessages:
触发回调,用户收到机器人的消息。
此文档是否对你有帮助?