与自定义机器人互动
更新时间: 2024/07/22 09:38:56
本文主要介绍如何快速接入类 ChatGPT 的自定义机器人,帮助您在 IM 应用中实现多样化的 AI 服务,在一对一(P2P)和群组(高级群,Team)场景中进行即时通讯。
网易云信的即时通讯自定义机器人服务,仅面向已成功接入的用户提供。对于尚未接入过的用户,推荐您尝试 AI 数字人 功能。
技术原理
接入自定义机器人后,IM 应用中的工作流程如下(以单聊为例):
主要流程如下:
- 用户发送消息给机器人(提前定义好机器人的用户账号 accid);
- 云信 IM 服务器检测到发送对象为机器人后,发送给云信机器人服务器;
- 云信机器人服务器调用自定义机器人服务的相关接口;
- 自定义机器人服务响应,返回回复内容;
- 云信机器人服务器调用云信的发送消息接口将回复内容发送到云信 IM 服务器;
- 云信 IM 服务器将机器人的回复消息返回给用户。
前提条件
- 已在云信控制台创建应用并注册云信 IM 账号,获取 accid 和 token。
实现流程
这里以单聊场景为例,描述用户与自定义机器人一对一聊天的实现步骤。
步骤1:配置自定义机器人
-
在控制台首页应用管理中选择应用,然后单击 IM 即时通讯下的功能配置按钮进入功能配置页。
-
顶部选择账号管理页签,单击机器人右侧的子功能配置。
-
单击添加机器人按钮,进入机器人具体配置页。
-
填写机器人信息
字段 必填 说明 机器人accid 是 输入机器人对应的 IM 账号(accid)
可以是已注册的云信 IM 账号,也可以是未注册过的用户自定义的账号(云信后台会自行注册对应的 IM 账号)机器人名称 否 输入机器人名称 头像 否 上传机器人头像,支持 jpg/png/jpeg 格式,单个文件大小限制 5MB 以内 机器人能力 是 选择机器人的能力,默认为“微软openAI ChatGPT”,也可以选择自定义的机器人能力 -
配置机器人能力
-
配置消息逻辑
字段 必填 说明 消息回溯条数 是 发给 ChatGPT 需要往前回溯的消息条数限制 消息回溯时间 是 发给 ChatGPT 需要往前回溯消息的时间限制 回复消息是否直接下放 是 直接下发的消息不会回调至业务服务器,也不会通过云信自带审核服务,默认为是
-
-
配置完后,单击保存,即机器人创建完成,可以与机器人开始对话。
可以配置多个机器人,且 webhook 地址可以相同。
步骤2:与机器人互动
-
用户调用
nim::Talk::RegReceiveCb
方法监听消息接收。示例代码如下:Talk::RegReceiveCb( [](const IMMessage& msg) { // process msg // ...... }, "");
-
用户调用
nim::Talk::CreateTextMessage
方法构建一条文本消息,并调用nim::Talk::SendMsg
方法向机器人发送文本消息。向机器人发送消息时,需要在消息体(
nim::IMMessage
)中配置robot_info_
字段设置好机器人信息,其中robot_info_
的字段类型为IMMessageRobotInfo
。IMMessageRobotInfo
字段说明:参数 类型 说明 function std::string 机器人具体功能 topic std::string 机器人消息话题 custom_content std::string 机器人自定义内容 account std::string 机器人账号(仅当发送到群组有效,点对点会被忽略) 示例代码如下:
js
//这里主要以发送文本消息为例 MessageSetting msg_setting; // fill msg_setting auto msg = Talk::CreateTextMessage("robot accid", kNIMSessionTypeP2P, "What is chatgpt?", msg_setting); Talk::SendMsg(msg);
目前机器人消息功能支持多种消息类型,包括文本消息、图片消息、语音消息、视频消息、文件消息、地理位置消息、提示消息、通知消息以及自定义消息。
-
触发消息发送回调(
Talk::RegSendMsgCb
),消息发送成功。 -
触发接收消息回调(
nim::Talk::RegReceiveCb
),接收到机器人回复的消息。