Microsoft Teams
Put a Pepe agent in Microsoft Teams so your team can chat with it there.
Microsoft Teams
Connecting Teams lets your team chat with the agent where they already work. Teams talks to bots through Microsoft’s Bot Framework; configure the connection through the guided setup (or the dashboard):
pepe setup
A connection’s config holds:
app_id: the bot’s Microsoft app (client) id.app_password: the client secret. Store it as${ENV_VAR}.tenant_id: the Azure tenant id (orbotframework.com).
Inbound activities arrive as POSTs. Replies go back to the activity’s
service URL with an app access token minted from the client credentials. The
bot mention is stripped from the incoming text before the agent sees it.
Callback URL shape:
https://YOUR_HOST/webhooks/default/msteams/<slug>
Inbound authentication
Pepe checks that every incoming request really comes from Microsoft before the
agent sees anything: each request carries an Authorization: Bearer Bot
Framework token, and Pepe validates it (signature against Microsoft’s published
keys, issuer, and an audience equal to the bot’s app_id). So the endpoint
accepts POSTs straight from Microsoft, with no validating proxy required.
If your proxy already performs that check, set trust_proxy: true on the
connection to skip Pepe’s.
See Webhooks for the fields every connection shares (agent,
mode, trainers, session_ttl_min, ephemeral, commands) and how the
generic route works under the hood.
Switching models
The /model and /models commands let people check or change which AI model
answers them. They work only on an admin-mode connection with commands
enabled; on support, they are treated as plain text. /models lists the
models available to this connection’s project; /model shows the current
one, or changes it:
/model openrouter # ask whether to switch just this chat or everyone
/model openrouter session # switch for this conversation only
/model openrouter global # switch for everyone this connection talks to
Anyone in an allowed conversation may switch the model for their own
conversation. Switching it globally, for everyone this connection talks
to, is reserved for trainers, the same trusted list that controls memory.
Set model_switch_locked: true on the connection to turn model-switching off
entirely for non-trainers.