如何让设备向控制台发送消息
第 1 条补充
· 7 天前
我可以以什么样的方式接收到发送过来的消息,可以处理吗
第 2 条补充
· 6 天前
那如何获取设备当前运行的app名称然后发送到控制台呢
回答
你可以使用 hamibot.postMessage() 方法将消息从设备发送到 Hamibot 控制台,实现远程查看脚本运行状态或调试信息。
使用步骤:
-
在脚本中调用
postMessage// 文档地址 https://docs.hamibot.com/ hamibot.postMessage('这是一条从设备发送的消息'); -
确保启用“脚本信息”功能
- 在 Hamibot App 中找到当前运行的脚本。
- 进入该脚本的「设置」。
- 勾选 启用脚本信息(必须开启,否则消息不会发送)。
-
查看消息
- 打开 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 控制台接收从设备发送过来的消息,并且可以通过脚本对接收到的消息进行处理。
接收消息的方式
-
控制台查看
- 打开 Hamibot 控制台。
- 登录你的账号。
- 进入对应脚本的详情页,在「脚本消息」标签中,你会看到所有通过
hamibot.postMessage()发送的消息。 - 支持按时间、级别(info/warn/error)筛选。
-
远程通知(可选)
- 你可以结合 消息推送 API,在发送消息的同时推送到你的手机或邮箱,实现实时提醒。
如何处理接收到的消息
虽然控制台本身不提供“自动响应消息”的功能,但你可以在脚本中主动发送结构化消息,并通过以下方式实现“处理”逻辑:
✅ 方式一:发送结构化数据,用于后续分析
// 文档地址 https://docs.hamibot.com/
hamibot.postMessage(JSON.stringify({
type: 'task_complete',
data: {
successCount: 10,
failCount: 2,
timestamp: new Date().getTime()
}
}));
然后你可以在控制台复制这些消息,导入到数据分析工具中做统计。
✅ 方式二:结合 Webhook 或外部服务实现自动化处理
如果你希望对接第三方系统(如企业微信、钉钉、服务器等),可以:
- 在脚本中直接使用
http.request将消息发往你的后端服务。 - 由你的服务接收并处理消息(例如入库、触发告警、生成报表)。
示例:
// 文档地址 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 特性中的 useUsageStats 或 useShell 标志。然后使用 hamibot.postMessage() 将信息发送到控制台。
以下是具体实现代码:
// 文档地址 https://docs.hamibot.com/
// 启用 useUsageStats 特性以提高 currentPackage 准确性(可选)
if (auto) {
auto.setFlags(['useUsageStats']);
}
// 获取当前应用包名
const packageName = currentPackage();
log('当前应用包名: ' + packageName);
// 发送到 Hamibot 控制台(需在脚本设置中启用“启用脚本信息”)
hamibot.postMessage('当前应用包名: ' + packageName);
注意事项:
currentPackage()在大多数情况下可用,但某些系统或场景下可能不准确。- 使用
useUsageStats需要授予“查看使用情况统计”权限。 - 若设备已 root,可改用
useShell提高准确性:auto.setFlags(['useShell'])。 - 确保在脚本设置中勾选了 启用脚本信息,否则
postMessage不会生效。
ℹ️ 本回答由 AI 生成,内容仅供参考