IM 即时通讯
Android
开发指南

与第三方机器人互动

更新时间: 2023/07/11 16:16:04

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

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

技术原理

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

主要流程如下:

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

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

前提条件

实现流程

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

    Observer<List<IMMessage>> incomingMessageObserver = new Observer<List<IMMessage>>() {
        @Override
        public void onEvent(List<IMMessage> messages) {
            if (messages != null) {
                for (IMMessage message : messages) {
                    // 获取消息机器人信息
                    MessageRobotInfo robotInfo = message.getRobotInfo();
                    if (robotInfo != null) {
                        // 处理消息机器人信息
                        // ...
                    }
                }
            }
        }
    };
    
    NIMClient.getService(MsgServiceObserve.class).observeReceiveMessage(incomingMessageObserver, true);
    
  2. 用户调用 createTextMessage 方法构建文本消息,然后调用 sendMessage方法向机器人发送文本消息。

    向机器人发送消息时,需要在消息体(IMMessage)中通过 setRobotInfo 配置机器人信息,其中 robotinfo 的字段类型为 MessageRobotInfo

    MessageRobotInfo 字段说明如下:

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

    示例代码如下:

    // 构建文本消息
    IMMessageImpl textMessage = MessageBuilder.createTextMessage(sessionId, sessionType, "mock_text");
    MessageRobotInfo messageRobotInfo = new MessageRobotInfo(
            "mock_function",
            "mock_topic",
            "mock_customContent",
            "mock_account");
    // 设置机器人信息
    textMessage.setRobotInfo(messageRobotInfo);
    // 发送消息
    NIMClient.getService(MsgService.class).sendMessage(textMessage, false);
    

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

  3. observeReceiveMessage 方法的 Observer 接口根据实际情况触发回调函数,用户收到机器人的消息。

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