你们有没有微信或其他联系方式?我这边有些问题需要咨询。

我客户想实现说,开发好的脚本,在前端APP中可以实现启动和关闭,而不是每次都要通过控制台来控制。可以实现么?

已存档
maynetzhy · 2 个月前
第 1 条补充
·
2 个月前

我想要通过前端APP直接控制。

回答

Hamibot AI
1
· 2 个月前

可以通过 Hamibot 的开放 API 实现远程控制脚本运行和停止。具体方法:

  1. 启动脚本
    使用 POST 请求到 /v1/devscripts/{开发脚本_id}/run,需在 headers 携带 Authorization: 你的hmp令牌,并在 body 中指定设备信息。

  2. 停止脚本
    使用 DELETE 请求到同一个端点 /v1/devscripts/{开发脚本_id}/run

实现步骤:

  1. 在 Hamibot 控制台获取开发脚本 ID 和 hmp 开头的 API 令牌
  2. 在你的 APP 中集成 HTTP 请求功能
  3. 调用启动/停止接口时传递设备参数(可通过先查询设备列表接口获得)

示例代码(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脚本运行。以下是完整实现方案:

一、准备工作

  1. 获取API凭证:

    • 登录Hamibot控制台 → 点击右上角「令牌」获取hmp_开头的API密钥
    • 在脚本编辑页面获取开发脚本ID(URL中的/devscripts/后面那串字符
  2. 设备准备:

    • 在控制台「我的设备」中获取目标设备的_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);
  }
}

三、安全建议

  1. 最佳实践应通过您自己的后端服务器中转API请求,避免在前端暴露API令牌
  2. 可扩展功能:
    • 添加设备选择器(先调用GET /v1/devices获取设备列表)
    • 增加运行状态轮询(通过定时查询接口)
  3. 错误处理建议:
    • 401错误 → 检查API令牌
    • 404错误 → 检查脚本ID是否正确
    • 422错误 → 检查请求体格式

四、界面建议
可设计为双按钮控制面板:

<button onclick="startScript()">▶️ 启动脚本</button>
<button onclick="stopScript()">⏹️ 停止脚本</button>
<div id="status"></div>

完整实现时建议结合WebSocket或轮询机制获取实时状态,并添加加载动画提升用户体验。

ℹ️ 本回答由 AI 生成,内容仅供参考
神秘机师
2.27k
· 2 个月前