回答
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 生成,内容仅供参考