接入流程
Server 接入流程
- 添加机器人
使用 open api 添加机器人,参考注册用户接口,Users 类型中新增 IsRobot 字段,默认为 false,若指定为 true,则会将对应的用户注册为机器人。
POST https://rtc.volcengineapi.com?Action=RegisterUsers&Version=2020-12-01
{
"AppId": 000000,
"Users": [
{
"UserId": 10004,
"NickName": "Your_NickName",
"Portrait": "http://xxxxx",
"Tags": [
"标签值"
],
"Ext": {
"key":"value"
},
"IsRobot": true
}
]
}
- 接入回调事件
- AfterSendMessage 回调事件,消息成功发送后触发该事件,可以使用该事件获取用户向 AI 机器人发送的消息,并与大模型交互。具体调用参考 AfterSendMessage回调。
- AfterMarkNewChat 回调事件,在客户端清除上下文时触发该事件,可以使用该事件与大模型交互情况上下文。
// 请求示例
{
"AppId": 000000,
"InboxType": 0,
"UserId": 100001,
"ConversationShortId": 000001,
"ConversationId": "conversation_id",
"ConversationType": 1,
"RobotIds": [1], // 该会话中的机器人 id 列表
"Ext": {}
}
// 响应示例
{
"CheckCode":0,
"CheckMessage":""
}
- 发送回复消息
使用发送消息 open API,将 AI 机器人的响应发送给用户。
客户端接入流程
Android
- 初始化
- 拉取所有机器人列表
BIMClient.getInstance().getService(BIMContactExpandService.class).getAllRobotFullInfo(true, new BIMResultCallback<List<BIMUserFullInfo>>() {
@Override
public void onSuccess(List<BIMUserFullInfo> profiles) {
// 根据返回的机器人信息刷新 UI 列表 ....
}
@Override
public void onFailed(BIMErrorCode code) {
// 获取所有机器人失败
}
});
- 通过机器人 uid 可以创建机器人会话,和创建普通单聊一致
- 如有需要,可以主动清空会话上下文
String conversationId = ""; // 机器人会话ID
BIMClient.getInstance().markNewChat(conversationId, true, new BIMSimpleCallback() {
@Override
public void onSuccess() {
// 清空上下文成功
}
@Override
public void onFailed(BIMErrorCode code) {
// 处理错误
}
});
iOS
- 初始化
- 拉取所有机器人列表
#import <imsdk-tob/BIMSDK.h>
- (void)loadRobotListData
{
[[VEIMDemoUserManager sharedManager] getAllRobotFullInfoWithSyncServer:YES completion:^(NSArray<BIMUserFullInfo *> * _Nullable infos, BIMError * _Nullable bimError) {
if (bimError) {
NSError *error = [NSError errorWithDomain:kVEIMDemoErrorDomain code:bimError.code userInfo:@{NSLocalizedDescriptionKey : bimError.localizedDescription}];
[BIMToastView toast:[NSString stringWithFormat:@"获取所有机器人失败:%@", error.localizedDescription]];
return;
}
/// 根据返回的机器人信息刷新 UI 列表 ....
}];
}
- 通过机器人 uid 可以创建机器人会话,和创建普通单聊一致
- 如有需要,可以主动清空会话上下文
#import <imsdk-tob/BIMSDK.h>
[[BIMClient sharedInstance] markNewChat:{机器人会话 ID} needNotice:YES completion:^(BIMError * _Nullable bimError) {
NSError *error;
if (bimError) {
// 可以在这处理错误...
}
}];
web
- 初始化
import { BytedIM, BotPlugin } from '@volcengine/im-web-sdk';
// 创建实例,添加机器人插件
const bytedIMInstance = new BytedIM(imOption, [...otherPlugin, BotPlugin]);
- 拉取所有机器人列表
// 获取机器人列表
bytedIMInstance.getBotListOnline();
- 通过机器人 uid 可以创建机器人会话,和创建普通单聊一致
// 创建单聊会话
const { payload: conversation } = bytedIMInstance.createConversation({
type: ConversationType.ONE_TO_ONE_CHAT,
participants: uid,
});
- 如有需要,可以主动清空会话上下文
/*
* 标记新会话,用于 ai bot 聊天场景清空上下文
* params.conversation 会话信息
* params.sendNotice 是否发送开场白
*/
bytedIMInstance.markNewChat({ conversation, sendNotice });