# n8n Chat Trigger API 规范（DataMeta 管理智能体）

本文档描述 `https://n8n.citupro.com/webhook/datameta-agent/chat` 的 API 规范与调用示例。

参考 URL：<https://n8n.citupro.com/webhook/datameta-agent/chat>

## 1. Endpoint

- URL: `https://n8n.citupro.com/webhook/datameta-agent/chat`
- Method: `POST`
- Content-Type: `application/json`

## 2. 请求体（Request Body）

```json
{
  "chatInput": "用户输入内容",
  "sessionId": "会话ID",
  "metadata": {
    "optional_key": "optional_value"
  }
}
```

字段说明：

- `chatInput` (string, 必填): 用户输入内容。
- `sessionId` (string, 建议必填): 会话唯一标识，用于多轮对话记忆。
- `metadata` (object, 可选): 额外信息（如用户ID、租户、语言等）。

## 3. 响应体（Response Body）

响应结构取决于 Chat Trigger 的 **Response Mode**：

- When Last Node Finishes: 返回最后节点输出（通常是 agent 回复内容）。
- Using Response Nodes: 返回 Chat / Respond to Webhook 节点中定义的消息。

常见示例：

```json
{
  "output": "这里是智能体的回复内容"
}
```

## 4. 调用示例

### 4.1 cURL

```bash
curl -X POST "https://n8n.citupro.com/webhook/datameta-agent/chat" \
  -H "Content-Type: application/json" \
  -d '{
    "chatInput": "查询ID为60的元数据",
    "sessionId": "session-001"
  }'
```

### 4.2 JavaScript (fetch)

```js
fetch("https://n8n.citupro.com/webhook/datameta-agent/chat", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    chatInput: "查看ID为60的元数据",
    sessionId: "session-001",
    metadata: { userId: "u-1001" }
  }),
})
  .then((res) => res.json())
  .then((data) => console.log(data));
```

### 4.3 Python (requests)

```python
import requests

url = "https://n8n.citupro.com/webhook/datameta-agent/chat"
payload = {
    "chatInput": "新增元数据，中文名测试字段",
    "sessionId": "session-001"
}

resp = requests.post(url, json=payload)
print(resp.status_code, resp.text)
```

## 5. 认证与跨域

- 如 Chat Trigger 配置了 Basic Auth 或 n8n User Auth，请在请求中携带认证信息。
- 浏览器跨域访问需在 Chat Trigger 中配置 Allowed Origin (CORS)。

## 6. 常见问题

**Q: 返回 403？**  
A: 反向代理未放行 `/webhook/chat/*` 或 workflow 未激活。

**Q: 浏览器报 CORS？**  
A: 未配置 Allowed Origin (CORS)。
