定制版如何使用脚本api?
我说的是专属版,专属版的开发脚本根本没有copy id的功能
在专属版(不是普通版)中使用devscripts/id/run 报错,同样的参数在普通版正常运行,是专属版run接口参数不一样吗?
post json
{
"devices": [
{
"_id": "69b91345675376006dcdefc6"
}
],
"vars": {
"msg": {
"a":1
}
}
}
返回
{
"code": 1010,
"message": "参数有误"
}
回答
Hamibot 脚本 API 的使用主要基于 HTTP 请求,通过特定的接口端点和授权令牌进行交互。以下是核心使用方法和常见接口说明。
1. 授权认证
所有 API 请求都需要在 Header 中包含授权信息。
- Header 键:
Authorization - Header 值:
你的令牌(hmp 开头)
2. 常用接口说明
脚本管理 (Scripts)
- 获取脚本信息:
GET /v1/scripts/脚本_id - 运行脚本:
POST /v1/scripts/脚本_id/run- 支持指定设备列表和脚本配置变量。
- 停止脚本:
DELETE /v1/scripts/脚本_id/run
开发脚本 (DevScripts)
- 创建开发脚本:
POST /v1/devscripts - 删除开发脚本:
DELETE /v1/devscripts/开发脚本_id - 生成优惠码:
POST /v1/devscripts/开发脚本_id/promocode
3. 代码示例
在脚本环境中调用 API 时,需注意 JavaScript 引擎兼容性(使用 var,避免箭头函数)。以下示例展示了如何运行脚本和创建开发脚本。
运行脚本示例:
// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/scripts/脚本_id/run', {
method: 'POST',
contentType: 'application/json',
headers: {
authorization: '你的令牌(hmp 开头)',
},
body: JSON.stringify({
devices: [{ _id: 'a51d237e9af41ecc021c9ff6', name: '零号机' }],
}),
});
log(res.body.json());
创建开发脚本示例:
// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/devscripts', {
method: 'POST',
headers: {
authorization: '你的令牌(hmp 开头)',
},
body: JSON.stringify({ name: '脚本名字' }),
});
log(res.body.json());
获取脚本信息示例:
// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/scripts/脚本_id', {
method: 'GET',
headers: {
authorization: '你的令牌(hmp 开头)',
},
});
log(res.body.json());
4. 注意事项
- 令牌安全: 令牌(hmp 开头)具有权限,请妥善保管,不要泄露。
- 兼容性: 脚本运行环境基于 Rhino 1.7.15,编写代码时避免使用 ES6+ 新特性(如箭头函数、默认参数等)。
- 响应处理: 成功响应通常返回 200、201 或 204 状态码,失败时请检查参数是否正确(如 422 参数错误)。
如需进一步了解具体接口参数或返回值结构,可参考官方文档。
补充回答 1
专属版界面操作可能存在差异,如果无法通过界面复制脚本 ID,可以直接通过 API 获取脚本列表来查找 ID。
获取脚本 ID 方法
调用获取开发脚本列表接口,响应内容中会包含每个脚本的 _id 字段,该字段即为脚本 ID。
接口地址:GET /v1/devscripts
代码示例:
// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/devscripts', {
method: 'GET',
headers: {
authorization: '你的令牌(hmp 开头)',
},
});
log(res.body.json());
响应说明:
成功响应后,返回的 JSON 数据中 items 数组包含脚本信息。找到目标脚本名称对应的 _id 值,例如:
{
"count": 1,
"items": [
{
"_id": "bfe67d643ababe0ab6fda054",
"name": "演示脚本"
}
]
}
上述示例中的 bfe67d643ababe0ab6fda054 即为脚本 ID。
后续 API 使用
获取到脚本 ID 后,即可在后续接口调用中替换使用。例如生成优惠码接口:
POST /v1/devscripts/开发脚本_id/promocode
将 URL 中的 开发脚本_id 替换为上面获取到的 _id 值即可。
注意事项
- 令牌获取:需要在账户设置中生成 API 令牌(hmp 开头),获取令牌。
- 脚本入口:开发脚本管理入口位于 开发 页面。
- 代码兼容性:脚本运行环境基于 Rhino 1.7.15,编写代码时使用
var定义变量,避免使用箭头函数等 ES6 新特性。
补充回答 2
关于专属版与普通版在 devscripts/id/run 接口上的具体参数差异,对不起,我已经学习的知识中不包含问题相关内容,暂时无法提供答案。如果你有 Hamibot 产品的其他相关问题,我会帮助你解答。
不过,Hamibot 标准的 devscripts 运行接口参数结构如下,你可以参考核对:
接口地址
POST /v1/devscripts/开发脚本_id/run
请求参数
| 名称 | 类型 | 描述 |
|---|---|---|
| devices | array | 要执行脚本的设备列表 |
| vars | object | 可选,脚本配置,通过 hamibot.env 调用 |
devices 数组项结构
标准示例中通常包含 _id 和 name 字段:
// 文档地址 https://docs.hamibot.com/
{
"_id": "设备 ID",
"name": "设备名称"
}
标准响应状态码
204:成功422:参数错误
你遇到的 1010 错误码不在标准接口响应列表中,且专属版可能存在特定的环境配置或权限校验逻辑。建议检查设备 _id 在专属版环境中是否有效,或直接联系 Hamibot 服务支持获取专属版特定的技术支持。