每日播报自定义接口
每日播报可以在设定时间从你的 HTTP 接口获取动态内容,并将接口返回内容追加到当天的播报中。接口由机器人服务主动请求,无需调用机器人系统的 API。
接入步骤
- 在“每日播报”中新建或编辑任务。
- 开启“自定义接口”。
- 填写完整的 HTTP 或 HTTPS 接口地址。
- 先点击“播报测试”检查实际内容,再保存并启用任务。
请求规范
| 项目 | 说明 |
|---|---|
| 请求方向 | 机器人服务器请求你的接口 |
| 请求方法 | GET |
| 地址格式 | 必须以 http:// 或 https:// 开头,生产环境建议使用 HTTPS |
| 请求参数 | 系统不额外添加参数;固定参数可写在 URL 查询字符串中 |
| 请求体 | 无 |
| 自定义请求头 | 暂不支持 |
| 超时时间 | 10 秒 |
| 成功条件 | 接口在 10 秒内返回 HTTP 2xx 响应 |
接口必须能被机器人所在服务器直接访问。请勿填写只能在浏览器本机或内网访问的地址,例如 localhost。
响应格式
接口可以返回纯文本或 JSON。最终内容前会自动加上“自定义播报:”,因此接口只需返回正文。
纯文本
建议返回 Content-Type: text/plain; charset=utf-8。
今日值班:张三
服务热线:400-000-0000
最终播报内容:
自定义播报:
今日值班:张三
服务热线:400-000-0000
JSON 对象
建议返回 Content-Type: application/json; charset=utf-8。JSON 对象会依次查找以下字段,并使用第一个非空字段作为正文:
contenttextmessagetitledesc
推荐格式:
{
"content": "今日订单 128 单\n待处理售后 3 单"
}
也可以使用其他上述字段:
{
"message": "系统运行正常"
}
如果对象不包含上述字段,系统会将所有非空字段转换为“字段名: 值”,每个字段占一行。例如:
{
"orders": 128,
"refunds": 3
}
会转换为:
orders: 128
refunds: 3
JSON 数组
数组中的每一项会按相同规则转换,然后用换行连接:
["第一条提醒", "第二条提醒"]
会转换为:
第一条提醒
第二条提醒
接口示例
Node.js 示例:
import http from "node:http";
http.createServer((_request, response) => {
response.writeHead(200, {
"Content-Type": "application/json; charset=utf-8",
});
response.end(
JSON.stringify({
content: "今日订单 128 单\n待处理售后 3 单",
})
);
}).listen(3000);
可先自行检查返回值:
curl --fail --max-time 10 https://example.com/api/daily-report
鉴权建议
当前不支持配置自定义请求头。如需鉴权,可以在 URL 中携带专用令牌:
https://example.com/api/daily-report?token=YOUR_PRIVATE_TOKEN
- 为每日播报单独创建权限最小化的只读令牌。
- 使用 HTTPS,避免令牌在传输过程中泄露。
- 定期轮换令牌,不要复用管理后台密码或其他高权限密钥。
- 接口日志中应隐藏查询字符串里的令牌。
失败处理
以下情况会导致本次播报内容生成失败:
- DNS 解析失败、连接失败或请求超过 10 秒。
- 接口返回 HTTP 4xx 或 5xx。
- 返回内容无法被正常读取。
可以在每日播报的“播报记录”中查看失败原因。上线前请使用“播报测试”确认群或用户实际收到的格式,并确保接口稳定返回非空 UTF-8 内容。