Skip to content

websocket的语音对话,有没有办法获取到用户回复建议follow_up #335

Open

Description

@ko300

websocket的智能语音对话,有没有办法获取到用户回复建议follow_up,websocket没有找到follow_up类型,试了rest读取消息列表也没有follow_up消息列表

Activity

  1. coze-js-bot commented on Apr 1, 2026

    @coze-js-bot

    正在帮您查询中,请稍等...

    问题分析与解决方案

    问题现状

    用户在使用扣子WebSocket语音对话功能时,发现无法获取到用户回复建议(follow_up)信息:

    1. WebSocket事件中没有找到follow_up类型的消息
    2. 使用REST API读取消息列表也无法获取到follow_up类型的消息

    解决方案

    1. 确认智能体配置

    首先需要确保您的智能体已经开启了"用户问题建议"开关:

    • 登录扣子平台,进入智能体管理页面
    • 在智能体设置中找到"用户问题建议"选项并开启
    • 开启后,智能体才会在对话过程中生成并返回follow_up类型的消息
    2. 使用正确的API获取follow_up消息

    根据扣子API文档,follow_up类型的消息属于对话中间态消息,需要使用特定的API来获取:

    正确API:查看对话消息详情

    GET https://api.coze.cn/v3/chat/message/list
    

    请求参数:

    参数 类型 说明
    conversation_id String 会话ID
    chat_id String 对话ID

    使用示例(cURL):

    curl --location --request GET 'https://api.coze.cn/v3/chat/message/list?conversation_id=738216760624714****&chat_id=738147352534297****' \
    --header 'Authorization: Bearer pat_OYDacMzM3WyOWV3Dtj2bHRMymzxP****' \
    --header 'Content-Type: application/json'

    注意事项:

    • 调用此API前,建议先以每秒最多1次的频率轮询"查看对话详情"API,确认对话已完成(status=completed)
    • 此API会返回包括follow_up在内的所有对话中间态消息
    • 不要使用"查看消息列表"API,因为该API不返回follow_up类型的消息
    3. WebSocket获取follow_up消息的方法

    目前WebSocket语音对话事件中确实没有直接返回follow_up类型的消息。您可以通过以下方式解决:

    方案一:WebSocket对话完成后调用REST API获取

    1. 在WebSocket对话过程中记录conversation_id和chat_id
    2. 当收到conversation.chat.completed事件时,调用"查看对话消息详情"API获取follow_up消息

    方案二:使用工作流处理follow_up消息

    1. 创建一个工作流,添加"消息节点"
    2. 在工作流中配置当收到follow_up消息时的处理逻辑
    3. 将工作流与智能体关联,实现自动处理和返回follow_up消息

    代码示例

    Python示例:获取对话消息详情
    import requests
    
    url = "https://api.coze.cn/v3/chat/message/list"
    params = {
        "conversation_id": "738216760624714****",
        "chat_id": "738147352534297****"
    }
    headers = {
        "Authorization": "Bearer pat_OYDacMzM3WyOWV3Dtj2bHRMymzxP****",
        "Content-Type": "application/json"
    }
    
    response = requests.get(url, params=params, headers=headers)
    data = response.json()
    
    # 提取follow_up消息
    follow_up_messages = [msg for msg in data['data'] if msg['type'] == 'follow_up']
    print("用户回复建议:", follow_up_messages)
    Node.js示例:WebSocket对话完成后获取follow_up
    const WebSocket = require('ws');
    const axios = require('axios');
    
    const BOT_ID = 'your_bot_id';
    const ACCESS_TOKEN = 'your_access_token';
    
    const url = `wss://ws.coze.cn/v1/chat?bot_id=${BOT_ID}&authorization=Bearer ${ACCESS_TOKEN}`;
    const ws = new WebSocket(url);
    
    let conversationId;
    let chatId;
    
    ws.on('open', function open() {
      console.log('Connected to server.');
    });
    
    ws.on('message', function incoming(message) {
      const data = JSON.parse(message.toString());
      
      // 记录conversation_id和chat_id
      if (data.event_type === 'conversation.chat.created') {
        conversationId = data.data.conversation_id;
        chatId = data.data.id;
      }
      
      // 对话完成后获取follow_up消息
      if (data.event_type === 'conversation.chat.completed') {
        getFollowUpMessages(conversationId, chatId);
      }
    });
    
    async function getFollowUpMessages(conversationId, chatId) {
      try {
        const response = await axios.get('https://api.coze.cn/v3/chat/message/list', {
          params: {
            conversation_id: conversationId,
            chat_id: chatId
          },
          headers: {
            'Authorization': `Bearer ${ACCESS_TOKEN}`,
            'Content-Type': 'application/json'
          }
        });
        
        const followUpMessages = response.data.data.filter(msg => msg.type === 'follow_up');
        console.log('用户回复建议:', followUpMessages);
      } catch (error) {
        console.error('获取follow_up消息失败:', error);
      }
    }

    参考文档

    如果您在实施过程中遇到任何问题,请随时联系扣子技术支持团队获取帮助。> 正在帮您查询中,请稍等...

    问题分析与解决方案

    问题现状

    用户在使用扣子WebSocket语音对话功能时,发现无法获取到用户回复建议(follow_up)信息:

    1. WebSocket事件中没有找到follow_up类型的消息
    2. 使用REST API读取消息列表也无法获取到follow_up类型的消息

    解决方案

    1. 确认智能体配置

    首先需要确保您的智能体已经开启了"用户问题建议"开关:

    • 登录扣子平台,进入智能体管理页面
    • 在智能体设置中找到"用户问题建议"选项并开启
    • 开启后,智能体才会在对话过程中生成并返回follow_up类型的消息
    2. 使用正确的API获取follow_up消息

    根据扣子API文档,follow_up类型的消息属于对话中间态消息,需要使用特定的API来获取:

    正确API:查看对话消息详情

    GET https://api.coze.cn/v3/chat/message/list
    

    请求参数:

    参数 类型 说明
    conversation_id String 会话ID
    chat_id String 对话ID

    使用示例(cURL):

    curl --location --request GET 'https://api.coze.cn/v3/chat/message/list?conversation_id=738216760624714****&chat_id=738147352534297****' \
    --header 'Authorization: Bearer pat_OYDacMzM3WyOWV3Dtj2bHRMymzxP****' \
    --header 'Content-Type: application/json'

    注意事项:

    • 调用此API前,建议先以每秒最多1次的频率轮询"查看对话详情"API,确认对话已完成(status=completed)
    • 此API会返回包括follow_up在内的所有对话中间态消息
    • 不要使用"查看消息列表"API,因为该API不返回follow_up类型的消息
    3. WebSocket获取follow_up消息的方法

    目前WebSocket语音对话事件中确实没有直接返回follow_up类型的消息。您可以通过以下方式解决:

    方案一:WebSocket对话完成后调用REST API获取

    1. 在WebSocket对话过程中记录conversation_id和chat_id
    2. 当收到conversation.chat.completed事件时,调用"查看对话消息详情"API获取follow_up消息

    方案二:使用工作流处理follow_up消息

    1. 创建一个工作流,添加"消息节点"
    2. 在工作流中配置当收到follow_up消息时的处理逻辑
    3. 将工作流与智能体关联,实现自动处理和返回follow_up消息

    代码示例

    Python示例:获取对话消息详情
    import requests
    
    url = "https://api.coze.cn/v3/chat/message/list"
    params = {
        "conversation_id": "738216760624714****",
        "chat_id": "738147352534297****"
    }
    headers = {
        "Authorization": "Bearer pat_OYDacMzM3WyOWV3Dtj2bHRMymzxP****",
        "Content-Type": "application/json"
    }
    
    response = requests.get(url, params=params, headers=headers)
    data = response.json()
    
    # 提取follow_up消息
    follow_up_messages = [msg for msg in data['data'] if msg['type'] == 'follow_up']
    print("用户回复建议:", follow_up_messages)
    Node.js示例:WebSocket对话完成后获取follow_up
    const WebSocket = require('ws');
    const axios = require('axios');
    
    const BOT_ID = 'your_bot_id';
    const ACCESS_TOKEN = 'your_access_token';
    
    const url = `wss://ws.coze.cn/v1/chat?bot_id=${BOT_ID}&authorization=Bearer ${ACCESS_TOKEN}`;
    const ws = new WebSocket(url);
    
    let conversationId;
    let chatId;
    
    ws.on('open', function open() {
      console.log('Connected to server.');
    });
    
    ws.on('message', function incoming(message) {
      const data = JSON.parse(message.toString());
      
      // 记录conversation_id和chat_id
      if (data.event_type === 'conversation.chat.created') {
        conversationId = data.data.conversation_id;
        chatId = data.data.id;
      }
      
      // 对话完成后获取follow_up消息
      if (data.event_type === 'conversation.chat.completed') {
        getFollowUpMessages(conversationId, chatId);
      }
    });
    
    async function getFollowUpMessages(conversationId, chatId) {
      try {
        const response = await axios.get('https://api.coze.cn/v3/chat/message/list', {
          params: {
            conversation_id: conversationId,
            chat_id: chatId
          },
          headers: {
            'Authorization': `Bearer ${ACCESS_TOKEN}`,
            'Content-Type': 'application/json'
          }
        });
        
        const followUpMessages = response.data.data.filter(msg => msg.type === 'follow_up');
        console.log('用户回复建议:', followUpMessages);
      } catch (error) {
        console.error('获取follow_up消息失败:', error);
      }
    }

    参考文档

    如果您在实施过程中遇到任何问题,请随时联系扣子技术支持团队获取帮助。{"msg_type":"empty result","data":"empty result","from_module":null,"from_unit":null}{"msg_type":"generate_answer_finish","data":"","from_module":null,"from_unit":null}{"msg_type":"generate_answer_finish","data":"{"finish_reason":0,"FinData":""}","from_module":null,"from_unit":null}

  2. ko300 commented on Apr 1, 2026

    @ko300
    Author

    {"code":4200,"detail":{"logid":"202604011904574CC7F151903FF21D086F"},"msg":"Resource not found"}

  3. ko300 commented on Apr 15, 2026

    @ko300
    Author

    研究了几天,websocket方式应该是后端就没有产生follow_up出来,估计得自己另外调用大模型处理了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions