Skip to main content
Part 3 of the Teams setup. You have the app package - now put it in front of Teams users. Pick the route that matches how widely the bot should be available.

Choose an upload route

Best for testing and personal use. In Teams, go to Apps → Manage your apps → Upload an app:
Microsoft Teams Apps page with Manage your apps and the Upload an app button highlighted
Choose Upload a custom app and select the zip. The bot is then available to you; open it and call.
Teams Upload an app dialog with the Upload a custom app option highlighted
This requires custom app upload to be allowed for your account - if the button is missing, ask your Teams admin (policy reference: Manage custom app policies and settings).Official walkthrough: Upload your app in Teams.

Register your agent in StandIn

In your StandIn dashboard, register your Agent voice URL and the matching HMAC sharedSecret (done automatically if you used pairing). If you also want Teams chat, set the optional Agent chat URL (https://<your-public-host>/api/messages; leave it empty if you only use voice).

Place the first call

Search for the app in Teams (or open it under Apps → Built for your org after an org publish), then call the bot. StandIn answers, connects to your bridge, and your agent speaks.
First chat message ignored? Using OpenClaw, its chat channel drops direct messages from senders you have not approved (dmPolicy: pairing, the default) - approve yourself with openclaw pairing approve msteams <CODE>. Using Hermes, an unknown sender gets a pairing-code reply instead of an answer - approve it with hermes pairing approve teams <CODE> (with TEAMS_ALLOWED_USERS set, unlisted senders are dropped silently instead). Details: the bot ignores Teams chat.

If something does not work

  • Bot never joins the call → check the calling webhook on the Teams channel and that Graph permissions are admin-consented.
  • Bot joins but stays silent → usually a sharedSecret mismatch or an unreachable Agent voice URL; see Troubleshooting.
  • Upload rejected → re-check the package layout (files at the zip root) and bump the manifest version on republish.