@zhizai/cli 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +304 -0
- package/bin/zhizai.js +25 -0
- package/package.json +31 -0
- package/scripts/postinstall.js +143 -0
- package/skills/zhiji-open-platform/SKILL.md +103 -0
- package/skills/zhiji-open-platform/references/auth.md +145 -0
- package/skills/zhiji-open-platform/references/knowledge.md +619 -0
- package/skills/zhiji-open-platform/references/msg-device.md +325 -0
- package/skills/zhiji-open-platform/references/note.md +901 -0
- package/skills/zhiji-open-platform/references/scene.md +289 -0
- package/skills/zhiji-open-platform/references/team.md +466 -0
- package/skills/zhizai-auth/SKILL.md +19 -0
- package/skills/zhizai-knowledge/SKILL.md +12 -0
- package/skills/zhizai-msg/SKILL.md +12 -0
- package/skills/zhizai-note/SKILL.md +21 -0
- package/skills/zhizai-scene/SKILL.md +12 -0
- package/skills/zhizai-team/SKILL.md +12 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# 智在记录 · 消息与录音卡
|
|
2
|
+
|
|
3
|
+
发送站内消息,查询录音卡用量。可跳过动态模版管线。
|
|
4
|
+
|
|
5
|
+
## 统一结果判定
|
|
6
|
+
|
|
7
|
+
先看 HTTP:`400`/`401`/`406` → 无权限(检查 `ZHIZAI_REC_API_KEY`)。再看 JSON:`resultCode == "0"` 为成功。
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"resultCode": "0",
|
|
12
|
+
"resultMsg": "success",
|
|
13
|
+
"resultObject": {},
|
|
14
|
+
"stack": "",
|
|
15
|
+
"errorInfos": null,
|
|
16
|
+
"guidance": null
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
对用户:可用 `resultMsg` 短句;禁止展示完整 Key、`stack`、未脱敏 `errorInfos`。限流 ≤2 次/秒。
|
|
21
|
+
|
|
22
|
+
`ZHIZAI_BASE_URL` = `https://openapi.zzjilu.com/api/v1`。Header:`Authorization: ${ZHIZAI_REC_API_KEY}`(无 Bearer)。
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## 意图路由
|
|
26
|
+
|
|
27
|
+
| 意图 | 接口 |
|
|
28
|
+
|---|---|
|
|
29
|
+
| 发送消息 | `POST /msg/sendMessage` |
|
|
30
|
+
| 单卡用量 | `GET /recordingCard/queryUsage?deviceSn=` |
|
|
31
|
+
| 批量用量 | `POST /recordingCard/batchQueryUsage` |
|
|
32
|
+
|
|
33
|
+
## 使用注意
|
|
34
|
+
|
|
35
|
+
- 发消息前确认手机号与内容;`phoneNum`/`title`/`message` 必填。
|
|
36
|
+
- 批量 SN 单次最多 100 个;关注 `notFoundSnList`。
|
|
37
|
+
- `deviceStatus`:`CONNECTED` / `DISCONNECTED`;向用户用中文说明电量、存储、文件数等。
|
|
38
|
+
|
|
39
|
+
## 接口协议
|
|
40
|
+
|
|
41
|
+
### POST `/msg/sendMessage` 发送消息
|
|
42
|
+
|
|
43
|
+
**接口说明**:发送消息
|
|
44
|
+
|
|
45
|
+
#### 请求参数
|
|
46
|
+
|
|
47
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
48
|
+
| --- | --- | --- | --- |
|
|
49
|
+
| phoneNum | string | 是 | 手机号(必填) |
|
|
50
|
+
| title | string | 是 | 消息标题(必填) |
|
|
51
|
+
| message | string | 是 | 消息内容(必填) |
|
|
52
|
+
| url | string | 否 | 跳转地址 |
|
|
53
|
+
|
|
54
|
+
#### 请求示例
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
curl --request POST \
|
|
58
|
+
--url https://openapi.zzjilu.com/api/v1/msg/sendMessage\
|
|
59
|
+
--header 'Authorization: your api-key' \
|
|
60
|
+
--header 'content-type: application/json' \
|
|
61
|
+
--data '{
|
|
62
|
+
"phoneNum": "",
|
|
63
|
+
"title": "",
|
|
64
|
+
"message": "",
|
|
65
|
+
"url": ""
|
|
66
|
+
}'
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### 响应参数
|
|
70
|
+
|
|
71
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
72
|
+
| --- | --- | --- | --- |
|
|
73
|
+
| resultCode | string | 是 | 状态码,0 表示成功, 其它均为失败 |
|
|
74
|
+
| resultMsg | string | 是 | 提示信息 |
|
|
75
|
+
| resultObject | null | 是 | 返回数据对象(为null) |
|
|
76
|
+
| stack | string | 是 | 异常堆栈信息 |
|
|
77
|
+
| errorInfos | array | 否 | 错误信息列表 |
|
|
78
|
+
| guidance | string | 否 | 引导信息 |
|
|
79
|
+
|
|
80
|
+
#### 响应示例
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"resultCode": "0",
|
|
85
|
+
"resultMsg": "success",
|
|
86
|
+
"resultObject": null,
|
|
87
|
+
"stack": "",
|
|
88
|
+
"errorInfos": null,
|
|
89
|
+
"guidance": null
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### GET `/recordingCard/queryUsage` 查询录音卡使用情况
|
|
94
|
+
|
|
95
|
+
**接口说明**:按SN码查询录音卡使用情况:设备信息、归属用户、连接状态(CONNECTED-连接/DISCONNECTED-断开)、电量、存储、最近心跳/上报时间及录音文件列表
|
|
96
|
+
|
|
97
|
+
#### 请求参数
|
|
98
|
+
|
|
99
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
100
|
+
| --- | --- | --- | --- |
|
|
101
|
+
| deviceSn | string | 是 | 录音卡SN码,唯一标识一张录音卡 |
|
|
102
|
+
|
|
103
|
+
#### 请求示例
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
curl --request GET \
|
|
107
|
+
--url 'https://openapi.zzjilu.com/api/v1/recordingCard/queryUsage?deviceSn=SN20260826001' \
|
|
108
|
+
--header 'Authorization: your api-key'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### 响应参数
|
|
112
|
+
|
|
113
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
114
|
+
| --- | --- | --- | --- |
|
|
115
|
+
| resultCode | string | 是 | 结果码,0表示成功,-1表示失败 |
|
|
116
|
+
| resultMsg | string | 是 | 结果信息,成功时为success |
|
|
117
|
+
| resultObject | object | 是 | 返回数据对象 |
|
|
118
|
+
| resultObject.id | Long | 是 | 录音卡记录ID |
|
|
119
|
+
| resultObject.userId | Long | 是 | 归属用户ID(最近一次上报的用户) |
|
|
120
|
+
| resultObject.deviceVendor | string | 否 | 设备厂家 |
|
|
121
|
+
| resultObject.deviceName | string | 否 | 设备名称 |
|
|
122
|
+
| resultObject.firmwareVersion | string | 否 | 固件版本 |
|
|
123
|
+
| resultObject.deviceSn | string | 是 | 录音卡SN码 |
|
|
124
|
+
| resultObject.latitude | string | 否 | 设备当前所在位置纬度 |
|
|
125
|
+
| resultObject.longitude | string | 否 | 设备当前所在位置经度 |
|
|
126
|
+
| resultObject.batteryLevel | integer | 否 | 剩余电量(百分比,0-100) |
|
|
127
|
+
| resultObject.remainStorage | Long | 否 | 剩余存储容量(字节) |
|
|
128
|
+
| resultObject.deviceStatus | string | 否 | 设备状态(CONNECTED-连接,DISCONNECTED-断开) |
|
|
129
|
+
| resultObject.lastHeartbeatTime | Long | 否 | 最近一次心跳上报时间(毫秒时间戳) |
|
|
130
|
+
| resultObject.reportTime | Long | 否 | 最近一次上报时间(毫秒时间戳) |
|
|
131
|
+
| resultObject.creatorId | Long | 否 | 建档用户ID(服务端冗余字段) |
|
|
132
|
+
| resultObject.createTime | Long | 否 | 建档时间(毫秒时间戳,服务端冗余字段) |
|
|
133
|
+
| resultObject.updatorId | Long | 否 | 最近修改用户ID(服务端冗余字段) |
|
|
134
|
+
| resultObject.updateTime | Long | 否 | 最近修改时间(毫秒时间戳,服务端冗余字段) |
|
|
135
|
+
| resultObject.status | string | 否 | 数据状态(00A-有效,00X-无效,服务端冗余字段) |
|
|
136
|
+
| resultObject.fileCount | integer | 是 | 当前录音文件总数 |
|
|
137
|
+
| resultObject.fileList | array | 是 | 当前录音文件列表 |
|
|
138
|
+
| resultObject.fileList[].fileName | string | 是 | 录音文件名称 |
|
|
139
|
+
| resultObject.fileList[].duration | Long | 否 | 录音时长(秒) |
|
|
140
|
+
| resultObject.fileList[].fileSize | Long | 否 | 录音文件大小(字节) |
|
|
141
|
+
| stack | string | 否 | 异常堆栈信息 |
|
|
142
|
+
| errorInfos | array | 否 | 错误信息列表 |
|
|
143
|
+
| guidance | string | 否 | 引导信息 |
|
|
144
|
+
|
|
145
|
+
#### 响应示例
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"resultCode": "0",
|
|
150
|
+
"resultMsg": "success",
|
|
151
|
+
"resultObject": {
|
|
152
|
+
"id": 1409833657651040300,
|
|
153
|
+
"userId": 1234567890,
|
|
154
|
+
"deviceVendor": "华为",
|
|
155
|
+
"deviceName": "录音卡Pro",
|
|
156
|
+
"firmwareVersion": "v1.2.3",
|
|
157
|
+
"deviceSn": "SN20260826001",
|
|
158
|
+
"latitude": "31.2304",
|
|
159
|
+
"longitude": "121.4737",
|
|
160
|
+
"batteryLevel": 88,
|
|
161
|
+
"remainStorage": 34359738368,
|
|
162
|
+
"deviceStatus": "CONNECTED",
|
|
163
|
+
"lastHeartbeatTime": 1759200000000,
|
|
164
|
+
"reportTime": 1759199700000,
|
|
165
|
+
"creatorId": 1234567890,
|
|
166
|
+
"createTime": 1759199700000,
|
|
167
|
+
"updatorId": 1234567890,
|
|
168
|
+
"updateTime": 1759199700000,
|
|
169
|
+
"status": "00A",
|
|
170
|
+
"fileCount": 2,
|
|
171
|
+
"fileList": [
|
|
172
|
+
{
|
|
173
|
+
"fileName": "REC_001.wav",
|
|
174
|
+
"duration": 60,
|
|
175
|
+
"fileSize": 1024
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"fileName": "REC_002.wav",
|
|
179
|
+
"duration": 120,
|
|
180
|
+
"fileSize": 2048
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
"stack": "",
|
|
185
|
+
"errorInfos": null,
|
|
186
|
+
"guidance": null
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### POST `/recordingCard/batchQueryUsage` 批量查询录音卡使用情况
|
|
191
|
+
|
|
192
|
+
**接口说明**:按SN码列表批量查询录音卡使用情况:空白条目自动过滤、重复SN自动去重,单次最多100个;已注册的SN返回使用情况,未注册的SN回传notFoundSnList便于对账
|
|
193
|
+
|
|
194
|
+
#### 请求参数
|
|
195
|
+
|
|
196
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
197
|
+
| --- | --- | --- | --- |
|
|
198
|
+
| deviceSnList | array | 是 | 录音卡SN码列表,单次最多100个;空白条目自动过滤,重复SN自动去重(保持首次出现顺序) |
|
|
199
|
+
|
|
200
|
+
#### 请求示例
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
curl --request POST \
|
|
204
|
+
--url https://openapi.zzjilu.com/api/v1/recordingCard/batchQueryUsage \
|
|
205
|
+
--header 'Authorization: your api-key' \
|
|
206
|
+
--header 'content-type: application/json' \
|
|
207
|
+
--data '{
|
|
208
|
+
"deviceSnList": ["SN20260826001", "SN20260826002", "SN_NOT_EXIST"]
|
|
209
|
+
}'
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
#### 响应参数
|
|
213
|
+
|
|
214
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
215
|
+
| --- | --- | --- | --- |
|
|
216
|
+
| resultCode | string | 是 | 结果码,0表示成功,-1表示失败 |
|
|
217
|
+
| resultMsg | string | 是 | 结果信息,成功时为success |
|
|
218
|
+
| resultObject | object | 是 | 返回数据对象 |
|
|
219
|
+
| resultObject.cardList | array | 是 | 查询到的录音卡使用情况列表,顺序与去重后的请求SN列表一致 |
|
|
220
|
+
| resultObject.cardList[].id | Long | 是 | 录音卡记录ID |
|
|
221
|
+
| resultObject.cardList[].userId | Long | 是 | 归属用户ID(最近一次上报的用户) |
|
|
222
|
+
| resultObject.cardList[].deviceVendor | string | 否 | 设备厂家 |
|
|
223
|
+
| resultObject.cardList[].deviceName | string | 否 | 设备名称 |
|
|
224
|
+
| resultObject.cardList[].firmwareVersion | string | 否 | 固件版本 |
|
|
225
|
+
| resultObject.cardList[].deviceSn | string | 是 | 录音卡SN码 |
|
|
226
|
+
| resultObject.cardList[].latitude | string | 否 | 设备当前所在位置纬度 |
|
|
227
|
+
| resultObject.cardList[].longitude | string | 否 | 设备当前所在位置经度 |
|
|
228
|
+
| resultObject.cardList[].batteryLevel | integer | 否 | 剩余电量(百分比,0-100) |
|
|
229
|
+
| resultObject.cardList[].remainStorage | Long | 否 | 剩余存储容量(字节) |
|
|
230
|
+
| resultObject.cardList[].deviceStatus | string | 否 | 设备状态(CONNECTED-连接,DISCONNECTED-断开) |
|
|
231
|
+
| resultObject.cardList[].lastHeartbeatTime | Long | 否 | 最近一次心跳上报时间(毫秒时间戳) |
|
|
232
|
+
| resultObject.cardList[].reportTime | Long | 否 | 最近一次上报时间(毫秒时间戳) |
|
|
233
|
+
| resultObject.cardList[].creatorId | Long | 否 | 建档用户ID(服务端冗余字段) |
|
|
234
|
+
| resultObject.cardList[].createTime | Long | 否 | 建档时间(毫秒时间戳,服务端冗余字段) |
|
|
235
|
+
| resultObject.cardList[].updatorId | Long | 否 | 最近修改用户ID(服务端冗余字段) |
|
|
236
|
+
| resultObject.cardList[].updateTime | Long | 否 | 最近修改时间(毫秒时间戳,服务端冗余字段) |
|
|
237
|
+
| resultObject.cardList[].status | string | 否 | 数据状态(00A-有效,00X-无效,服务端冗余字段) |
|
|
238
|
+
| resultObject.cardList[].fileCount | integer | 是 | 当前录音文件总数 |
|
|
239
|
+
| resultObject.cardList[].fileList | array | 是 | 当前录音文件列表 |
|
|
240
|
+
| resultObject.cardList[].fileList[].fileName | string | 是 | 录音文件名称 |
|
|
241
|
+
| resultObject.cardList[].fileList[].duration | Long | 否 | 录音时长(秒) |
|
|
242
|
+
| resultObject.cardList[].fileList[].fileSize | Long | 否 | 录音文件大小(字节) |
|
|
243
|
+
| resultObject.notFoundSnList | array | 是 | 未注册的SN码列表(未通过全量上报建档),便于接入方对账 |
|
|
244
|
+
| stack | string | 否 | 异常堆栈信息 |
|
|
245
|
+
| errorInfos | array | 否 | 错误信息列表 |
|
|
246
|
+
| guidance | string | 否 | 引导信息 |
|
|
247
|
+
|
|
248
|
+
#### 响应示例
|
|
249
|
+
|
|
250
|
+
```json
|
|
251
|
+
{
|
|
252
|
+
"resultCode": "0",
|
|
253
|
+
"resultMsg": "success",
|
|
254
|
+
"resultObject": {
|
|
255
|
+
"cardList": [
|
|
256
|
+
{
|
|
257
|
+
"id": 1409833657651040300,
|
|
258
|
+
"userId": 1234567890,
|
|
259
|
+
"deviceVendor": "华为",
|
|
260
|
+
"deviceName": "录音卡Pro",
|
|
261
|
+
"firmwareVersion": "v1.2.3",
|
|
262
|
+
"deviceSn": "SN20260826001",
|
|
263
|
+
"latitude": "31.2304",
|
|
264
|
+
"longitude": "121.4737",
|
|
265
|
+
"batteryLevel": 88,
|
|
266
|
+
"remainStorage": 34359738368,
|
|
267
|
+
"deviceStatus": "CONNECTED",
|
|
268
|
+
"lastHeartbeatTime": 1759200000000,
|
|
269
|
+
"reportTime": 1759199700000,
|
|
270
|
+
"creatorId": 1234567890,
|
|
271
|
+
"createTime": 1759199700000,
|
|
272
|
+
"updatorId": 1234567890,
|
|
273
|
+
"updateTime": 1759199700000,
|
|
274
|
+
"status": "00A",
|
|
275
|
+
"fileCount": 2,
|
|
276
|
+
"fileList": [
|
|
277
|
+
{
|
|
278
|
+
"fileName": "REC_001.wav",
|
|
279
|
+
"duration": 60,
|
|
280
|
+
"fileSize": 1024
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"fileName": "REC_002.wav",
|
|
284
|
+
"duration": 120,
|
|
285
|
+
"fileSize": 2048
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"id": 1409833657651040500,
|
|
291
|
+
"userId": 9876543210,
|
|
292
|
+
"deviceVendor": "小米",
|
|
293
|
+
"deviceName": "录音卡Lite",
|
|
294
|
+
"firmwareVersion": "v1.0.5",
|
|
295
|
+
"deviceSn": "SN20260826002",
|
|
296
|
+
"latitude": null,
|
|
297
|
+
"longitude": null,
|
|
298
|
+
"batteryLevel": null,
|
|
299
|
+
"remainStorage": null,
|
|
300
|
+
"deviceStatus": "DISCONNECTED",
|
|
301
|
+
"lastHeartbeatTime": 1759100000000,
|
|
302
|
+
"reportTime": 1759100000000,
|
|
303
|
+
"creatorId": 9876543210,
|
|
304
|
+
"createTime": 1759100000000,
|
|
305
|
+
"updatorId": 9876543210,
|
|
306
|
+
"updateTime": 1759100000000,
|
|
307
|
+
"status": "00A",
|
|
308
|
+
"fileCount": 0,
|
|
309
|
+
"fileList": []
|
|
310
|
+
}
|
|
311
|
+
],
|
|
312
|
+
"notFoundSnList": [
|
|
313
|
+
"SN_NOT_EXIST"
|
|
314
|
+
]
|
|
315
|
+
},
|
|
316
|
+
"stack": "",
|
|
317
|
+
"errorInfos": null,
|
|
318
|
+
"guidance": null
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
## 安全约束(强制)
|
|
323
|
+
|
|
324
|
+
- `sendMessage`:发送前确认手机号与内容。
|
|
325
|
+
- 录音卡批量最多 100 个 SN;关注 `notFoundSnList`。
|