Canal Microsoft Teams do OpenClaw
Conecte o OpenClaw ao Microsoft Teams usando o Bot Framework por meio de um Azure Bot Resource. Essa integração baseada em plugin permite que seu assistente de IA opere no Teams — lidando com DMs pessoais, chats em grupo e conversas em canais. O OpenClaw recebe eventos de webhook do Bot Framework em /api/messages e responde pela API de mensagens do Teams, suportando respostas em threads, Adaptive Cards, reações, compartilhamento de arquivos via SharePoint e substituições de configuração por equipe/canal.
Microsoft Teams Recursos suportados
Mensagens de texto
Suportado
Mídia e arquivos
Suportado
Reações
Suportado
Threads
Suportado
Mensagens de voz
Não suportado
Chat em grupo
Suportado
Microsoft Teams Pré-requisitos
- Uma conta Azure com permissões para criar um recurso Azure Bot
- Um Azure Bot registrado com App ID, App Password (client secret) e Tenant ID (single-tenant recomendado)
- Um Teams App Manifest (manifest.json) com configuração do bot, escopos e ícones (outline.png 32×32, color.png 192×192)
- OpenClaw Gateway em execução e acessível via URL HTTPS pública ou túnel (porta padrão do webhook 3978)
- O plugin do Teams instalado: openclaw plugins install @openclaw/msteams
Microsoft Teams Configuração rápida
Criar um recurso Azure Bot
Acesse o Portal Azure → Criar um recurso → Pesquise 'Azure Bot'. Crie com o tipo Single Tenant. No App Registration, gere um client secret. Copie o App ID, client secret e Tenant ID — você precisará dos três para a configuração do OpenClaw.
Instalar o plugin do Teams e configurar
Execute 'openclaw plugins install @openclaw/msteams' para instalar o plugin. Adicione a configuração do canal Teams ao seu openclaw.json com appId, appPassword e tenantId. Você também pode usar as variáveis de ambiente MSTEAMS_APP_ID, MSTEAMS_APP_PASSWORD e MSTEAMS_TENANT_ID.
Definir o endpoint de mensagens e habilitar o canal Teams
No Portal Azure, navegue até seu recurso Bot → Configuration. Defina o endpoint de mensagens como 'https://<your-domain>/api/messages'. Em seguida, vá para Channels → Add Microsoft Teams → Configure. Para desenvolvimento local, use um túnel (ngrok ou Tailscale Funnel) para expor a porta 3978.
Criar e instalar o Teams App
Crie um manifest.json com o App ID do seu bot como botId, escopos (personal, team, groupChat) e permissões RSC. Compacte-o em zip com outline.png e color.png. Faça upload pelo Teams Developer Portal ou Teams Admin Center. Para testes, faça sideload do pacote do app.
Testar o bot
Encontre seu bot no Teams e envie uma mensagem direta. Se estiver usando a política de pareamento padrão, aprove o remetente via 'openclaw pairing approve msteams <code>' no seu terminal. O bot deverá responder com respostas geradas por IA.
Microsoft Teams Exemplo de configuração
{
"channels": {
"msteams": {
"enabled": true,
"appId": "YOUR_APP_ID",
"appPassword": "YOUR_APP_PASSWORD",
"tenantId": "YOUR_TENANT_ID",
"webhook": {
"port": 3978,
"path": "/api/messages"
}
}
}
}Microsoft Teams Documentação Detalhada
Visão Geral da Arquitetura
Configuração do Azure Bot e App Registration
{
"channels": {
"msteams": {
"appId": "<APP_ID>",
"appPassword": "<APP_PASSWORD>",
"tenantId": "<TENANT_ID>"
}
}
}Teams App Manifest e Permissões RSC
Políticas de DM
{
"channels": {
"msteams": {
"dmPolicy": "allowlist",
"allowFrom": [
"user@org.com",
"40a1a0ed-4ff2-4164-a219-55518990c197"
]
}
}
}Gerenciamento de Chats em Grupo e Canais
{
"channels": {
"msteams": {
"groupPolicy": "allowlist",
"groupAllowFrom": ["user@org.com"],
"teams": {
"My Team": {
"channels": {
"General": {
"requireMention": true
}
}
}
}
}
}
}Estilos de Resposta e Threading
{
"channels": {
"msteams": {
"replyStyle": "thread",
"teams": {
"19:abc...@thread.tacv2": {
"channels": {
"19:xyz...@thread.tacv2": {
"replyStyle": "top-level"
}
}
}
}
}
}
}Manipulação de Arquivos e SharePoint
{
"channels": {
"msteams": {
"sharePointSiteId": "YOUR_SHAREPOINT_SITE_ID",
"mediaAllowHosts": ["*.microsoft.com", "*.sharepoint.com"],
"mediaAuthAllowHosts": ["graph.microsoft.com"]
}
}
}Adaptive Cards e Enquetes
Extração de IDs do Teams
Microsoft Teams Referência de Configuração
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Ativar ou desativar o canal Microsoft Teams |
| appId | string | "" | Azure Bot App ID (Microsoft App ID). Também pode usar a variável de ambiente MSTEAMS_APP_ID |
| appPassword | string | "" | Client secret do Azure Bot. Também pode usar a variável de ambiente MSTEAMS_APP_PASSWORD |
| tenantId | string | "" | Azure AD Tenant ID para autenticação single-tenant. Também pode usar a variável de ambiente MSTEAMS_TENANT_ID |
| webhook.port | number | 3978 | Porta para o listener de webhook que recebe eventos do Bot Framework |
| webhook.path | string | "/api/messages" | Caminho do endpoint de webhook para mensagens recebidas do Bot Framework |
| dmPolicy | string | "pairing" | Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled |
| allowFrom | string[] | [] | AAD object IDs, UPNs ou nomes de exibição autorizados a enviar DM ao bot (quando dmPolicy é allowlist) |
| groupPolicy | string | "allowlist" | Controle de acesso a grupos/canais. Opções: allowlist, open, disabled |
| groupAllowFrom | string[] | [] | Remetentes permitidos em chats em grupo. Usa allowFrom como fallback se não definido |
| teams | object | {} | Substituições de configuração por equipe e por canal (replyStyle, requireMention, tools) |
| requireMention | boolean | true | Exigir @mention em canais e chats em grupo. Defina false com permissões RSC para responder a todas as mensagens |
| replyStyle | string | "thread" | Estilo de layout de resposta. Opções: thread (Posts clássico), top-level (Threads estilo Slack) |
| configWrites | boolean | true | Permitir que comandos /config set|unset modifiquem configurações do canal em tempo de execução |
| textChunkLimit | number | — | Máximo de caracteres por mensagem enviada antes da fragmentação |
| chunkMode | string | "length" | Estratégia de fragmentação de texto. Opções: length (divisão rígida), newline (ciente de parágrafos) |
| sharePointSiteId | string | "" | ID do site SharePoint para uploads de arquivos em chats em grupo/canais |
| mediaAllowHosts | string[] | MS/Teams domains | Hosts permitidos para download de anexos de mídia |
| mediaAuthAllowHosts | string[] | Graph + Bot Framework | Hosts que recebem cabeçalhos Authorization ao baixar mídia |
| dmHistoryLimit | number | 50 | Número de mensagens de DM recentes incluídas como contexto da IA por conversa |
| historyLimit | number | 50 | Máximo de mensagens de canal/grupo incluídas como contexto da IA |
Ativar ou desativar o canal Microsoft Teams
Azure Bot App ID (Microsoft App ID). Também pode usar a variável de ambiente MSTEAMS_APP_ID
Client secret do Azure Bot. Também pode usar a variável de ambiente MSTEAMS_APP_PASSWORD
Azure AD Tenant ID para autenticação single-tenant. Também pode usar a variável de ambiente MSTEAMS_TENANT_ID
Porta para o listener de webhook que recebe eventos do Bot Framework
Caminho do endpoint de webhook para mensagens recebidas do Bot Framework
Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled
AAD object IDs, UPNs ou nomes de exibição autorizados a enviar DM ao bot (quando dmPolicy é allowlist)
Controle de acesso a grupos/canais. Opções: allowlist, open, disabled
Remetentes permitidos em chats em grupo. Usa allowFrom como fallback se não definido
Substituições de configuração por equipe e por canal (replyStyle, requireMention, tools)
Exigir @mention em canais e chats em grupo. Defina false com permissões RSC para responder a todas as mensagens
Estilo de layout de resposta. Opções: thread (Posts clássico), top-level (Threads estilo Slack)
Permitir que comandos /config set|unset modifiquem configurações do canal em tempo de execução
Máximo de caracteres por mensagem enviada antes da fragmentação
Estratégia de fragmentação de texto. Opções: length (divisão rígida), newline (ciente de parágrafos)
ID do site SharePoint para uploads de arquivos em chats em grupo/canais
Hosts permitidos para download de anexos de mídia
Hosts que recebem cabeçalhos Authorization ao baixar mídia
Número de mensagens de DM recentes incluídas como contexto da IA por conversa
Máximo de mensagens de canal/grupo incluídas como contexto da IA
Microsoft Teams Perguntas Frequentes
Microsoft Teams Solução de Problemas
As permissões da Graph API não foram concedidas ou o consentimento do administrador está ausente. O bot recebe um stub de conteúdo em vez do arquivo real.
O bot requer @mention por padrão em canais e chats em grupo, ou as permissões RSC não estão configuradas.
O Teams armazena metadados do app em cache de forma agressiva. O manifest antigo ainda está em uso.
O appId, appPassword ou tenantId na configuração do OpenClaw não correspondem ao registro do Azure Bot, ou está testando manualmente sem tokens JWT do Azure adequados.
O Microsoft Teams historicamente tinha suporte limitado a bots em canais privados. Desde o início de 2026, a Microsoft está implantando suporte completo a aplicativos em canais privados, mas pode ainda não estar disponível em todos os tenants.