ZJY-TTS-003 API
API 开发文档
OpenAPI JSON

ZJY-TTS-003 HTTP API 开发文档

面向客户开发者,按电话、短信、结果查询和业务配置场景组织。

单文件离线打开全文搜索完整参数与示例响应与限制

电话与短信 API 快速入门

先用 SmartController 二层发现设备,再完成状态检查、拨号和短信发送。

1同一二层网络电脑与设备接入同一交换网络
2扫描 JYW记录设备列表中的 HTTP IP
3检查通信条件确认版本、SIM 和注册状态
4调用业务接口电话或短信;继续查询执行记录

1. 用 SmartController 发现设备 IP

安装并启动 SmartController 用户版。二层发现依赖 Npcap,不要求预先知道设备 IP,也不要求电脑与设备已经处于相同 IP 网段。

  1. 确保电脑和设备连接到同一二层网络;避免跨路由器、访客网络或开启客户端隔离的 Wi-Fi。
  2. 在“选择网卡”中选择连接设备网络的物理网卡。根据网卡名称和本机 IP 判断,不要选择 ZeroTier、VirtualBox、Hyper-V 等虚拟网卡。
  3. 点击“打开”,确认页面显示“二层设备发现可用(Npcap 已就绪)”。
  4. 点击“扫描设备”,在列表中找到类型为 JYW、设备类为 HTTP 的设备。
  5. 记录该设备的 IP;后续示例把它写入 $Base
SmartController 选择网卡页面
图 1:启动用户版后选择连接设备网络的物理网卡。
SmartController 二层扫描结果
图 2:真实二层扫描结果。截图中的 MAC 和 IMEI 已做隐私模糊;集成时主要记录 HTTP 设备的 IP。
扫描不到设备:先确认 Npcap 已就绪、选中了物理网卡、电脑和设备在同一二层网络。临时关闭会拦截原始以太网帧的安全软件后再试;不建议用“手动添加”代替二层发现来判断设备是否在线。

2. 设置设备地址并做调用前检查

以下命令使用 Windows 自带的 curl.exe。将示例 IP 替换为扫描结果。

$Base = 'http://192.168.1.109'

# 设备与 LTE 版本
curl.exe --noproxy "*" "$Base/api/status/version"

# SIM、移动网络、信号和固话线路
curl.exe --noproxy "*" "$Base/api/module/sys/signal"

4G 电话和短信的最低条件

字段期望值说明
code0还要同时确认 HTTP 状态为 2xx。
data.sim_card1设备已识别 SIM 卡。
data.sys_sta45模组已经启动并进入可用状态;5 表示信号较差。
data.rssi1..31数值越大通常信号越强;99 表示未知。
只使用固话拨号:检查 data.tel_line=1,然后把拨号路径换成 /api/module/call/tel

3. 发起一次 4G 电话

POST /api/module/call/dial

参数必填作用
num被叫号码;客户端应限制为 3–13 位数字。
tts接通后播报的文字;普通中文可直接使用。
curl.exe --noproxy "*" -X POST `
  -H "Content-Type: application/x-www-form-urlencoded" `
  --data-urlencode "num=13800138000" `
  --data-urlencode "tts=设备温度过高,请及时处理" `
  "$Base/api/module/call/dial"

典型接受响应:

{
  "code": 0,
  "msg": "ok",
  "data": {
    "dialing": true,
    "target": "13800138000",
    "mode": "4g",
    "has_tts": true,
    "ts": 1786579200
  }
}
dialing=true 只表示设备开始拨号,不能证明已经振铃、接通或完成播报。最终结果应查询电话记录。

查询最近 4G 电话记录:

curl.exe --noproxy "*" `
  "$Base/api/module/record/list?type=1&offset=1&count=10"

4. 发送一条短信

POST /api/module/sms/send

参数必填作用
num短信接收号码;客户端应限制为 3–13 位数字。
content短信正文,不能为空。
encoding推荐使用 utf8;默认也是 UTF-8。
curl.exe --noproxy "*" -X POST `
  -H "Content-Type: application/x-www-form-urlencoded" `
  --data-urlencode "num=13800138000" `
  --data-urlencode "content=设备温度过高,请及时处理" `
  --data "encoding=utf8" `
  "$Base/api/module/sms/send"

典型接受响应:

{
  "code": 0,
  "msg": "ok",
  "data": {
    "sent": true,
    "target": "13800138000",
    "len": 36,
    "encoding": "utf8",
    "ts": 1786579200
  }
}
sent=true 只表示发送动作已被接受,不是运营商送达报告。最终结果应查询已发送短信记录。

查询最近已发送短信记录:

curl.exe --noproxy "*" `
  "$Base/api/module/record/list?type=3&offset=1&count=10"

5. 客户端必须遵守的规则

请求规则

  • 只使用 GET 和 POST。
  • POST 使用 application/x-www-form-urlencoded,不要发送 JSON body。
  • 电话、短信文本建议使用 --data-urlencode 或等价表单编码。
  • 文本暂时不要包含双引号、反斜杠或控制字符。

结果判断

  • 同时判断 HTTP 2xx 和 JSON code=0
  • LTE 业务错误可能仍返回 HTTP 200。
  • 拨号/发送响应只代表动作开始。
  • 不要对会改变设备状态的请求进行无条件自动重试。
安全要求:设备 API 当前不建立 token、Cookie 或 session,也没有全局访问控制。设备只能部署在可信专网中;跨网络使用时必须由上层网关实施认证、授权、审计和限流。

6. 重要告警:使用可恢复的电话/短信任务

上面的即时接口最容易上手,适合人工联调和不担心重复执行的场景。涉及告警、自动重试、断电恢复或去重时,应改用:

用途接口关键能力
告警电话任务POST /api/module/queue/addsrc + rid + exp 防重复、过期控制和断电恢复
告警短信任务POST /api/module/smsq/addsrc + rid + exp 防重复、过期控制和断电恢复

查看告警电话与短信任务完整说明 →

7. 常见问题

现象优先检查
二层扫描不到设备Npcap、物理网卡、同一二层网络、交换机/Wi-Fi 客户端隔离。
Module timeoutLTE 模组状态、设备供电、是否有其他请求占用串口命令通道;不要立刻重复拨号。
reason=no_simSIM 是否安装、识别和可用。
reason=no_networksys_starssi、天线、套餐和运营商注册状态。
返回成功但对方没接到成功仅表示已接受;继续查询 /module/record/list 的最终记录。

HTML 文档中心 · 即时电话与短信详细说明 · 执行记录说明

电话功能开发

立即拨号与按键确认

4.1 发起 4G 电话:POST /api/module/call/dial#

用途:立即通过 SIM 发起一次语音呼叫。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
numform/querystring非空;建议 3–13 位数字被叫号码;当前即时接口未严格校验字符/长度。
ttsform/querystring默认空串;无公开长度上限接通后播报文本。无别名。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "num=13800138000" --data-urlencode "tts=设备温度过高,请检查" "$Base/api/module/call/dial"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "dialing": true,
    "target": "13800138000",
    "mode": "4g",
    "has_tts": true,
    "ts": 1786579200
  }
}

成功 datadialing=truetargetmode="4g"has_ttsts

错误与限制:无 SIM 返回 code=3reason=no_sim;启动失败为 dial_failed,并写入相应通话记录。dialing=true 不表示振铃、接听或播放完成。当前 C 层直接拼接 num/tts 到 JSON,没有 JSON 字符串转义;输入含双引号、反斜杠或控制字符可能导致模组报 JSON 解析错误,调用方应暂时拒绝这些字符。

4.2 发起固话电话:POST /api/module/call/tel#

用途:立即使用 RJ11 固话线路拨号。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
numform/querystring非空;建议 3–13 位数字被叫号码。
ttsform/querystring默认空串;无公开长度上限接通后播报文本。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "num=13800138000" --data-urlencode "tts=设备告警,请处理" "$Base/api/module/call/tel"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "dialing": true,
    "target": "13800138000",
    "mode": "tel",
    "has_tts": false,
    "ts": 1786579200
  }
}

成功 datadialing=truetargetmode="tel"has_ttsts

错误与限制:无线返回 code=3reason=no_tel_line;其他启动失败为 dial_failed。成功不等于接听。与 /call/dial 相同,num/tts 存在当前 JSON 转义缺陷。

4.3 发起按键确认电话:POST /api/module/call/dial_confirm#

用途:发起 4G 呼叫,接通后监听 DTMF;若收到按键 1,可把确认短信加入非告警短信队列。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
numform/querystring非空;建议 3–13 位数字被叫号码。
ttsform/querystring默认空串播报内容。
dtmf_timeoutform/queryinteger,秒默认 10;1–60超出范围或非数字时 MCU 静默改回 10,不是报错。
confirm_sms_contentform/querystring默认不发送仅非空时创建确认短信配置;按键 1 后以优先级 50 入短信队列。
confirm_sms_numform/querystring默认 num只有同时提供非空 confirm_sms_content 才生效。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "num=13800138000" --data-urlencode "tts=发生告警,按1确认" --data "dtmf_timeout=15" --data-urlencode "confirm_sms_content=告警已确认" "$Base/api/module/call/dial_confirm"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "dialing": true,
    "target": "13800138000",
    "mode": "4g",
    "has_tts": true,
    "has_confirm_sms": true,
    "dtmf_timeout": 10,
    "ts": 1786579200
  }
}

成功 datadialing=truetargetmode="4g"has_ttshas_confirm_sms、实际 dtmf_timeoutts

错误与限制:无 SIM/拨号失败同 4G 即时电话。确认短信只在按键 1 时入队,HTTP 成功时尚未发送;其非可恢复任务队列项没有调用方幂等键。通话记录可能使用 res=13(按 1)、14(按 2)、15(超时)。num/tts/confirm_sms_* 均由 C 层未转义拼接,存在同样 JSON 缺陷。

告警电话:防重复、排队与取消

3.1 添加电话:POST /api/module/queue/add#

用途:把 4G 或固话呼叫加入队列;提供防重复参数组时具有持久化与幂等语义。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
numform/querystring3–13 位 ASCII 数字被叫号码;普通模式和防重复模式都由 MCU 严格校验。
ttsform/querystring默认空串接通后播报内容。防重复任务构造器会正确 JSON 转义。
modeform/queryenum string默认 4g4g/tel呼叫通道;别名 typemode 优先。
priform/querynonnegative integer默认 100越小越优先;别名 prioritypri 优先。
srcform/query12-hex string条件必填rid 构成全局幂等键;防重复模式必须与 rid/exp 同时出现。
ridform/queryuint32条件必填0–4294967295来源请求号。
refform/querystring业务追踪号;单独出现也会触发防重复模式。
expform/queryinteger,Unix 秒条件必填now < exp <= now + ct + 300绝对过期时刻;不是 ttl
powershell
$Exp = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds() + 600
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "num=13800138000&mode=4g&pri=20&src=A1B2C3D4E5F6&rid=1001&exp=$Exp" --data-urlencode "ref=alarm-20260813-001" --data-urlencode "tts=机房温度过高,请处理" "$Base/api/module/queue/add"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "added": true,
    "id": "CALL_1786579200_1",
    "target": "13800138000",
    "mode": "4g",
    "priority": 100,
    "queue_size": 1,
    "ts": 1786579200,
    "src": "A1B2C3D4E5F6",
    "rid": 1,
    "ref": "alarm-42"
  }
}

首次成功 data

字段类型含义
addedbooleantrue 表示已接受。
idstringLTE 任务队列 ID。
targetstring被叫号码。
modestring4gtel
prioritynumber实际优先级。
queue_sizeinteger当前等待电话数,不含正在执行项。
tsinteger接受时 Unix 秒。
src/rid/refmixed防重复模式回显;未提供 ref 时可能省略。

重复提交 dataadded=truedup=1、原 idsrc/rid/refsta(已有动作状态,字符串:queued/running/final/cancelled/expired,与列表项的数字 sta 类型不同)。

错误与限制:成功只代表入队,最终结果查 /record/*。电话队列固定上限 10 条、短信 20 条,均含当前执行项;/queue/stat 不返回 max 字段,上限为编译期常量。

入队失败响应(HTTP 200,dataadded=false):

codereason触发条件额外字段
2invalid_num号码格式不符(3-13 位纯数字)-
2-num/mode 等参数缺失或非法err
3no_sim4G 模式无 SIM,入队前拦截并记失败记录targetmode
3no_tel_linetel 模式无线路,入队前拦截并记失败记录targetmode
3queue_full队列已满queue_size
3storage_unavailable持久化写入失败-
3expiredexp 已过期now
3clock_skewexp 超出窗口加 300 秒偏差now
4clock_invalid模组时钟不可信now

now 为模组当前 Unix 秒,便于客户端比对时钟偏差。

3.2 电话队列统计:GET /api/module/queue/stat#

用途:读取当前电话队列摘要。无请求 body,响应 application/json,约缓存 1.5 秒。

参数位置类型必填默认/范围作用、别名与联动
不接收过滤参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/queue/stat"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "pending": 1,
    "size": 1,
    "cur_num": ""
  }
}

成功 datapending 为等待/standby 数;size 为等待队列长度、不含当前通话;cur_num 为当前号码,无当前项时为空串。

错误与限制:只读且可能滞后约 1.5 秒。容量检查会把当前通话算入,因此 size<10 不必然表示还能加入 10-size 条。

3.3 电话队列列表:GET /api/module/queue/list#

用途:分页读取当前电话(排在首项)和待拨电话。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
srcquery12-hex string仅返回该来源,比较时统一大写。
offsetquerynonnegative integer默认 1;LTE 小于 1 改为 11-based 起始位置。
countquerynonnegative integer默认 20;有效 1–50,越界由 LTE 改回 20返回条数。无 limit 别名。
powershell
curl.exe --noproxy "*" -G --data "src=A1B2C3D4E5F6" --data "offset=1" --data "count=20" "$Base/api/module/queue/list"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cnt": 1,
    "total": 1,
    "offset": 1,
    "list": [
      {
        "num": "13800138000",
        "pri": 100,
        "sta": 0,
        "src": "A1B2C3D4E5F6",
        "rid": 1,
        "ref": "alarm-42",
        "exp": 1786579800
      }
    ]
  }
}

成功 datacnt 本页条数、total 过滤后总数、offsetlist。每个 list[] 固定含 numprista;带防重复标识的任务另含 src/rid/ref/exp(未设置的可省略)。sta:0 等待、1 正在呼出、2 已拨等待接听、3 已接通、4 TTS 完成、5 已结束、6 失败。

错误与限制:列表不返回 id、TTS 或 mode;当前项若匹配会放在待处理项之前。分页字段必须是无符号十进制文本,负数/小数由 MCU HTTP 400 拒绝。

3.4 当前电话:GET /api/module/queue/current#

用途:读取正在处理的电话。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
srcquery12-hex string若当前项来源不同,按不存在返回。
powershell
curl.exe --noproxy "*" -G --data "src=A1B2C3D4E5F6" "$Base/api/module/queue/current"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "exists": false
  }
}

成功 data:无匹配项为 exists=false;有项为 exists=truenum/pri/sta,带防重复标识的任务再带 src/rid/ref/exp

错误与限制:不返回设备侧 id、TTS、mode 或最终通话结果;最终结果必须查记录。

3.5 挂断当前电话:POST /api/module/queue/hangup#

用途:立即挂断当前队列电话。无业务 body,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
只作用于当前电话,不能指定号码或幂等键。
powershell
curl.exe --noproxy "*" -X POST "$Base/api/module/queue/hangup"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "hangup": true,
    "target": "13800138000",
    "ts": 1786579200
  }
}

成功 datahangup=truetargetts

错误与限制:没有当前通话时返回 HTTP 200、code=3hangup=falsereason=no_call;底层挂断失败为 hangup_failed。挂断会改变正在执行动作的最终记录。

3.6 删除一个电话动作:POST /api/module/queue/delete#

用途:按防重复任务键取消,或按号码删除第一个待处理电话。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
srcform/query12-hex string条件必填rid 必须成对;只要任一出现就优先走按任务标识取消。
ridform/queryuint32条件必填0–4294967295全局动作键的请求号。
numform/querystring条件必填3–13 位数字未提供 src/rid 时必填,只删除第一个匹配待处理电话。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "src=A1B2C3D4E5F6&rid=1001" "$Base/api/module/queue/delete"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "removed": true,
    "src": "A1B2C3D4E5F6",
    "rid": 1
  }
}

成功 data:带防重复标识的待处理项取消为 removed=true,src,rid;已是终态时幂等返回 removed=false,reason=already_final;按号码返回 removedtargetqueue_size

错误与限制:告警任务一旦开始,返回 code=5reason=already_started;找不到或存储失败为 code=3。按号码只作用于等待项,不挂断当前通话。当前 LTE 的 cancelAction(src,rid) 是电话/短信共用的全局函数,未核对通道;误把短信键传给此“电话”接口也可能取消短信动作。 调用方必须自行保持通道一致。本接口使用 POST;设备不解析 HTTP DELETE。

3.7 删除同号码全部待拨电话:POST /api/module/queue/delete_all#

用途:删除所有匹配号码的等待电话。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
numform/querystringMCU 仅要求非空;建议 3–13 位数字删除所有等待中的同号码项。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "num=13800138000" "$Base/api/module/queue/delete_all"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "removed_cnt": 2,
    "target": "13800138000",
    "queue_size": 0
  }
}

成功 dataremoved_cnttargetqueue_size

错误与限制:不影响当前执行电话。带防重复标识的任务被删除时会形成取消终态用于幂等;号码路径的 MCU 校验比 /queue/add 宽松,应由调用方保持数字格式。本接口使用 POST。

3.8 清空待拨电话:POST /api/module/queue/clear#

用途:清空全部等待电话。无业务 body,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
无过滤能力。
powershell
curl.exe --noproxy "*" -X POST "$Base/api/module/queue/clear"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cleared": true,
    "removed_cnt": 2,
    "queue_size": 0,
    "ts": 1786579200
  }
}

成功 datacleared=trueremoved_cntqueue_sizets

错误与限制:不挂断当前通话;带防重复标识的等待项会写取消终态。范围不可按来源限定,生产 UI 应二次确认。成功响应使用 removed_cnt 表示删除数量。

短信功能开发

发送短信与发送任务

5.1 发送短信:POST /api/module/sms/send#

用途:立即把短信交给模组发送接口;可能产生运营商费用。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
numform/querystring非空;建议 3–13 位数字接收号码;即时接口未严格校验。
contentform/querystring非空;无公开长度上限短信正文。
encodingform/querystring默认 utf8;约定 utf8/ucs2只有精确 ucs2 会先做 UTF-8→UCS2 转换;其他值按原字节发送并原样回显。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "num=13800138000" --data-urlencode "content=设备温度过高" --data "encoding=utf8" "$Base/api/module/sms/send"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "sent": true,
    "target": "13800138000",
    "len": 12,
    "encoding": "utf8",
    "ts": 1786579200
  }
}

成功 datasent=truetargetlen(UTF-8 正文字节数,不是字符数)、encodingts

错误与限制:code=3reasonno_simno_networksend_failedsent=true 只表示底层发送调用已接受,不是运营商送达报告;需要可恢复、可去重流程时用 /smsq/add。当前 C 层直接拼接 num/content/encoding没有 JSON 转义,正文含 "\ 或控制字符可能使请求失败。

4.1 添加短信:POST /api/module/smsq/add#

用途:把短信加入发送队列;防重复模式支持持久化和幂等,并可能产生运营商费用。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
numform/querystring3–13 位 ASCII 数字接收号码。
msgform/querystring默认空串短信正文;别名 contentmsg 优先。当前实现允许空短信入队。
priform/querynonnegative integer默认 100越小越优先;别名 priority
srcform/query12-hex string条件必填任务来源;与 rid/exp 联动。
ridform/queryuint32条件必填0–4294967295src 构成跨通道全局幂等键。
refform/querystring追踪号;单独出现会触发防重复模式。
expform/queryinteger,Unix 秒条件必填now < exp <= now + st + 300绝对过期时刻。
powershell
$Exp = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds() + 3600
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "num=13800138000&pri=30&src=A1B2C3D4E5F6&rid=1002&exp=$Exp" --data-urlencode "ref=alarm-20260813-002" --data-urlencode "msg=机房温度过高" "$Base/api/module/smsq/add"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "added": true,
    "id": "SMS_1786579200_1",
    "target": "13800138000",
    "priority": 100,
    "content_len": 12,
    "queue_size": 1,
    "ts": 1786579200,
    "src": "A1B2C3D4E5F6",
    "rid": 2,
    "ref": "alarm-42"
  }
}

首次成功 dataaddedidtargetprioritycontent_len(UTF-8 字节数)、queue_sizets;防重复模式另回显 src/rid/ref。重复返回 added=true,dup=1,id,src,rid,ref,sta

错误与限制:no_simqueue_fullstorage_unavailableexpiredclock_skew 等规则同电话;时钟不可信为 code=4。成功入队不是运营商送达。虽然正文在 HTTP 层可省略,真实业务应要求非空。防重复任务路径已做 JSON 转义。

4.2 短信队列统计:GET /api/module/smsq/stat#

用途:读取短信队列摘要。无业务参数,响应 application/json,约缓存 1.5 秒。

参数位置类型必填默认/范围作用、别名与联动
不接收过滤参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/smsq/stat"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "size": 1,
    "has_cur": false
  }
}

成功 datasize 是等待短信数,不含当前发送项;has_cur 表示是否有当前项。

错误与限制:只读且可能缓存 1.5 秒。响应不包含 pendingsending 字段。

4.3 短信队列列表:GET /api/module/smsq/list#

用途:分页读取当前和等待短信动作。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
srcquery12-hex string按任务来源过滤。
offsetquerynonnegative integer默认 1;小于 1 改为 11-based 起始位置。
countquerynonnegative integer默认 20;有效 1–50,越界回到 20返回条数;没有 limit 别名
powershell
curl.exe --noproxy "*" -G --data "offset=1" --data "count=20" "$Base/api/module/smsq/list"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cnt": 1,
    "total": 1,
    "offset": 1,
    "list": [
      {
        "num": "13800138000",
        "pri": 100,
        "sta": 0,
        "src": "A1B2C3D4E5F6",
        "rid": 2,
        "ref": "alarm-42",
        "exp": 1786582800
      }
    ]
  }
}

成功 datacnt/total/offset/list;每项为 num/pri/sta,带防重复标识的任务可带 src/rid/ref/exp。当前发送项排第一。

错误与限制:出于缩短响应和隐私考虑,列表不返回短信正文,也不返回设备侧 id;因此按 id 删除时应保存 /smsq/add 的响应。分页参数为 offset,count

4.4 清空待发短信:POST /api/module/smsq/clear#

用途:清空全部等待短信。无业务 body,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
无过滤能力。
powershell
curl.exe --noproxy "*" -X POST "$Base/api/module/smsq/clear"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cleared": true,
    "removed_cnt": 2,
    "queue_size": 0,
    "ts": 1786579200
  }
}

成功 datacleared=trueremoved_cntqueue_sizets

错误与限制:当前正在发送的短信不受影响;带防重复标识的等待项写取消终态。生产调用应二次确认。

4.5 删除一个短信动作:POST /api/module/smsq/delete#

用途:按防重复任务键或短信任务 ID 删除一个动作。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
srcform/query12-hex string条件必填rid 必须成对;任一出现时优先。
ridform/queryuint32条件必填0–4294967295告警任务键。
idform/querystring条件必填[A-Za-z0-9_]+未用 src/rid 时必填;通常来自 add 响应,如 SMS_<epoch>_<counter>
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "src=A1B2C3D4E5F6&rid=1002" "$Base/api/module/smsq/delete"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "removed": true,
    "id": "SMS_1786579200_1"
  }
}

成功 data:按任务标识取消为 removed=true,src,rid;已终结为 removed=false,reason=already_final;按 id 为 removed,id

错误与限制:已开始发送为 code=5,reason=already_started;找不到/存储失败为 code=3。与电话删除相同,src/rid 路径调用全局取消函数,错误通道的 endpoint 仍可能取消另一通道动作。本接口使用 POST;设备不解析 HTTP DELETE。

接收、读取和删除短信

2.1 收件箱统计:GET /api/module/inbox/stat#

用途:读取收件箱总数和未读数。无请求参数,响应 application/json,约缓存 1.5 秒。

参数位置类型必填默认/范围作用、别名与联动
不接收业务参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/inbox/stat"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cnt": 3,
    "max": 30,
    "unread": 1
  }
}

成功 datacnt 当前条数、max 容量(当前 30)、unread 未读条数。

错误与限制:只读;结果可能滞后约 1.5 秒。

2.2 收件箱列表:GET /api/module/inbox/list#

用途:按新到旧存储顺序分页读取短信摘要。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
offsetqueryinteger默认 1;合同范围 1–655351-based 起始位置;MCU 会把过小值钳到 1。
limitqueryinteger默认 10;合同范围 1–20返回条数;异常值可能被 MCU/LTE 归一化,不应依赖。
powershell
curl.exe --noproxy "*" -G --data "offset=1" --data "limit=10" "$Base/api/module/inbox/list"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cnt": 1,
    "total": 3,
    "offset": 1,
    "list": [
      {
        "id": 15,
        "num": "10086",
        "preview": "余额20.00元",
        "ts": 1786579200,
        "read": false
      }
    ]
  }
}

成功 datacnt 本页条数、total 总条数、offsetlist。每个 list[]

字段类型含义
idinteger收件箱任务 ID,供 read/delete/mark。
numstring发信号码。
previewstring最多 10 个 UTF-8 字符的正文预览。
tsinteger,Unix 秒接收时间。
readboolean是否已读。

错误与限制:列表不返回完整正文,也不会把短信标为已读。

2.3 读取一条短信:GET /api/module/inbox/read#

用途:读取完整正文;读取动作会自动标记为已读并保存。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
idqueryinteger合同范围 1–65535来自 /inbox/list。无别名。
powershell
curl.exe --noproxy "*" -G --data "id=15" "$Base/api/module/inbox/read"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": 15,
    "num": "10086",
    "content": "余额20.00元",
    "ts": 1786579200,
    "read": true
  }
}

成功 dataidnum、完整 contenttsread=true

错误与限制:不存在返回 HTTP 200、code=3err=sms not foundid。读取不是纯查询:未读短信会持久变为已读。当前 MCU 用 atoi 后截为 uint16,调用方必须严格传十进制合法 ID。

2.4 删除短信:POST /api/module/inbox/delete#

用途:删除单条、全部或全部已读短信。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
idform/queryinteger条件必填1–65535删除单条。只要解析后 id>0,优先于两个批量标志。
allform/queryboolean-like条件必填仅精确 1/true 为真未提供有效 id 时删除全部;优先于 read_only
read_onlyform/queryboolean-like条件必填仅精确 1/true 为真未提供 id/all 时删除全部已读。

三种模式至少选一个;有效优先级为 id > all > read_only

powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "read_only=true" "$Base/api/module/inbox/delete"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "deleted": true,
    "mode": "single",
    "id": 15
  }
}

成功 data:单条为 deleted=true,mode=single,id;全部为 deleted=true,mode=all,cnt;已读为 deleted=true,mode=read,cnt

错误与限制:缺少选择器由 MCU HTTP 400;单条不存在为 HTTP 200、code=3deleted=false,err=sms not found,id。删除不可恢复。

2.5 标记已读:POST /api/module/inbox/mark#

用途:标记一条或全部短信已读。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
idform/queryinteger条件必填1–65535标记单条。
allform/queryboolean-like条件必填1/true 为真标记全部;若与 id 同时有效,all 优先。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "all=true" "$Base/api/module/inbox/mark"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "marked": true,
    "mode": "single",
    "id": 15
  }
}

成功 data:单条为 marked=true,mode=single,id;全部为 marked=true,mode=all,cnt,其中 cnt 是本次从未读改为已读的数量。

错误与限制:单条不存在返回 code=3,marked=false,err=sms not found,id;缺参为 HTTP 400。操作持久化且没有“标记未读”接口。

查询执行结果

电话和短信执行概况

3.1 综合统计:GET /api/module/stat/all#

用途:一次读取首页常用的队列、记录、短信队列和收件箱摘要。无请求参数,响应 application/json,约缓存 2 秒。

参数位置类型必填默认/范围作用、别名与联动
不接收筛选参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/stat/all"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "queue": {
      "pending": 0,
      "size": 0,
      "cur_num": ""
    },
    "records": {
      "c4g": 1,
      "tel": 0,
      "sms_s": 2,
      "sms_r": 3,
      "total": 6,
      "max": 30
    },
    "sms": {
      "queue_size": 0,
      "has_cur": false
    },
    "inbox": {
      "cnt": 3,
      "max": 30,
      "unread": 1
    },
    "ts": 1786579200
  }
}

成功 data

路径类型含义
queue.pendinginteger等待电话数。
queue.sizeinteger电话等待队列长度,不含当前项。
queue.cur_numstring当前通话号码或空串。
records.c4g/tel/sms_sobject每类含 ok/err/total/rate,rate 为向下取整百分比。
records.sms_r.totalinteger接收短信记录总数。
records.totalinteger四类当前记录总数。
records.maxinteger每一类的容量,当前 30;不是四类合计容量。
sms.queue_sizeinteger等待短信数。
sms.has_curboolean是否有当前短信。
inbox.cnt/max/unreadinteger收件箱统计。
tsinteger,Unix 秒统计生成时间。

错误与限制:聚合数据不是原子事务快照,各子系统可在计算过程中变化;再加约 2 秒缓存,不能用于精确取消决策。

查询和统计执行记录

4.1 记录数量:GET /api/module/record/stat#

用途:读取各类型记录数量。无请求参数,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不接收 type
powershell
curl.exe --noproxy "*" "$Base/api/module/record/stat"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "c4g": 1,
    "tel": 0,
    "sms_s": 2,
    "sms_r": 3,
    "total": 6,
    "max": 30
  }
}

成功 datac4gtelsms_ssms_r 为各类条数,total 为合计,max每类容量 30。

错误与限制:响应使用本节列出的平铺计数字段,max 固定为每类 30 条。

4.2 单类成功率:GET /api/module/record/rate#

用途:统计一个记录类型的成功/失败率。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
typequeryinteger enum默认 1;1–4见本文类型表;必须是数字。
powershell
curl.exe --noproxy "*" -G --data "type=1" "$Base/api/module/record/rate"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "ok": 9,
    "err": 1,
    "total": 10,
    "rate": 90
  }
}

成功 dataokres=1..99 条数,errres>=100 条数,total 为总条数,rate=floor(ok*100/total),无记录为 0。

错误与限制:type 越界为 LTE code=2res=0 会让 ok+err<total;接口只统计指定类别,不返回四类聚合对象。

4.3 分页列出记录:GET /api/module/record/list#

用途:分页读取某一类最近记录,可按任务来源过滤。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
typequeryinteger enum默认 1;1–4记录类型;必须数字。
offsetqueryinteger默认 1;1–655351-based 起点。
countqueryinteger默认 10;合同范围 1–15HTTP 层最大 15;没有 limit 别名
srcquery12-hex string只返回该告警任务来源,设备统一转大写比较。
powershell
curl.exe --noproxy "*" -G --data "type=1" --data "offset=1" --data "count=10" --data "src=A1B2C3D4E5F6" "$Base/api/module/record/list"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cnt": 1,
    "total": 1,
    "offset": 1,
    "list": [
      {
        "id": 1,
        "num": "13800138000",
        "res": 12,
        "dir": 0,
        "ts": 1786579200,
        "dur": 30,
        "src": "A1B2C3D4E5F6",
        "rid": 1,
        "ref": "alarm-42"
      }
    ]
  }
}

成功 datacnt 本页条数、total 过滤后总数、offsetlist。每项字段:

字段类型/单位含义
idinteger记录 ID。
numstring对端号码。
resinteger结果码,见上表。
dirinteger0 呼出/发送,1 呼入/接收。
tsinteger,Unix 秒记录时间。
durnumber,秒通话时长;仅有值时返回。
cntstring短信正文预览,仅短信类型且有正文时返回;最多截取 60 字节后追加省略号。
src/rid/refmixed告警任务关联字段;存在才返回。

错误与限制:type 越界为 code=2src 格式错为 HTTP 400。60 字节预览使用简单字节截断,极端情况下可能切开 UTF-8 多字节字符;完整短信记录按号码使用 /record/gettype 必须使用数字,分页数量参数为 count

4.4 按号码取记录:GET /api/module/record/get#

用途:读取某一号码、某一类型的最近记录。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
numquerystring3–13 位 ASCII 数字精确号码匹配。
typequeryinteger enum默认 1;1–4必须数字。
srcquery12-hex string进一步按任务来源过滤。
powershell
curl.exe --noproxy "*" -G --data "num=13800138000" --data "type=3" "$Base/api/module/record/get"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cnt": 1,
    "total": 1,
    "offset": 1,
    "list": [
      {
        "id": 1,
        "num": "13800138000",
        "res": 12,
        "dir": 0,
        "ts": 1786579200,
        "dur": 30
      }
    ]
  }
}

成功 data/record/listcnt/total/offset/list,但 HTTP 固定使用 LTE 默认 offset=1,count=10;短信项 cnt 返回已保存的完整正文(入库上限 600 字节)。

错误与限制:号码/src 本地格式错为 HTTP 400,type 越界为 LTE code=2。本接口不接受 limit/count/offset 参数,固定返回最多 10 条。

4.5 失败类别统计:GET /api/module/record/fail#

用途:按失败原因大类统计一种记录。请求参数在 query,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
typequeryinteger enum默认 1;1–4必须数字。
powershell
curl.exe --noproxy "*" -G --data "type=1" "$Base/api/module/record/fail"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "net": 1,
    "dev": 0,
    "remote": 2,
    "timeout": 1,
    "other": 0
  }
}

成功 datanet 对应 100–199,dev 200–299,remote 300–399,timeout 400–499,other 为其余错误(主要 >=500)。

错误与限制:不返回 unknownsuccess 计数;如需总数需结合 /record/rate/record/stat

4.7 综合记录报告:GET /api/module/record/report#

用途:读取四类记录的汇总报告。无业务参数,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
本接口不接受业务参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/record/report"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "c4g": {
      "ok": 9,
      "err": 1,
      "rate": 90,
      "total": 10
    },
    "tel": {
      "ok": 0,
      "err": 0,
      "rate": 0,
      "total": 0
    },
    "sms_s": {
      "ok": 2,
      "err": 0,
      "rate": 100,
      "total": 2
    },
    "sms_r": {
      "total": 3
    }
  }
}

成功 datac4gtelsms_s 各含 ok/err/rate/totalsms_r 仅含 total

错误与限制:这是当前最多 30 条/类的内存与持久记录汇总,不支持按日期区间统计;days 不是有效参数。

接入检查与业务配置

设备版本、LTE 版本和信号

GET /api/status/version#

用途: 一次获取 MCU 与 LTE 模组的组合版本,适合建立设备兼容性基线。

请求

  • 正式方法与路径:GET /api/status/version
  • 请求 Content-Type:无请求体,不需要
  • 成功响应 Content-Type:application/json
位置参数类型必填默认范围/格式作用陷阱
本接口没有参数需要 MCU 与 LTE 串口通信正常,响应不是纯本机查询
powershell
curl.exe --noproxy "*" "http://192.168.1.108/api/status/version"

当前配套 LTE 固件的成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "mcu": {"version": "2.0.7"},
    "module": {
      "ver": "V5.0.0JY",
      "sys": "2.0.11",
      "imei": "123456789012345",
      "cap": 2,
      "cobs": 1
    }
  }
}
字段类型说明
data.mcu.versionstringMCU 三段式版本
data.module.verstringLTE 业务应用版本标识
data.module.sysstringLTE 应用/系统版本
data.module.imeistringLTE 模组 IMEI;应按字符串保存,不能按数字处理
data.module.capintegerLTE 动作执行能力版本
data.module.cobsinteger1 表示支持当前 COBS 串口帧能力

module 的内容由 LTE 固件透传,不同 LTE 固件版本的字段集合可能不同;调用方必须容忍扩展。

常见错误与限制:

  • HTTP 503 Failed to send commandModule timeoutModule communication failedToo many concurrent requests
  • LTE 业务错误使用 HTTP 200,但 body 的 code1..5,分别表示未知命令、参数 错误、执行错误、未就绪、忙;不能只判断 HTTP 200。
  • 无持久化影响,但会占用一次 MCU↔LTE 请求上下文,默认超时约 10 秒。

2.1 心跳:GET /api/module/sys/ping#

用途:验证 MCU 到 Air724 的应用协议链路。请求无 body,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不接收业务参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/sys/ping"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "pong": 1786579200
  }
}

成功 data

字段类型/单位含义
ponginteger,Unix 秒Air724 当前时间;不是布尔值。若模块时钟未同步,数值可能不可信。

错误与限制:无业务影响;链路失败按通用 503 处理。它只证明本次请求可往返,不证明 SIM、网络或固话线可用。

2.2 模块版本:GET /api/module/sys/version#

用途:读取 Air724 应用版本、能力与当前串口传输层。请求无 body,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不接收业务参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/sys/version"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "ver": "V5.0.0JY",
    "sys": "2.0.11",
    "imei": "860000000000000",
    "cap": 1,
    "cobs": 1,
    "link": "cobs"
  }
}

成功 data

字段类型含义
verstringLTE APP 版本,例如 V5.0.0JY
sysstring模组系统版本标识。
imeistring模组 IMEI;初始化早期可能为空。
capinteger能力位;当前告警任务 V2 使用 bit0。应按位判断,不要把整个数写死为 1。
cobsintegerCOBS 支持标志,当前为 1
linkstring本次请求实际使用的链路,通常为 legacycobs

错误与限制:无影响。该接口只返回 LTE 模组版本,不含 MCU 版本;系统聚合版本应使用 /api/status/version

2.3 信号与线路:GET /api/module/sys/signal#

用途:查看蜂窝网络、SIM 与 RJ11 线路的即时状态。请求无 body,响应 application/json。结果缓存约 2 秒。

参数位置类型必填默认/范围作用、别名与联动
不接收业务参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/sys/signal"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "rssi": 20,
    "sys_sta": 4,
    "net_mode": "4G",
    "mnc": "00",
    "iccid": "",
    "call_result": 0,
    "unread_sms": 0,
    "tel_line": 1,
    "sim_card": 1
  }
}

成功 data

字段类型/范围含义
rssiinteger,0–31;99 未知CSQ 信号等级,越大通常越强。
sys_stainteger,0–50 无响应、1 启动中、2 无 SIM、3 连接中、4 就绪且信号良好、5 就绪但信号不良。
net_modestring当前网络制式文本,例如 4G
mncstring当前运营商/MNC 文本。
iccidstringSIM ICCID。
call_resultinteger模组当前/最近一次通话结果状态;不是记录管理的 res 完整枚举。
unread_smsinteger,条未读短信计数。
tel_lineinteger1 有固话线,0 无线。
sim_cardinteger1 有 SIM,0 无卡。

错误与限制:无影响;数据可能来自 2 秒缓存。sys_sta=4 也不能替代业务接口的最终执行结果。

电话与短信运行参数

3.1 基础身份配置:GET /api/module/config/basic#

用途:读取模组身份和版本的最小集合。请求无 body,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不接收业务参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/config/basic"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "ver": "V5.0.0JY",
    "sys": "2.0.11",
    "imei": "860000000000000"
  }
}

成功 dataver 为 LTE APP 版本,sys 为系统版本,imei 为设备 IMEI。

错误与限制:本接口不返回任何 TTS/DTMF 参数;需要运行配置请使用 /config/all

3.2 全部运行配置:GET /api/module/config/all#

用途:读取当前电话、DTMF 与 TTS 配置。请求无 body,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不接收业务参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/config/all"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "call_interval": 30,
    "hook_hold_time": 1000,
    "dtmf_level": 5,
    "dtmf_wait": 500,
    "dtmf_interval": 300,
    "tts_level": 5,
    "tts_wait": 500,
    "tts_interval": 1000,
    "tts_speed": 50,
    "tts_count": 1,
    "conn_check": 1,
    "call_list_cnt": 10,
    "first_dtmf_interval": 500,
    "no_answer_timeout": 30000
  }
}

成功 data 字段:

字段类型/单位合法业务范围与含义
call_intervalinteger,秒20–250;电话动作间隔。
hook_hold_timeinteger,ms建议 0–4000;挂机控制保持时间。
dtmf_levelinteger0–7;DTMF 音量。
dtmf_waitinteger,ms建议 0–4000;开始 DTMF 前等待。
dtmf_intervalinteger,ms建议 0–2000;DTMF 数字间隔。
tts_levelinteger0–7;TTS 音量。
tts_waitinteger,ms建议 0–4000;TTS 开始等待。
tts_intervalinteger,ms建议 0–10000;TTS 播放间隔。
tts_speedinteger0–100;TTS 语速。
tts_countinteger,次0–10;TTS 播放次数。
conn_checkinteger0/1;连接/极性检测开关。
call_list_cntinteger,条1–20;底层通话列表计数配置,HTTP 只读。
first_dtmf_intervalinteger,ms建议 0–2000;首个 DTMF 间隔。
no_answer_timeoutinteger,ms5000–120000;无人接听超时,HTTP 只读。

错误与限制:无影响。响应包含 no_answer_timeouttts_leveldtmf_level 的有效范围均为 0–7。

3.3 修改运行配置:POST /api/module/config/set#

用途:增量修改电话、DTMF 与 TTS 参数。请求 application/x-www-form-urlencoded,响应 application/json。至少提供一个受支持字段;未提供字段保持不变。

参数位置类型必填默认/范围作用、别名与联动
call_intervalform/queryinteger,秒20–250电话间隔。
hook_hold_timeform/queryinteger,ms0–4000挂机保持。
dtmf_levelform/queryinteger0–7DTMF 音量。
dtmf_waitform/queryinteger,ms0–4000DTMF 开始等待。
dtmf_intervalform/queryinteger,ms0–2000DTMF 间隔。
first_dtmf_intervalform/queryinteger,ms0–2000首个 DTMF 间隔。
tts_levelform/queryinteger0–7TTS 音量。
tts_waitform/queryinteger,ms0–4000TTS 开始等待。
tts_intervalform/queryinteger,ms0–10000TTS 间隔。
tts_speedform/queryinteger0–100TTS 语速。
tts_countform/queryinteger,次0–10TTS 播放次数。
conn_checkform/queryinteger0 或 1连接检测开关。

无字段别名;call_list_cntno_answer_timeout 虽由 LTE 底层识别,但 MCU HTTP 白名单不转发,不能通过本接口设置。

powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "tts_level=6&call_interval=30&tts_speed=50" "$Base/api/module/config/set"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "set_count": 2
  }
}

成功 dataset_count 是 LTE 端遍历到的“尝试设置字段数”。

错误与限制:无受支持字段为 HTTP 400。当前 MCU 用 atoi 转换,非数字会变成 0;Air724 多数保存函数只校验上限、不校验下限,因此调用方必须遵守表中非负下限。更重要的是,底层拒绝越界值时仍可能返回 code=0set_count 增加;写后必须再 GET /config/all 回读验收。配置持久化会影响后续呼叫。

TTS 发音词典

2.1 读取词典:GET /api/module/tts/get#

用途:读取内置默认词典和全部用户词典。无请求参数,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不接收过滤/分页参数。
powershell
curl.exe --noproxy "*" "$Base/api/module/tts/get"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "default_dict": {
      "重庆": "重 qing"
    },
    "user_dict": {},
    "default_count": 1,
    "user_count": 0
  }
}

成功 data

字段类型含义
default_dictobject<string,string>内置原文→替换文本,不可由 HTTP 直接修改。
user_dictobject<string,string>用户原文→替换文本;同 key 覆盖默认值。
default_countinteger默认条目数。
user_countinteger用户条目数。

错误与限制:词典较大时响应也会变大;接口没有分页。返回对象键顺序没有业务含义。

2.2 新增或修改词条:POST /api/module/tts/set#

用途:以 upsert 语义持久设置一个用户词条。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
keyform/querystring非空;无公开长度上限要匹配的原文。无别名。
valform/querystring可为空;无公开长度上限替换后的播报文本;空串等于把 key 从播报文本中删除。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "key=人行通道" --data-urlencode "val=仁航通道" "$Base/api/module/tts/set"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "updated": true,
    "user_count": 1
  }
}

成功 dataupdated=trueuser_count(写入后的用户条目数)。

错误与限制:缺 key/val 为 HTTP 400;持久化失败为 HTTP 200、code=3updated=false,reason=save_failed。当前 lte_api.csnprintf 直接把 key/val 拼进 JSON,未执行 JSON 字符串转义;双引号、反斜杠、换行或其他控制字符可能使命令解析失败,调用方应暂时拒绝这些字符。写后建议 GET 回读并做一次真实 TTS 播放验收。

2.3 删除用户词条:POST /api/module/tts/del#

用途:删除一个用户词条;若默认词典有同名 key,删除后重新显露默认替换。请求 application/x-www-form-urlencoded,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
keyform/querystring非空只删除用户词典中的同名条目。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "key=人行通道" "$Base/api/module/tts/del"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "deleted": true,
    "user_count": 0
  }
}

成功 datadeleted=trueuser_count。删除不存在的 key 也可能在保存成功后返回 deleted=true,可按幂等操作使用。

错误与限制:保存失败为 code=3,deleted=false,reason=save_failedkey 同样存在当前 JSON 转义缺陷。默认词典条目本身不能删除;若要覆盖默认读音,可设置同名用户条目。

2.4 清空用户词典:POST /api/module/tts/clear#

用途:清除所有用户词条,恢复仅使用内置默认词典。无业务 body,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不能按前缀或部分清除。
powershell
curl.exe --noproxy "*" -X POST "$Base/api/module/tts/clear"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "cleared": true
  }
}

成功 datacleared=true

错误与限制:保存失败为 code=3,cleared=false,reason=save_failed。不会清除内置默认词典。操作不可从设备侧撤销,清空前应先 GET 导出 user_dict

SIM 余额查询

3.1 余额简报:GET /api/module/balance/info#

用途:读取最近一次成功解析的余额。无请求参数,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不会主动发起查询。
powershell
curl.exe --noproxy "*" "$Base/api/module/balance/info"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "balance": 20.0,
    "trigger": "manual",
    "ts": 1786579200,
    "sms_id": 15
  }
}

成功 data

字段类型/单位含义
balancenumber,元(业务约定)最近解析余额;初始可能为 0。
triggerstring最近余额来源触发,例如 manualalarm_testsim_insert 等。
tsinteger,Unix 秒最近成功解析回复的时间;0 表示尚无。
sms_idinteger对应收件箱短信 ID;0 可能表示尚无。

错误与限制:当前简报不返回设备侧 has_balance。因此不能只凭 balance=0 判断真实欠费,应结合 ts>0 和有效 sms_id;过期程度由调用方根据 ts 判断。

3.2 读取任务配置:GET /api/module/balance/get#

用途:读取当前持久余额任务配置。无请求参数,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
不会发短信。
powershell
curl.exe --noproxy "*" "$Base/api/module/balance/get"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "enabled": 1,
    "interval_hours": 24,
    "threshold": 10,
    "query_num": "10086",
    "query_text": "CXYE",
    "reply_num": "10086",
    "parse_keyword": "余额",
    "parse_end_keyword": "元",
    "alarm_numbers": [
      "13800138000"
    ]
  }
}

成功 data

字段类型/默认含义
enabledinteger,默认 01 开启周期自动查询,0 关闭。
interval_hoursnumber,默认 24自动查询间隔小时,范围 1–720。
thresholdnumber,默认 10自动模式余额低于该值时告警,约定单位元。
query_numstring,默认空运营商查询短信号码。
query_textstring,默认空发送给运营商的查询正文。
reply_numstring,默认空预期回复号码;为空时不限制回复方。为避免无关短信被误解析,生产配置建议明确填写。
parse_keywordstring,默认空余额数值前关键字;空时尝试内置中文关键字。
parse_end_keywordstring,默认空余额字段的结束标记,例如
alarm_numbersstring[],默认空数组低余额/测试告警接收人。

错误与限制:这是配置快照,不包含当前是否正在查询、最后错误或 has_balance

3.3 修改任务配置:POST /api/module/balance/set#

用途:增量修改并持久化余额任务;enabled=1 会建立周期网络侧短信查询,可能持续产生费用。请求 application/x-www-form-urlencoded,响应 application/json。至少提供一个字段,未提供字段保持原值;传空字符串可清空对应文本字段。

参数位置类型必填默认/范围作用、别名与联动
enabledform/queryboolean/integertrue1 启用;false/0/其他非负整数关闭开启后按 interval_hours 周期查询。
interval_hoursform/queryinteger,小时输入会钳到 1–720周期查询间隔。
thresholdform/querynonnegative decimal,元默认已有值;无上限自动模式解析余额 < threshold 时发告警。
query_numform/querystring可空查询目标;保存时去空白和连字符。
query_textform/querystring可空查询短信正文。
reply_numform/querystring可空;空表示不限制回复方预期回复发送方。只有在“解析失败是否立即结束本次查询”的判断中,空值才退回用 query_num 识别运营商回复。
parse_keywordform/querystring可空使用纯文本精确查找,不是正则。
parse_end_keywordform/querystring可空截止余额字段。
alarm_numbersform/querystring可空多号码用 ASCII 逗号、分号或换行分隔;去空白/连字符并去重。
alarm_numform/querystringalarm_numbers 的单号码别名;两者都有时 alarm_numbers 优先。
powershell
curl.exe --noproxy "*" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "enabled=1&interval_hours=24&threshold=20" --data-urlencode "query_num=10086" --data-urlencode "query_text=CXYE" --data-urlencode "reply_num=10086" --data-urlencode "parse_keyword=当前余额" --data-urlencode "parse_end_keyword=元" --data-urlencode "alarm_numbers=13800138000,13900139000" "$Base/api/module/balance/set"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "enabled": 1,
    "interval_hours": 24,
    "threshold": 10,
    "query_num": "10086",
    "query_text": "CXYE",
    "reply_num": "10086",
    "parse_keyword": "余额",
    "parse_end_keyword": "元",
    "alarm_numbers": [
      "13800138000"
    ]
  }
}

成功 data:返回完整归一化配置,字段同 /balance/get

错误与限制:无字段为 HTTP 400;数字语法错为 HTTP 400。interval_hours 越界不会报错而会钳位,必须读响应/GET 回读。配置保存成功不证明查询号码、关键字或运营商短信格式正确。启用前应先 POST /balance/query 并确认 /balance/info.ts 更新,再决定是否开启周期任务。HTTP 层对字符串做了 JSON 转义,不受 TTS 接口的转义缺陷影响。

3.4 手动查询:POST /api/module/balance/query#

用途:立即向 query_num 发送一次 query_text,等待回复并更新余额;手动模式不触发阈值告警;可能产生短信费用。无业务参数,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
使用已保存的余额配置。
powershell
curl.exe --noproxy "*" -X POST "$Base/api/module/balance/query"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "querying": true,
    "mode": "manual",
    "trigger": "manual",
    "target": "10086",
    "timeout_ms": 10000,
    "ts": 1786579200
  }
}

成功 dataquerying=truemode="manual"trigger="manual"target(query_num)、timeout_ms=10000ts

错误与限制:query_num/query_text 为空返回 code=2,err=query_config_incomplete;已有查询为 code=5,err=query_pending;无 SIM、无网络、发送失败等为 code=3。成功只表示查询短信已发起,不表示收到或解析了回复;10 秒后再 GET /balance/info,确认 ts 变为本次之后。手动模式不会按 threshold 发告警。

3.5 查询并测试告警:POST /api/module/balance/test#

用途:发余额查询;若 10 秒内成功解析回复,无论 threshold 都向全部 alarm_numbers 发送测试告警,可能一次产生多条短信费用。无业务参数,响应 application/json

参数位置类型必填默认/范围作用、别名与联动
使用已保存配置;要求 query 配置和至少一个告警号码。
powershell
curl.exe --noproxy "*" -X POST "$Base/api/module/balance/test"

成功响应示例:

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "querying": true,
    "mode": "test",
    "trigger": "alarm_test",
    "target": "10086",
    "timeout_ms": 10000,
    "ts": 1786579200
  }
}

成功 dataquerying=truemode="test"trigger="alarm_test"targettimeout_ms=10000ts

错误与限制:无告警号码为 code=2,err=alarm_numbers_empty;查询配置不完整为 code=2;已有查询为 code=5;网络/短信错误为 code=3。HTTP 成功时尚未收到回复,也尚未证明告警短信发送成功;测试告警正文前缀为“余额告警测试:”。

开发前必读

本页包含客户业务集成所需的 HTTP 接口。

项目调用约定
设备地址http://<device-ip>/api/...
HTTP 方法只使用文档标出的 GETPOST
POST 参数使用 application/x-www-form-urlencoded;不要发送 JSON body。
结果判断同时判断 HTTP 状态和 JSON 顶层 codecode=0 才表示请求已被接受。
电话和短信即时接口返回成功只表示开始执行;最终结果通过记录接口查询。
重试即时拨号和短信超时后不要直接重发。需要防重复时使用带 src + rid + exp 的任务接口。
网络部署设备接口不建立 token、Cookie 或 session,只能部署在可信网络或受认证网关之后。

接口总表

下面的排列顺序与左侧开发目录一致。

方法路径用途
POST/api/module/call/dial立即排队 4G 呼叫
POST/api/module/call/tel立即排队固话呼叫
POST/api/module/call/dial_confirm发起按键确认 4G 电话
POST/api/module/queue/add加入电话队列
GET/api/module/queue/stat获取电话队列统计
GET/api/module/queue/list获取电话队列列表
GET/api/module/queue/current获取当前电话动作
POST/api/module/queue/hangup挂断当前电话
POST/api/module/queue/delete取消单个电话动作
POST/api/module/queue/delete_all按号码取消全部等待电话
POST/api/module/queue/clear清空等待电话队列
POST/api/module/sms/send立即排队发送短信
POST/api/module/smsq/add加入短信队列
GET/api/module/smsq/stat获取短信队列统计
GET/api/module/smsq/list获取短信队列列表
POST/api/module/smsq/clear清空等待短信队列
POST/api/module/smsq/delete取消单个短信动作
GET/api/module/inbox/stat获取短信收件箱统计
GET/api/module/inbox/list分页获取短信收件箱
GET/api/module/inbox/read读取短信正文并标记已读
POST/api/module/inbox/delete删除收件箱短信
POST/api/module/inbox/mark标记短信已读
GET/api/module/stat/all获取 LTE 业务综合统计
GET/api/module/record/stat获取四类记录数量
GET/api/module/record/rate获取单类成功率
GET/api/module/record/list分页获取单类记录
GET/api/module/record/get按号码获取最近记录
GET/api/module/record/fail获取单类失败分类
GET/api/module/record/report获取全量记录汇总
GET/api/status/version获取 MCU 与 LTE 聚合版本
GET/api/module/sys/ping检查 LTE 命令链路
GET/api/module/sys/version获取 LTE 版本与能力
GET/api/module/sys/signal获取 LTE 信号和线路状态
GET/api/module/config/basic获取 LTE 基本身份
GET/api/module/config/all获取 LTE 全部电话配置
POST/api/module/config/set保存 LTE 电话配置
GET/api/module/tts/get获取 TTS 多音字词典
POST/api/module/tts/set新增或覆盖用户 TTS 词条
POST/api/module/tts/del删除用户 TTS 词条
POST/api/module/tts/clear清空用户 TTS 词典
GET/api/module/balance/info获取最近 SIM 余额结果
GET/api/module/balance/get获取 SIM 余额任务配置
POST/api/module/balance/set保存 SIM 余额任务配置
POST/api/module/balance/query手动发送余额查询短信
POST/api/module/balance/test发送余额查询并测试告警