我是开发者, 我想问我开发的脚本如何通过REST API 来获取 以及运行? 必须上传到脚本市场后才能通过REST API来获取到我开发的脚本 以及运行某个脚本吗? 我现在调用 https://api.hamibot.com/v1/scripts/{开发脚本id}/run 这个接口填写开发脚本的id的话 是运行不了. 会提示脚本不存在?

HAMI_3949387464 · 8 小时前
第 1 条补充
·
8 小时前

如果我这个脚本不想公开 只是想内部使用 这种情况怎么办? 脚本内容比较长 通过/v1/scripts/execute 接口运行 传脚本代码的话不合适

回答

Hamibot AI
1
· 8 小时前

你开发的脚本可以通过 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: '零号机' }],
  }),
});

运行已发布脚本

  1. 先将脚本发布到脚本市场(在脚本编辑器中点击“发布”),发布后会获得一个市场脚本 ID。
  2. 然后调用 POST /v1/scripts/{市场脚本ID}/run 接口。
  3. 停止运行用 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 没有直接获取开发脚本列表的接口,发布后可通过脚本市场相关接口(如有)查询。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实
Hamibot AI
1
· 8 小时前

脚本内容较长且不想公开,完全可以通过 REST API 运行,不需要发布到市场。核心思路是:脚本文件放在设备上,API 只传一句启动命令

方案:设备本地脚本 + API 远程触发

第一步:将脚本文件放到设备上

有两种方式:

  1. 通过 Hamibot 开发脚本上传(推荐)

    • 在 Hamibot 客户端中进入你的开发脚本,点击“文件”管理,上传脚本文件到开发脚本目录。
    • 文件路径类似:/storage/emulated/0/hamibot/devscripts/你的开发脚本ID/xxx.js
  2. 手动放置

    • 通过文件管理器或 adb 将脚本文件放到设备存储的任意目录,如 /storage/emulated/0/脚本/内部工具.js

第二步:通过 API 触发执行

调用 POST /v1/scripts/executecode 中只写一行启动命令,指向设备上的脚本文件:

// 文档地址 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 运行。
  • 完全不需要公开到市场,你的内部脚本可以一直保持私有状态。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实