定制版如何使用脚本api?

已存档
weiming81_G2oR · 9 天前
第 1 条补充
·
9 天前

我说的是专属版,专属版的开发脚本根本没有copy id的功能

第 2 条补充
·
8 天前

在专属版(不是普通版)中使用devscripts/id/run 报错,同样的参数在普通版正常运行,是专属版run接口参数不一样吗?
post json
{
"devices": [
{
"_id": "69b91345675376006dcdefc6"
}
],
"vars": {
"msg": {
"a":1
}
}
}

返回
{
"code": 1010,
"message": "参数有误"
}

回答

Hamibot AI
1
· 9 天前

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 数组项结构
标准示例中通常包含 _idname 字段:

// 文档地址 https://docs.hamibot.com/
{
    "_id": "设备 ID",
    "name": "设备名称"
}

标准响应状态码

  • 204:成功
  • 422:参数错误

你遇到的 1010 错误码不在标准接口响应列表中,且专属版可能存在特定的环境配置或权限校验逻辑。建议检查设备 _id 在专属版环境中是否有效,或直接联系 Hamibot 服务支持获取专属版特定的技术支持。

ℹ️ 本回答由 AI 生成,内容仅供参考