iOS

与第三方机器人互动

更新时间: 2024/03/14 17:08:39

本文主要介绍如何快速接入类 ChatGPT 的第三方机器人,帮助您在 IM 应用中实现多样化的 AI 服务。

文中的接入流程以接入 ChatGPT(微软版)为例,其他第三方机器人服务均可通过文中介绍的方法接入,在一对一(P2P)和群组(高级群,Team)场景中进行即时通讯。

技术原理

接入第三方机器人后,IM 应用中的工作流程如下(以单聊为例):

主要流程如下:

  1. 用户发送消息给机器人(提前定义好机器人的用户账号 accid);
  2. 云信 IM 服务器检测到发送对象为机器人后,发送给云信机器人服务器;
  3. 云信机器人服务器调用第三方机器人服务的相关接口;
  4. 第三方机器人服务响应,返回回复内容;
  5. 云信机器人服务器调用云信的发送消息接口将回复内容发送到云信 IM 服务器;
  6. 云信 IM 服务器将机器人的回复消息返回给用户。

当您开通第三方回调和安全通服务时,您发送的消息以及机器人回复的消息都会经过安全审核,相关内容请参考安全通第三方回调

前提条件

实现流程

这里以单聊场景为例,描述用户与第三方机器人一对一聊天的实现步骤。

  1. 用户调用 NIMChatManagerDelegateonRecvMessages: 方法监听消息接收。示例代码如下:

    - (void)onRecvMessages:(NSArray *)messages
    {
        for (NIMMessage *message in messages) {
            // 获取消息机器人信息
            NIMMessageRobotInfo *robotInfo = message.robotInfo;
            if (robotInfo) {
                // 处理消息机器人信息
                // ...
            }
        }
    }
    
  2. 用户构建文本消息并调用 sendMessage:toSession:error: 方法向机器人发送文本消息。

    向机器人发送消息时,需要在消息体(NIMMessage)中配置 robotInfo 字段设置好机器人信息,其中 robotInfo的字段类型为 NIMMessageRobotInfo

    NIMMessageRobotInfo 字段说明:

    参数类型说明
    functionString机器人具体功能
    topicString机器人消息话题
    customContentString机器人自定义内容
    accountString机器人账号(仅当发送到群组有效,点对点会被忽略)

    示例代码如下:

    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)
    {
        // 处理发送结果
    }];
    

    目前机器人消息功能支持多种消息类型,包括文本消息、图片消息、语音消息、视频消息、文件消息、地理位置消息、提示消息、通知消息以及自定义消息。

  3. onRecvMessages: 触发回调,用户收到机器人的消息。

此文档是否对你有帮助?
有帮助
去反馈
  • 技术原理
  • 前提条件
  • 实现流程