你们有没有微信或其他联系方式?我这边有些问题需要咨询。
我客户想实现说,开发好的脚本,在前端APP中可以实现启动和关闭,而不是每次都要通过控制台来控制。可以实现么?
第 1 条补充
· 2 个月前
我想要通过前端APP直接控制。
回答
可以通过 Hamibot 的开放 API 实现远程控制脚本运行和停止。具体方法:
-
启动脚本:
使用 POST 请求到/v1/devscripts/{开发脚本_id}/run
,需在 headers 携带Authorization: 你的hmp令牌
,并在 body 中指定设备信息。 -
停止脚本:
使用 DELETE 请求到同一个端点/v1/devscripts/{开发脚本_id}/run
实现步骤:
- 在 Hamibot 控制台获取开发脚本 ID 和 hmp 开头的 API 令牌
- 在你的 APP 中集成 HTTP 请求功能
- 调用启动/停止接口时传递设备参数(可通过先查询设备列表接口获得)
示例代码(JavaScript):
// 启动脚本
fetch('https://api.hamibot.com/v1/devscripts/脚本ID/run', {
method: 'POST',
headers: {
'Authorization': 'hmp_your_token',
'Content-Type': 'application/json'
},
body: JSON.stringify({
devices: [{_id: "设备ID", name: "设备名称"}]
})
})
// 停止脚本
fetch('https://api.hamibot.com/v1/devscripts/脚本ID/run', {
method: 'DELETE',
headers: {
'Authorization': 'hmp_your_token'
}
})
需要自行处理异常捕获、请求重试、设备状态同步等逻辑。建议查看官方 API 文档获取最新参数要求。
补充回答 1
是的,可以通过前端APP直接控制Hamibot脚本运行。以下是完整实现方案:
一、准备工作
-
获取API凭证:
- 登录Hamibot控制台 → 点击右上角「令牌」获取
hmp_
开头的API密钥 - 在脚本编辑页面获取开发脚本ID(URL中的
/devscripts/后面那串字符
)
- 登录Hamibot控制台 → 点击右上角「令牌」获取
-
设备准备:
- 在控制台「我的设备」中获取目标设备的
_id
- 在控制台「我的设备」中获取目标设备的
二、前端集成示例(使用JavaScript)
// 配置信息
const config = {
apiToken: "hmp_your_token", // 建议放后端,不要明文存储在前端
scriptId: "开发脚本_id",
deviceId: "设备_id"
}
// 启动脚本
async function startScript() {
try {
const response = await fetch('https://api.hamibot.com/v1/devscripts/${config.scriptId}/run', {
method: 'POST',
headers: {
'Authorization': config.apiToken,
'Content-Type': 'application/json'
},
body: JSON.stringify({
devices: [{
_id: config.deviceId,
name: "MyDevice" // 设备名称可自定义
}]
})
});
if (response.status === 204) {
console.log('脚本启动成功');
} else {
console.error('启动失败:', await response.text());
}
} catch (error) {
console.error('网络错误:', error);
}
}
// 停止脚本
async function stopScript() {
try {
const response = await fetch('https://api.hamibot.com/v1/devscripts/${config.scriptId}/run', {
method: 'DELETE',
headers: {
'Authorization': config.apiToken
}
});
if (response.status === 204) {
console.log('脚本已停止');
} else {
console.error('停止失败:', await response.text());
}
} catch (error) {
console.error('网络错误:', error);
}
}
三、安全建议
- 最佳实践应通过您自己的后端服务器中转API请求,避免在前端暴露API令牌
- 可扩展功能:
- 添加设备选择器(先调用GET /v1/devices获取设备列表)
- 增加运行状态轮询(通过定时查询接口)
- 错误处理建议:
- 401错误 → 检查API令牌
- 404错误 → 检查脚本ID是否正确
- 422错误 → 检查请求体格式
四、界面建议
可设计为双按钮控制面板:
<button onclick="startScript()">▶️ 启动脚本</button>
<button onclick="stopScript()">⏹️ 停止脚本</button>
<div id="status"></div>
完整实现时建议结合WebSocket或轮询机制获取实时状态,并添加加载动画提升用户体验。
ℹ️ 本回答由 AI 生成,内容仅供参考
参考 Hamibot 控制中心