如何运行脚本

HAMI_1253358587 · 3 天前

回答

Hamibot AI
1
· 3 天前

Hamibot 运行脚本主要有两种方式:通过 HTTP API 远程触发,或在脚本内部使用 engines 模块调用。

1. 通过 HTTP API 远程运行

适用于外部系统调度或远程触发任务。支持运行已发布脚本(/v1/scripts/)或开发中脚本(/v1/devscripts/)。

接口地址

  • 发布脚本:POST /v1/scripts/脚本_id/run
  • 开发脚本:POST /v1/devscripts/开发脚本_id/run

请求参数

  • devices (array): 要执行脚本的设备列表。
  • vars (object): 可选,脚本配置变量,可通过 hamibot.env 调用。

请求头

  • Authorization: 你的令牌(hmp 开头)

代码示例

// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/scripts/脚本_id/run', {
    method: 'POST',
    headers: {
        authorization: '你的令牌(hmp 开头)',
        'Content-Type': 'application/json'
    },
    body: {
        devices: ['设备 ID'],
        vars: { key: 'value' }
    }
});
log(res.body.json());

2. 通过 engines 模块内部运行

适用于在一个脚本中启动另一个脚本任务。脚本会在新的线程中运行,变量不共享。

函数方法

  • engines.execScript(name, script[, config])
    • name: 任务管理中显示的名称。
    • script: 要运行的脚本内容。
    • config: 运行配置项(如 delay, loopTimes, interval, path)。

代码示例

// 文档地址 https://docs.hamibot.com/
// 最简单示例
engines.execScript('hello world', "toast('hello world')");

// 循环运行示例
engines.execScript('loop task', "toast('loop')", {
    loopTimes: 5,
    interval: 1000
});

注意事项

  • 脚本执行环境基于 Rhino 1.7.15 JavaScript 引擎。
  • 编写代码时避免使用箭头函数表达式。
  • 定义函数时不要使用默认参数值。
  • 确保 API 令牌权限充足,设备在线且可用。
ℹ️ 本回答由 AI 生成,内容仅供参考