OpenClaw Microsoft Teams cards and actions
The Graph-backed member-info action and its roster limits, native approval cards with approve once, always allow and deny, polls as Adaptive Cards with votes in SQLite, presentation cards from the generic contract, the user and conversation target formats, and the proactive messaging rule
Teams has no native poll, no button component outside Adaptive Cards and no way to message someone the bot has never met, so OpenClaw builds its rich surfaces on cards and keeps a strict target grammar. Here are the roster lookup, the approval cards, polls, presentation cards, the target formats, and the proactive rule.
Member info and approvals
- The Graph-backed member-info action lets agents and automations resolve verified roster details for a configured conversation; it needs the channel settings read and team member read RSC permissions, is available whenever Graph credentials are configured with no separate toggle, returns the team-roster identity, display name, email and roles for standard channels, can return the trusted sender's stable user ID in the current DM or group chat, and rejects private, shared-channel and non-current chat lookups under the default permission baseline.
- Exec and plugin approval requests can be delivered as Adaptive Cards in the originating conversation, each card describing the requested command or plugin action and offering only the decisions allowed for that request, such as approve once, always allow and deny, and OpenClaw updates the original card with its final status after a decision or expiry.
- Native cards use the existing top-level approval forwarding settings, with exec and plugin approvals independent of each other, and require a configured Teams bot plus at least one approver resolved from the channel allowlist or the default target; approvers must be stable AAD object IDs, since display names, email addresses, group entries and conversation IDs grant no approval access, and OpenClaw checks the clicking user's object ID before resolving the request.
- No Teams-specific approval configuration is required, and the approve command with an ID and a decision remains a text fallback when native delivery is unavailable.
OpenClaw sends Teams polls as Adaptive Cards (there is no native Teams poll API).
Polls and presentation cards
Polls are created from the CLI with the message poll command, the Teams channel, a conversation target, a question and repeated options; votes are recorded by the gateway in the plugin-state SQLite database, existing poll JSON files are imported by the doctor fix rather than by the running plugin, the gateway must stay online to record votes, and polls neither post result summaries automatically nor have a results command. Presentation cards send semantic payloads to users or conversations through the message tool, the CLI or normal reply delivery, rendered as Adaptive Cards from the generic presentation contract: the presentation parameter takes semantic blocks, the message text becomes optional when it is present, buttons render as submit or URL actions, and select menus, which the Teams renderer lacks, are downgraded to readable text before delivery.
Targets and proactive messages
- Targets carry a prefix: a user by AAD object ID, a user by display name, which triggers a Graph lookup, a group or channel by conversation ID with the conversation prefix, or a raw conversation ID such as the thread and spaces forms or a bare Bot Framework ID.
- Without the user prefix a name defaults to group or team resolution, so the docs say to always use the user prefix when targeting people by display name; the CLI examples send to a user by ID, to a user by name, to a conversation, and a presentation card to a conversation.
- Proactive messages are only possible after a user has interacted, because OpenClaw stores conversation references at that point, and they remain subject to the DM policy and allowlist gating.
OpenClaw on Microsoft Teams is the channel post these surfaces belong to, and OpenClaw Microsoft Teams manifest and permissions the RSC permissions the roster lookup needs.
Cards where buttons would be
Rendering approvals as cards that only show the allowed decisions and rewrite themselves with the outcome is what makes chat approval safe on a platform without native components. OpenClaw exec approvals covers the approval model those cards drive, and OpenClaw Slack charts, tables and approvals the Block Kit equivalents on Slack.
On Diali
Microsoft Teams is not among the channels Diali connects today: WhatsApp, Telegram, Discord, Slack, Mattermost, Matrix, SMS and voice. Hosted OpenClaw on Diali is the assistant and Diali security describes the boundary that applies to each connected channel.
- Approvers are object IDs; names and emails approve nothing.
- Polls are cards; votes live in SQLite while the gateway is up.
- Prefix people with user; proactive sends need a prior interaction.
Stop reading about it, build one
Set up an agent, pick a channel, and have it working inside the app you already keep open.
