必须通过API直连将扣子智能体嵌入App原生界面,需后端持有PAT令牌和机器人ID,先创建会话获取conversation_id,再以同步或流式方式发送消息,维持上下文需传递会话与消息ID,超时或错误需容错处理。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想把扣子智能体嵌入自己的App里,让客服、导购或知识问答功能直接跑在你家App的原生界面中,而不是跳转网页或弹出H5——这就必须走API直连,绕过Coze官方SDK和插件封装,自己构造请求、管理会话、处理流式响应。
获取身份凭证与机器人ID
打开扣子工作台首页 → 点击右上角头像 → 进入【API管理】→ 【服务身份与凭证】→ 点击【添加凭证】→ 有效期选“长期有效”,权限全勾,空间选“个人空间” → 生成后完整复制令牌(pat_xxx开头的一长串字符)。
新建或打开目标智能体 → 浏览器地址栏中找到 bot/后面那一串纯数字,就是机器人ID,例如 https://www.coze.cn/space/123/bot/73428668 中的 73428668。
注意:令牌和机器人ID缺一不可,且令牌不能泄露到前端代码中,必须由你的App后端代为持有并转发请求。
创建会话并维持上下文
调用Coze API前必须先创建会话,否则所有对话请求都会被拒绝。会话ID(conversation_id)是后续每轮消息的必需参数,它承载了用户本轮对话的全部记忆和状态。
向 https://api.coze.cn/v1/conversation/create 发起POST请求,Header带 Authorization: Bearer {你的pat令牌},Body为JSON:{"bot_id": "73428668"}。
成功响应后提取 data.id 字段值,这就是本次会话的唯一标识。它不是永久有效的,超过24小时未活跃会自动销毁,App需自行缓存并在下次请求前校验有效性。
发送消息并接收流式响应
方法一:非流式同步调用(适合简单问答)
向 https://api.coze.cn/v1/chat?conversation_id={id} 发起POST,Body含 {"message": "我想查轴承型号NU208的价格"},设置 stream=false。API立即返回完整JSON,字段 messages[0].content 即答案文本。
方法二:流式响应(推荐用于App内打字效果)
把 stream=true 加入URL参数,Header加 Accept: text/event-stream,Body同上。响应是逐块SSE格式数据,每块以 data: {...} 开头,需按行解析,提取 event: message 后的 data 字段中的 content 片段,拼接渲染。
注意:流式响应中若出现 event: error,说明智能体执行失败(如知识库未命中、插件调用超时),此时应中断当前流并提示用户“正在处理,请稍候”,不要强行拼接空内容。
处理多轮对话与上下文关联
第一步:每次用户新输入,都必须携带上一轮返回的 conversation_id 和最新 message_id(来自上条响应的 messages[0].id);
第二步:若用户长时间无操作(>15分钟),App应主动调用 /v1/conversation/close 关闭旧会话,再新建一个;
第三步:需要跨会话保留用户偏好(如预算、常用品牌),必须由App后端在首次会话中提取关键信息,写入自有数据库,下次新建会话时通过 additional_kwargs 注入初始上下文,例如:{"additional_kwargs": {"user_profile": {"budget": 5000, "preferred_brand": "NSK"}}。
这一步不做,智能体就记不住用户说过什么,每轮都像第一次见面。
错误排查与容错机制
遇到HTTP 401:检查pat令牌是否过期或复制漏字符,重新生成并更新后端配置;
遇到HTTP 404:确认bot_id是否为纯数字、是否输错位数,Coze不接受带字母或短横线的ID;
遇到HTTP 429:免费版限流100次/天,已超配额,需升级至进阶版;
响应中 status 为 failed 且 error_code 是 knowledge_not_found:说明知识库没覆盖该问题,App应 fallback 显示“暂未收录该信息,可联系人工客服”。
所有网络请求必须设置超时(建议8秒),避免用户长时间卡在“思考中”界面。


















