另外想要通过api来调用自己的脚本,这个脚本必须是需要先发布嘛,我没有发布的脚本在调用的时候一直提示脚本未存在
那所有人都可以发布脚本还是必须要认证开发者才能发布脚本呀,我看了一下认证开发者必须要交钱
另外我在调用已经发布的脚本,但是一直提示我无效,我先获取到我的脚本https://api.hamibot.com/v1/devscripts,响应数据是{
"count": 1,
"items": [
{
"_id": "68c26ccf27c53c7fc60885fa",
"name": "wxbot"
}
]
}有这个脚本的,然后获取设备列表请求https://api.hamibot.com/v1/devices,响应的数据是{
"count": 1,
"items": [
{
"_id": "68c20f66f30b8f60ffd65df7",
"online": true,
"tags": [
"微信"
],
"brand": "vivo",
"model": "V2352A",
"appVersion": "1.6.7",
"name": "朴茂豆芽"
}
]
}也就是说明当前设备是在线的这么一个状态,然后我调用运行脚本接口https://api.hamibot.com/v1/scripts/68c26ccf27c53c7fc60885fa/run是post请求,携带参数是{
"devices": [
{
"_id": "68c20f66f30b8f60ffd65df7",
"name": "wxbot"
}
]
},但是提示我{
"code": 1000,
"message": "脚本不存在"
},我想知道运行脚本到底需要什么参数,另外参数从哪里获取呢
回答
是的,必须先发布脚本才能通过 API 调用。
Hamibot 的 API(如 POST /v1/devscripts/脚本_id/run)只能调用已发布的脚本。未发布的脚本属于“开发中”状态,仅能在控制台编辑和本地运行,无法通过 API 访问。
正确操作流程:
-
发布脚本
- 进入脚本控制台 → 点击脚本右侧「更多」→「发布」
- 填写脚本名称(如“我的API脚本”)→ 确认发布
- 发布后会生成一个正式脚本 ID(非开发脚本 ID)
-
使用正式脚本 ID 调用 API
curl -X POST \ -H "Authorization: hmp_xxx" \ https://api.hamibot.com/v1/scripts/正式脚本_ID/run
⚠️ 注意:
- API 文档中的
/v1/devscripts/...仅用于开发脚本的调试(如停止、运行),但运行仍需脚本已发布- 实际调用时应使用
/v1/scripts/...接口(对应已发布脚本)
验证是否已发布:
- 已发布脚本会在 脚本市场 或「我的脚本」中显示为独立条目
- 开发脚本(未发布)仅在「脚本控制台」可见,且 ID 以
dev_开头
发布后即可正常通过 API 触发执行。
所有人都可以发布脚本,无需认证开发者,也无需付费。
✅ 发布脚本的权限说明:
- 任何注册用户均可在 脚本控制台 创建并发布脚本
- 发布操作完全免费,不收取任何费用
- 发布后的脚本默认为私有,仅你自己可见和使用
🔒 什么情况下需要「认证开发者」?
只有当你想将脚本上架到公开市场(让其他人搜索、购买)时,才需要:
- 完成开发者认证
- 支付 99 元认证费(一次性)
⚠️ 注意:
- 私有脚本(自己用)→ 不需要认证
- 公开售卖脚本 → 必须认证
📌 总结:
| 场景 | 是否需要认证 | 是否收费 |
|---|---|---|
| 自己写脚本自己用(私有) | ❌ 不需要 | ❌ 免费 |
| 发布到市场卖给他人 | ✅ 需要 | ✅ 99 元认证费 |
你完全可以免费发布私有脚本并通过 API 调用,无需任何认证。
问题出在 API 端点选择错误。你用的是开发脚本接口获取的 ID,但运行时需要区分开发脚本和已发布脚本两种不同的端点。
关键区别
| 类型 | 获取接口 | 运行接口 |
|---|---|---|
| 开发脚本 (devscripts) | GET /v1/devscripts |
POST /v1/devscripts/{id}/run |
| 已发布脚本 (scripts) | GET /v1/scripts |
POST /v1/scripts/{id}/run |
你的问题
你从 /v1/devscripts 获取的 _id: 68c26ccf27c53c7fc60885fa 是开发脚本 ID,但调用时用了 /v1/scripts/.../run,这是已发布脚本的运行接口,所以提示"脚本不存在"。
正确调用方式
方式一:运行开发脚本(推荐测试用)
http.request('https://api.hamibot.com/v1/devscripts/68c26ccf27c53c7fc60885fa/run', {
method: 'POST',
contentType: 'application/json',
headers: {
authorization: '你的令牌(hmp 开头)',
},
body: JSON.stringify({
devices: [{
_id: '68c20f66f30b8f60ffd65df7',
name: '朴茂豆芽'
}],
}),
});
方式二:先发布脚本,再运行已发布版本
// 1. 先获取已发布脚本列表
// GET https://api.hamibot.com/v1/scripts
// 2. 用返回的 _id 调用运行接口
http.request('https://api.hamibot.com/v1/scripts/已发布脚本_id/run', {
method: 'POST',
contentType: 'application/json',
headers: {
authorization: '你的令牌(hmp 开头)',
},
body: JSON.stringify({
devices: [{
_id: '68c20f66f30b8f60ffd65df7',
name: '朴茂豆芽'
}],
}),
});
参数说明
| 参数 | 来源 | 说明 |
|---|---|---|
脚本_id |
/v1/devscripts 或 /v1/scripts |
开发脚本用 devscripts 接口,已发布用 scripts 接口 |
devices._id |
/v1/devices |
设备的 _id 字段 |
devices.name |
/v1/devices |
设备的 name 字段(可选,建议填写) |
authorization |
控制台 → 设置 → 开发者令牌 | hmp_ 开头的令牌 |
修正你的代码
把 URL 从:
https://api.hamibot.com/v1/scripts/68c26ccf27c53c7fc60885fa/run
改为:
https://api.hamibot.com/v1/devscripts/68c26ccf27c53c7fc60885fa/run
同时设备 name 也建议修正为实际设备名 "朴茂豆芽" 而不是脚本名 "wxbot"。