我是开发者, 我想问我开发的脚本如何通过REST API 来获取 以及运行? 必须上传到脚本市场后才能通过REST API来获取到我开发的脚本 以及运行某个脚本吗? 我现在调用 https://api.hamibot.com/v1/scripts/{开发脚本id}/run 这个接口填写开发脚本的id的话 是运行不了. 会提示脚本不存在?
如果我这个脚本不想公开 只是想内部使用 这种情况怎么办? 脚本内容比较长 通过/v1/scripts/execute 接口运行 传脚本代码的话不合适
回答
你开发的脚本可以通过 REST API 运行,不强制要求上传到脚本市场。你遇到“脚本不存在”是因为 /v1/scripts/{脚本_id}/run 接口的 脚本_id 是脚本市场中的脚本 ID,而不是开发环境中的本地脚本 ID。本地开发脚本 ID 无法用于这个接口。
运行未发布脚本(推荐开发时使用)
使用 POST /v1/scripts/execute 接口,直接传入脚本代码即可执行,无需发布。
示例(用 Hamibot 内置 http 模块请求):
// 文档地址 https://docs.hamibot.com/
http.request('https://api.hamibot.com/v1/scripts/execute', {
method: 'POST',
contentType: 'application/json',
headers: {
authorization: '你的令牌(hmp 开头)',
},
body: JSON.stringify({
code: 'toast("Hello from API");',
// 可选:指定设备,不指定则使用默认设备或云端执行
devices: [{ _id: 'a51d237e9af41ecc021c9ff6', name: '零号机' }],
}),
});
运行已发布脚本
- 先将脚本发布到脚本市场(在脚本编辑器中点击“发布”),发布后会获得一个市场脚本 ID。
- 然后调用
POST /v1/scripts/{市场脚本ID}/run接口。 - 停止运行用
DELETE /v1/scripts/{市场脚本ID}/run。
运行示例:
// 文档地址 https://docs.hamibot.com/
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: '零号机' }],
}),
});
总结
- 开发调试:直接用
/v1/scripts/execute传代码,无需发布。 - 正式调用:发布到市场后,用市场脚本 ID 通过
/v1/scripts/{id}/run运行。 - 本地开发 ID 不能用于运行接口,因为 API 只识别市场中的脚本。
如果你需要获取脚本信息,目前 REST API 没有直接获取开发脚本列表的接口,发布后可通过脚本市场相关接口(如有)查询。
脚本内容较长且不想公开,完全可以通过 REST API 运行,不需要发布到市场。核心思路是:脚本文件放在设备上,API 只传一句启动命令。
方案:设备本地脚本 + API 远程触发
第一步:将脚本文件放到设备上
有两种方式:
-
通过 Hamibot 开发脚本上传(推荐)
- 在 Hamibot 客户端中进入你的开发脚本,点击“文件”管理,上传脚本文件到开发脚本目录。
- 文件路径类似:
/storage/emulated/0/hamibot/devscripts/你的开发脚本ID/xxx.js
-
手动放置
- 通过文件管理器或 adb 将脚本文件放到设备存储的任意目录,如
/storage/emulated/0/脚本/内部工具.js
- 通过文件管理器或 adb 将脚本文件放到设备存储的任意目录,如
第二步:通过 API 触发执行
调用 POST /v1/scripts/execute,code 中只写一行启动命令,指向设备上的脚本文件:
// 文档地址 https://docs.hamibot.com/
http.request('https://api.hamibot.com/v1/scripts/execute', {
method: 'POST',
contentType: 'application/json',
headers: {
authorization: '你的令牌(hmp 开头)',
},
body: JSON.stringify({
code: 'engines.execScriptFile("/storage/emulated/0/脚本/内部工具.js");',
devices: [{ _id: 'a51d237e9af41ecc021c9ff6', name: '零号机' }],
}),
});
这样 API 调用只传输一行代码,实际逻辑全部在设备本地文件中,脚本内容完全不会暴露在 API 请求中。
补充:如果想用脚本市场但保持私有
脚本市场通常支持设置脚本可见性。你可以将脚本发布时设为私有(仅自己可见),然后用市场脚本 ID 通过 /v1/scripts/{id}/run 运行。这种方式更便捷,但脚本代码会上传到 Hamibot 服务器,取决于你是否接受。
总结
- 最安全:脚本放设备本地,API 只传引导命令,代码不出设备。
- 最便捷:发布为私有脚本,直接用市场 ID 运行。
- 完全不需要公开到市场,你的内部脚本可以一直保持私有状态。