你们有没有微信或其他联系方式?我这边有些问题需要咨询。
我客户想实现说,开发好的脚本,在前端APP中可以实现启动和关闭,而不是每次都要通过控制台来控制。可以实现么?
第 1 条补充
 · 5 个月前
我想要通过前端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 控制中心