Al实时对话智能体

介绍Web端如何接入Al实时对话智能体。

简介

DingRTC提供了Al实时对话智能体服务,可以通过服务端API启动智能体,并加入到指定的 RTC 频道,频道中其他人看待智能体跟其他的用户基本一样。Web SDK 提供接口用于监听加入RTC 频道的智能体的一些消息和状态,以及发送消息或者通知给智能体。

相关概念

智能体ID:智能体的用户ID。

转录消息:与智能体对话的转录信息。

自然对话/对讲机模式:通过OpenAPI创建的智能体的对话模式。

集成方法

  1. 参考快速入门完成RTC Web SDK的集成和基本功能实现。

  2. 构造 AiAgentClient 的实例,并注册到rtcClient对象:

    import DingRTC from 'dingrtc';
    import AiAgentClient from 'dingrtc-aiagent';
    
    const rtcClient = DingRTC.createClient();
    // 替换为实际的 agent user id
    const aiAgentClient = new AiAgentClient('xxx'); 
    rtcClient.register(aiAgentClient);
  3. rtcClient 加入 Channel:

    await rtcClient.join({
      appId: '',
      userName: '',
      channel: '',
      uid: '',
      token: '',
    });
  4. AiAgentClient 实例监听相关消息:

    // 监听智能体下发的转录消息
    aiAgentClient.on('message', (message: AIAgentMessage) => {
      console.log("收到消息:", message);
      /**
       * 消息结构示例:
       * - message: 文本内容
       * - uid: 发送者ID
       * - reasoning: 是否为思考过程
       * - userType: 'user' 或 'agent'
       * - extra: 插播消息自定义内容,暂时未使用
       * - end: 是否结束标记
       */
    });
    
    // 监听智能体状态变更
    aiAgentClient.on('agent-status', (newStatus: AgentStatus) => {
      console.log("Agent 状态变更:", newStatus);
      // 状态可能是: 'listening' | 'processing' | 'responding'
    });
  5. 通过你的业务 AppServer 调用智能体服务的 StartAgent - 启动智能体

  6. 如果在启动智能体时,设置自然对话模式,那么就可以正常与智能体对话。

  7. 如果在启动智能体时,设置对讲机模式,需要配合下面相关接口才能与智能体对话:

    // 通知 agent 本端开始“按下说话”(push-to-talk)
    aiAgentClient.startPushToTalk();
    
    // 通知 agent 本端结束“按下说话”(push-to-talk)
    aiAgentClient.stopPushToTalk();
    
    // 通知 agent 本端取消“按下说话”(push-to-talk)
    aiAgentClient.cancelPushToTalk();
  8. 无论何种模式,都可以使用 AiAgentClient 的 下列API 对智能体进行打断 :

    // 打断 agent
    aiAgentClient.interrupt(): void;

注意事项

  1. 智能体创建及加入由服务端OpenAPI StartAgent - 启动智能体接口决定。

  2. 推荐在入会前给AIAgentClient实例设置消息监听器,避免丢失回调消息。