如何让设备向控制台发送消息

wrekemdkwh · 7 天前
第 1 条补充
·
7 天前

我可以以什么样的方式接收到发送过来的消息,可以处理吗

第 2 条补充
·
6 天前

那如何获取设备当前运行的app名称然后发送到控制台呢

回答

Hamibot AI
1
· 7 天前

你可以使用 hamibot.postMessage() 方法将消息从设备发送到 Hamibot 控制台,实现远程查看脚本运行状态或调试信息。

使用步骤:

  1. 在脚本中调用 postMessage

    // 文档地址 https://docs.hamibot.com/
    hamibot.postMessage('这是一条从设备发送的消息');
    
  2. 确保启用“脚本信息”功能

    • 在 Hamibot App 中找到当前运行的脚本。
    • 进入该脚本的「设置」。
    • 勾选 启用脚本信息(必须开启,否则消息不会发送)。
  3. 查看消息

    • 打开 Hamibot 控制台网页(https://www.hamibot.com/console)。
    • 登录后进入对应脚本的控制台页面。
    • 在「脚本消息」区域即可看到设备发送过来的消息。

示例:发送变量值和自定义内容

// 文档地址 https://docs.hamibot.com/
const count = 42;
hamibot.postMessage(`当前计数: ${count}`);
hamibot.postMessage('任务完成!✅');

可选参数(opts)

你还可以传入第二个参数对象来添加额外选项,例如标记消息类型:

// 文档地址 https://docs.hamibot.com/
hamibot.postMessage('错误发生', {
  level: 'error' // 可选: 'info', 'warn', 'error'
});

⚠️ 注意:

  • 必须开启脚本设置中的 启用脚本信息,否则 postMessage 不生效。
  • 消息发送依赖网络连接,请确保设备能正常联网。

补充回答 1

你可以在 Hamibot 控制台接收从设备发送过来的消息,并且可以通过脚本对接收到的消息进行处理。

接收消息的方式

  1. 控制台查看

    • 打开 Hamibot 控制台
    • 登录你的账号。
    • 进入对应脚本的详情页,在「脚本消息」标签中,你会看到所有通过 hamibot.postMessage() 发送的消息。
    • 支持按时间、级别(info/warn/error)筛选。
  2. 远程通知(可选)

    • 你可以结合 消息推送 API,在发送消息的同时推送到你的手机或邮箱,实现实时提醒。

如何处理接收到的消息

虽然控制台本身不提供“自动响应消息”的功能,但你可以在脚本中主动发送结构化消息,并通过以下方式实现“处理”逻辑:

✅ 方式一:发送结构化数据,用于后续分析

// 文档地址 https://docs.hamibot.com/
hamibot.postMessage(JSON.stringify({
  type: 'task_complete',
  data: {
    successCount: 10,
    failCount: 2,
    timestamp: new Date().getTime()
  }
}));

然后你可以在控制台复制这些消息,导入到数据分析工具中做统计。


✅ 方式二:结合 Webhook 或外部服务实现自动化处理

如果你希望对接第三方系统(如企业微信、钉钉、服务器等),可以:

  1. 在脚本中直接使用 http.request 将消息发往你的后端服务。
  2. 由你的服务接收并处理消息(例如入库、触发告警、生成报表)。

示例:

// 文档地址 https://docs.hamibot.com/
http.request('https://your-server.com/log', {
  method: 'POST',
  body: JSON.stringify({ message: '任务完成', device: hamibot.robotName }),
  headers: { 'Content-Type': 'application/json' }
});

总结

功能 是否支持 说明
实时查看消息 通过 Hamibot 控制台
消息分类与筛选 支持 level 标记
自动处理消息 ❌(控制台内) 控制台不支持脚本自动监听消息
外部处理消息 可通过 HTTP 请求将消息发送到自定义服务器

建议:如果需要对消息做进一步处理,推荐在脚本中直接调用外部接口,而不是依赖控制台再做解析。


补充回答 2

你可以通过 currentPackage() 获取当前运行的应用包名,如果需要更准确的结果,也可以结合 widgetsBasedAutomation 特性中的 useUsageStatsuseShell 标志。然后使用 hamibot.postMessage() 将信息发送到控制台。

以下是具体实现代码:

// 文档地址 https://docs.hamibot.com/

// 启用 useUsageStats 特性以提高 currentPackage 准确性(可选)
if (auto) {
    auto.setFlags(['useUsageStats']);
}

// 获取当前应用包名
const packageName = currentPackage();
log('当前应用包名: ' + packageName);

// 发送到 Hamibot 控制台(需在脚本设置中启用“启用脚本信息”)
hamibot.postMessage('当前应用包名: ' + packageName);

注意事项:

  1. currentPackage() 在大多数情况下可用,但某些系统或场景下可能不准确。
  2. 使用 useUsageStats 需要授予“查看使用情况统计”权限。
  3. 若设备已 root,可改用 useShell 提高准确性:auto.setFlags(['useShell'])
  4. 确保在脚本设置中勾选了 启用脚本信息,否则 postMessage 不会生效。
ℹ️ 本回答由 AI 生成,内容仅供参考