Skip to main content
Pick your runtime. Both paths get you to a live Teams call where your agent answers in voice.

Prerequisites

  • A working OpenClaw or Hermes Agent install (the host).
  • A media worker that bridges the live Teams call into the plugin over an HMAC WebSocket (the worker renders the avatar tile and forwards audio/video; it dials this plugin).
  • A realtime voice provider key (for realtime mode) - e.g. OpenAI or Azure OpenAI. Streaming mode uses your host’s configured STT/TTS instead.
1

Install

openclaw plugins install clawhub:@komaa/msteams-voice
cd extensions/msteams-voice && pnpm install && pnpm build
2

Configure

Add a msteams-voice entry to your OpenClaw config - sharedSecret must match the worker:
{
  "plugins": {
    "entries": {
      "msteams-voice": {
        "config": {
          "enabled": true,
          "mode": "realtime",
          "port": 9442,
          "path": "/voice/msteams/stream",
          "sharedSecret": "<same secret as the Teams worker>",
          "inboundPolicy": "allowlist",
          "allowFrom": ["<caller AAD object id>"],
          "realtime": {
            "provider": "openai",
            "providers": {
              "openai": { "apiKey": "<key>", "model": "gpt-realtime" }
            }
          }
        }
      }
    }
  }
}
Full reference → OpenClaw configuration.
3

Run + call

Start the gateway (openclaw gateway run), point the worker’s WebSocket URL at ws://<host>:9442/voice/msteams/stream with the matching secret, then place a Teams call to the bot.
Streaming mode (no realtime key needed) is a one-line change - see Modes.