中文

小米音箱如何链接到OpenClaw

方案1:用「小爱开放平台-自定义技能」把语音文本转发到 OpenClaw

(最像“接入音箱”)

目标效果
你对小米音箱说一句话 → 小爱把识别出来的文本发到你的服务器 → 服务器调用 OpenClaw /v1/chat/completions → 把回复文本回给小爱 → 音箱播报。

架构

小米音箱(ASR) → 小爱技能云回调(HTTPS) → 你的 Webhook 服务 → OpenClaw HTTP → 返回文本 → 小爱(TTS)播报

需要准备

  1. 小爱开放平台账号 & 创建自定义技能(控制台里“技能开发 → 自定义技能”
  2. 一台公网可访问的 HTTPS 服务(域名+证书,平台回调一般要求 HTTPS)
  3. OpenClaw 开启 OpenAI 兼容 HTTP 端点POST /v1/chat/completions

关键实现点(最少集成步骤)

  1. 在小爱平台创建“自定义技能”,配置:
    • 唤醒词/技能名称
    • 意图/槽位(最简单:把用户整句当作 query 文本)
    • 服务端回调 URL(你的 https://xxx.com/xiaoai/webhook
  2. 你的 Webhook 服务收到小爱请求后:
    • 校验签名/Token(按小爱平台文档要求)
    • 取出用户说的话 query
    • 调 OpenClaw:
      • POST http://<openclaw-gateway-host>:<port>/v1/chat/completions ([OpenClaw][2])
    • 把 OpenClaw 返回的 content 拼回小爱要求的 JSON 响应格式(让它走 TTS)

一个“桥接服务”的最小示例(Node/Express)

下面示例只演示“把文本转给 OpenClaw 再返回文本”,小爱那边的签名校验/响应格式字段你需要按平台文档补齐。

import express from "express";

const app = express();
app.use(express.json());

app.post("/xiaoai/webhook", async (req, res) => {
  // 1) TODO: 校验小爱签名/鉴权(按平台文档)
  const userText =
    req.body?.request?.intent?.query ||
    req.body?.query ||
    req.body?.request?.query ||
    "";

  // 2) 调 OpenClaw OpenAI 兼容端点
  const r = await fetch("http://127.0.0.1:18789/v1/chat/completions", {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify({
      model: "auto",
      messages: [
        { role: "system", content: "你是简洁的中文语音助手,回答尽量短。" },
        { role: "user", content: userText },
      ],
    }),
  });

  const data = await r.json();
  const answer = data?.choices?.[0]?.message?.content?.trim() || "我没听清。";

  // 3) TODO: 按小爱自定义技能要求组织响应 JSON(这里先用占位)
  return res.json({
    // 你需要替换成小爱平台规定的字段
    reply: answer,
  });
});

app.listen(3000, () => console.log("xiaoai bridge on :3000"));

方案2:用 Home Assistant 把「小米生态」接进来,再用自动化把文本丢给 OpenClaw

(更适合“语音触发联动”)

目标效果:你对音箱说“打开客厅灯 / 执行某个场景” → 小米生态设备/场景状态进 Home Assistant → HA 自动化触发 → 调 OpenClaw(做总结/播报/记录/执行额外动作)。

需要准备

  • Home Assistant
  • 小米官方 Xiaomi Home 集成(支持 OAuth2 登录)
  • (可选)用 HA 的 webhook / REST 命令把事件转发给 OpenClaw

这条路的优点:不需要做小爱技能审核流程也能玩很多联动;缺点:更像“智能家居联动”,不是真正的“任意问答式聊天”。

选型建议(直接结论)

  • 你要的是:“把音箱当语音入口,能跟 OpenClaw 自由聊天” → 选 A(小爱自定义技能)
  • 你要的是:“小米设备/场景进中枢,再让 OpenClaw 参与自动化” → 选 B(Home Assistant)

可以,用 Home Assistant 的思路大概是:把“小米生态”接进 HA,当成触发源/执行器;OpenClaw 当成“脑子”;音箱负责“听/说”或“播报”。(但要注意:很多小米音箱在 HA 里不一定能作为标准 media_player 直接播 TTS,这跟型号/协议有关。)

用 Home Assistant 的两种典型玩法

玩法 A:小爱负责语音(云),HA 做自动化,OpenClaw 做决策/生成文本

你对音箱说:“打开客厅灯,并告诉我今天待办”

  • 小爱 -> 触发米家场景/设备
  • HA 监听设备状态变化 / 场景触发
  • HA 调 OpenClaw 生成一句“播报文本/总结”
  • HA 再把文本“播”到某个可播报的设备(Chromecast/Google speaker/ESPHome speaker 等)

适合:你已经有 HA 中枢、想把 OpenClaw 变成“解释器/总结器/记录员”。

玩法 B:HA 本地 Assist 做语音入口(更像“本地语音助手”)

  • 用 HA Assist(本地/半本地的语音管线)做 STT/TTS
  • OpenClaw 作为对话后端(你写一个 middleware 把文本转给 OpenClaw)
  • HA 负责把回复 TTS 播出来(到 HA 的 voice satellite 或 media_player)

适合:你想把整个链路尽量“本地化”,但工程量更高。

2)接入小米设备(HA 侧)

现在主流是用 Xiaomi Home Integration(官方/官方合作路线,OAuth2 登录,不保存密码)。

做法(很短):

  • HA:Settings → Devices & services → Add Integration → Xiaomi Home(会引导 OAuth 登录)
  • 登录后,设备会以 entity 的形式出现(灯、插座、传感器、空调等)

3)HA 里怎么“调用 OpenClaw”

核心就是:HA 自动化 → 发 HTTP 请求给 OpenClaw。HA 里常见做法是 rest_command(以及自动化 action 调用它),社区里也经常这么用来“发 webhook / HTTP 请求”。

例:configuration.yaml

rest_command:
  openclaw_chat:
    url: "http://127.0.0.1:18789/v1/chat/completions"
    method: POST
    headers:
      content-type: "application/json"
    payload: >
      {
        "model":"auto",
        "messages":[
          {"role":"system","content":"你是简洁的中文家庭助手。"},
          {"role":"user","content":"{{ prompt }}"}
        ]
      }

然后自动化里:

  • Trigger:某个小米设备状态变化(比如门磁打开)
  • Action:调用 rest_command.openclaw_chat,把 prompt 填进去
  • 再把返回内容做播报/通知(见下一节)

自动化触发器的基本概念参考 HA 文档:状态变化、事件等都能触发。

4)OpenClaw 的回复怎么“播出来”

这一步是最容易踩坑的:小米音箱能不能被 HA 当作 media_player 播 TTS,很多时候并不稳/不通用(社区里关于 Xiaomi Smart Speaker / network speaker 的讨论很多,但并没有“统一的官方可行方式”适配所有型号)。

所以一般有三条“务实”路线:

路线 1:播到“HA 里已经稳定的播报设备”

  • Chromecast / Google Nest / Sonos / ESPHome speaker / HA Voice Assistant satellite 等
    (这类在 HA 里 TTS/播放链路更成熟)

路线 2:不播 TTS,改成通知

  • HA 手机 App 推送
  • Telegram/飞书(你本来就有 bot 体系)

路线 3:音箱继续走“小爱云播报”

  • 让 HA 调用米家场景/小爱技能去播报(取决于你能否把“播报动作”做成场景/服务)

5)该怎么选

(现在的 OpenClaw 目标)

  • 你要的是“音箱=自由聊天入口”:优先走“小爱自定义技能 → OpenClaw”(不需要 HA)
  • 你要的是“全屋自动化 + OpenClaw 参与决策/总结”:用 HA(设备接入、触发、联动都在 HA)
滚动至顶部