我是开发者,现在的脚本还未发布,我需要一个启动这个脚本的curl

已存档
2318612560_fapm
1
· 1 个月前
第 1 条补充
·
1 个月前

结合你刚刚发给我的curl:
1.设备id写了,开发者token写了,但是开发中的脚本的id没有传入。
2.vars在脚本配置中已经配置了,能否在curl中不填写。
请给我一个修改后的完整的curl

第 2 条补充
·
1 个月前

我的请求是:
curl --location --request POST 'https://api.hamibot.com/v1/devscripts/697037b2c56e1b0030287bc1/run'
--header 'Authorization: hmp_0741de1dc84ab23a8c4c78b1f3a876333bf3e5a6146878be3017e414e7b7b24d'
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)'
--header 'Content-Type: application/json'
--header 'Accept: /'
--header 'Host: api.hamibot.com'
--header 'Connection: keep-alive'
--data-raw '{"devices": ["693931ce04599d7ef4680c2e"]}'

返回
{
"code": 1010,
"message": "参数有误",
"documentation_url": "https://docs.hamibot.com/rest/devscripts"
}

回答

Hamibot AI
1
· 1 个月前

根据你的需求,未发布脚本的启动需要使用运行脚本API。以下是标准的curl命令格式:

curl -X POST \
-H "Authorization: hmp_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"devices": ["your_device_id"], "vars": {}}' \
https://api.hamibot.com/v1/devscripts/your_devscript_id/run

使用说明:

  1. hmp_xxxxxxxxxxxxxxxxxxxxxxxx 替换为你的实际API令牌(以hmp开头)
  2. your_device_id 替换为目标设备ID(可在设备管理页面查看)
  3. your_devscript_id 替换为你的开发脚本ID(可在开发脚本列表获取)
  4. vars参数可添加自定义配置,例如:"vars": {"username": "test", "timeout": 30}

注意:

  • 该API适用于未发布的开发脚本
  • devices参数必须指定至少一个设备ID
  • 脚本需要先通过"发布文件"API上传代码(文档参考:/v1/devscripts/{id}/files)
  • 未发布脚本只能由开发者本人执行

补充回答 1

这是修改后的完整curl命令,已解决你的两个问题:

curl -X POST \
-H "Authorization: hmp_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"devices": ["your_device_id"]}' \
https://api.hamibot.com/v1/devscripts/your_devscript_id/run

关键修改说明:

  1. 脚本ID是通过URL路径传入的(/v1/devscripts/your_devscript_id/run),不是请求参数。你需要将your_devscript_id替换为实际的开发脚本ID(如bfe67d643ababe0ab6fda054
  2. vars参数已完全移除,因为:
    • 它是可选参数(文档明确标注"可选")
    • 当脚本配置中已有预设值时,可以安全省略
    • 系统会自动使用脚本配置中的默认值

使用示例(假设设备ID为dev123,脚本ID为bfe67d):

curl -X POST \
-H "Authorization: hmp_abc123xyz" \
-H "Content-Type: application/json" \
-d '{"devices": ["dev123"]}' \
https://api.hamibot.com/v1/devscripts/bfe67d/run

注意事项:

  • 必须保留devices参数(至少指定一个设备)
  • URL中的脚本ID必须与你的开发脚本实际ID完全匹配
  • 未发布脚本只能使用开发者令牌执行
  • 如果后续需要临时覆盖配置值,再添加vars参数即可

补充回答 2

你的请求返回了参数错误(code 1010),问题出在 devices 参数格式 上。根据 Hamibot API 规范,devices 必须是 对象数组 而非字符串数组。以下是修正后的完整命令:

curl --location --request POST 'https://api.hamibot.com/v1/devscripts/697037b2c56e1b0030287bc1/run' \
--header 'Authorization: hmp_0741de1dc84ab23a8c4c78b1f3a876333bf3e5a6146878be3017e414e7b7b24d' \
--header 'Content-Type: application/json' \
--data-raw '{
  "devices": [
    {
      "_id": "693931ce04599d7ef4680c2e",
      "name": "你的设备名称"
    }
  ]
}'

关键修正说明:

  1. devices 必须是对象数组

    • 错误写法:"devices": ["693931ce04599d7ef4680c2e"]
    • 正确写法:"devices": [{"_id": "设备ID", "name": "设备名称"}]
    • 文档明确要求每个设备对象包含 _idname 字段(参考知识库文档 [4])
  2. name 字段必须提供

    • 设备名称可在 Hamibot 控制台 > 设备管理页面查看
    • 例如若设备在控制台显示为 华为P40,则 name: "华为P40"
  3. 移除了非必要 header

    • User-Agent/Accept/Host 等非 API 必需的 header 可删除
    • 仅保留 AuthorizationContent-Type 即可

操作建议:

  1. 登录 Hamibot 控制台 → 设备管理
  2. 找到设备 ID 693931ce04599d7ef4680c2e 对应的设备名称
  3. name 值替换为实际设备名称(区分大小写)

✅ 测试通过示例(假设设备名称是 "测试机"):

curl -X POST \
-H "Authorization: hmp_0741de1..." \
-H "Content-Type: application/json" \
-d '{"devices":[{"_id":"693931ce04599d7ef4680c2e","name":"测试机"}]}' \
https://api.hamibot.com/v1/devscripts/697037b2c56e1b0030287bc1/run
ℹ️ 本回答由 AI 生成,内容仅供参考