Canal Microsoft Teams OpenClaw
Connectez OpenClaw à Microsoft Teams en utilisant le Bot Framework via une ressource Azure Bot. Cette intégration basée sur un plugin permet à votre assistant IA de fonctionner dans Teams — en gérant les messages privés, les discussions de groupe et les conversations de canal. OpenClaw reçoit les événements webhook du Bot Framework sur /api/messages et répond via l'API de messagerie Teams, avec prise en charge des réponses en fil de discussion, des Adaptive Cards, des réactions, du partage de fichiers via SharePoint et des configurations personnalisées par équipe/canal.
Microsoft Teams Fonctionnalités prises en charge
Messages texte
Pris en charge
Médias et fichiers
Pris en charge
Réactions
Pris en charge
Fils de discussion
Pris en charge
Messages vocaux
Non pris en charge
Discussion de groupe
Pris en charge
Microsoft Teams Prérequis
- Un compte Azure avec les permissions nécessaires pour créer une ressource Azure Bot
- Un Azure Bot enregistré avec un App ID, un App Password (secret client) et un Tenant ID (single-tenant recommandé)
- Un manifeste d'application Teams (manifest.json) avec la configuration du bot, les portées et les icônes (outline.png 32×32, color.png 192×192)
- La passerelle OpenClaw en cours d'exécution et accessible via une URL HTTPS publique ou un tunnel (port webhook par défaut 3978)
- Le plugin Teams installé : openclaw plugins install @openclaw/msteams
Microsoft Teams Configuration rapide
Créer une ressource Azure Bot
Accédez au portail Azure → Créer une ressource → Recherchez 'Azure Bot'. Créez avec le type Single Tenant. Dans l'enregistrement d'application, générez un secret client. Copiez l'App ID, le secret client et le Tenant ID — vous aurez besoin des trois pour la configuration d'OpenClaw.
Installer le plugin Teams et configurer
Exécutez 'openclaw plugins install @openclaw/msteams' pour installer le plugin. Ajoutez la configuration du canal Teams à votre openclaw.json avec appId, appPassword et tenantId. Vous pouvez également utiliser les variables d'environnement MSTEAMS_APP_ID, MSTEAMS_APP_PASSWORD et MSTEAMS_TENANT_ID.
Configurer le point de terminaison de messagerie et activer le canal Teams
Dans le portail Azure, accédez à votre ressource Bot → Configuration. Définissez le point de terminaison de messagerie sur 'https://<votre-domaine>/api/messages'. Ensuite, allez dans Canaux → Ajouter Microsoft Teams → Configurer. Pour le développement local, utilisez un tunnel (ngrok ou Tailscale Funnel) pour exposer le port 3978.
Créer et installer l'application Teams
Créez un manifest.json avec l'App ID de votre bot comme botId, les portées (personal, team, groupChat) et les permissions RSC. Compressez-le avec outline.png et color.png. Téléversez via le portail développeur Teams ou le centre d'administration Teams. Pour les tests, chargez le package d'application en mode sideload.
Tester le bot
Trouvez votre bot dans Teams et envoyez-lui un message direct. Si vous utilisez la politique d'appariement par défaut, approuvez l'expéditeur via 'openclaw pairing approve msteams <code>' dans votre terminal. Le bot devrait répondre avec des réponses générées par l'IA.
Microsoft Teams Exemple de configuration
{
"channels": {
"msteams": {
"enabled": true,
"appId": "YOUR_APP_ID",
"appPassword": "YOUR_APP_PASSWORD",
"tenantId": "YOUR_TENANT_ID",
"webhook": {
"port": 3978,
"path": "/api/messages"
}
}
}
}Microsoft Teams Documentation Détaillée
Vue d'ensemble de l'architecture
Configuration Azure Bot et enregistrement d'application
{
"channels": {
"msteams": {
"appId": "<APP_ID>",
"appPassword": "<APP_PASSWORD>",
"tenantId": "<TENANT_ID>"
}
}
}Manifeste d'application Teams et permissions RSC
Politiques de messages privés
{
"channels": {
"msteams": {
"dmPolicy": "allowlist",
"allowFrom": [
"user@org.com",
"40a1a0ed-4ff2-4164-a219-55518990c197"
]
}
}
}Gestion des discussions de groupe et des canaux
{
"channels": {
"msteams": {
"groupPolicy": "allowlist",
"groupAllowFrom": ["user@org.com"],
"teams": {
"My Team": {
"channels": {
"General": {
"requireMention": true
}
}
}
}
}
}
}Styles de réponse et fils de discussion
{
"channels": {
"msteams": {
"replyStyle": "thread",
"teams": {
"19:abc...@thread.tacv2": {
"channels": {
"19:xyz...@thread.tacv2": {
"replyStyle": "top-level"
}
}
}
}
}
}
}Gestion des fichiers et SharePoint
{
"channels": {
"msteams": {
"sharePointSiteId": "YOUR_SHAREPOINT_SITE_ID",
"mediaAllowHosts": ["*.microsoft.com", "*.sharepoint.com"],
"mediaAuthAllowHosts": ["graph.microsoft.com"]
}
}
}Adaptive Cards et sondages
Extraction des identifiants Teams
Microsoft Teams Référence de Configuration
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Activer ou désactiver le canal Microsoft Teams |
| appId | string | "" | App ID de l'Azure Bot (Microsoft App ID). Peut aussi utiliser la variable d'environnement MSTEAMS_APP_ID |
| appPassword | string | "" | Secret client de l'Azure Bot. Peut aussi utiliser la variable d'environnement MSTEAMS_APP_PASSWORD |
| tenantId | string | "" | Azure AD Tenant ID pour l'authentification single-tenant. Peut aussi utiliser la variable d'environnement MSTEAMS_TENANT_ID |
| webhook.port | number | 3978 | Port du listener webhook qui reçoit les événements du Bot Framework |
| webhook.path | string | "/api/messages" | Chemin du point de terminaison webhook pour les messages entrants du Bot Framework |
| dmPolicy | string | "pairing" | Contrôle qui peut envoyer des messages privés au bot. Options : pairing, allowlist, open, disabled |
| allowFrom | string[] | [] | Identifiants d'objet AAD, UPN ou noms d'affichage autorisés à envoyer des messages privés au bot (quand dmPolicy est allowlist) |
| groupPolicy | string | "allowlist" | Contrôle d'accès pour les groupes/canaux. Options : allowlist, open, disabled |
| groupAllowFrom | string[] | [] | Expéditeurs autorisés dans les discussions de groupe. Se rabat sur allowFrom si non défini |
| teams | object | {} | Configurations personnalisées par équipe et par canal (replyStyle, requireMention, tools) |
| requireMention | boolean | true | Exiger une @mention dans les canaux et discussions de groupe. Définir sur false avec les permissions RSC pour répondre à tous les messages |
| replyStyle | string | "thread" | Style de disposition des réponses. Options : thread (Posts classiques), top-level (Threads de type Slack) |
| configWrites | boolean | true | Autoriser les commandes /config set|unset à modifier les paramètres du canal en temps réel |
| textChunkLimit | number | — | Nombre maximum de caractères par message sortant avant découpage |
| chunkMode | string | "length" | Stratégie de découpage du texte. Options : length (découpage strict), newline (respecte les paragraphes) |
| sharePointSiteId | string | "" | Identifiant du site SharePoint pour les téléversements de fichiers dans les discussions de groupe/canaux |
| mediaAllowHosts | string[] | Domaines MS/Teams | Hôtes autorisés pour le téléchargement des pièces jointes multimédias |
| mediaAuthAllowHosts | string[] | Graph + Bot Framework | Hôtes qui reçoivent les en-têtes Authorization lors du téléchargement de médias |
| dmHistoryLimit | number | 50 | Nombre de messages privés récents inclus comme contexte IA par conversation |
| historyLimit | number | 50 | Nombre maximum de messages de canal/groupe inclus comme contexte IA |
Activer ou désactiver le canal Microsoft Teams
App ID de l'Azure Bot (Microsoft App ID). Peut aussi utiliser la variable d'environnement MSTEAMS_APP_ID
Secret client de l'Azure Bot. Peut aussi utiliser la variable d'environnement MSTEAMS_APP_PASSWORD
Azure AD Tenant ID pour l'authentification single-tenant. Peut aussi utiliser la variable d'environnement MSTEAMS_TENANT_ID
Port du listener webhook qui reçoit les événements du Bot Framework
Chemin du point de terminaison webhook pour les messages entrants du Bot Framework
Contrôle qui peut envoyer des messages privés au bot. Options : pairing, allowlist, open, disabled
Identifiants d'objet AAD, UPN ou noms d'affichage autorisés à envoyer des messages privés au bot (quand dmPolicy est allowlist)
Contrôle d'accès pour les groupes/canaux. Options : allowlist, open, disabled
Expéditeurs autorisés dans les discussions de groupe. Se rabat sur allowFrom si non défini
Configurations personnalisées par équipe et par canal (replyStyle, requireMention, tools)
Exiger une @mention dans les canaux et discussions de groupe. Définir sur false avec les permissions RSC pour répondre à tous les messages
Style de disposition des réponses. Options : thread (Posts classiques), top-level (Threads de type Slack)
Autoriser les commandes /config set|unset à modifier les paramètres du canal en temps réel
Nombre maximum de caractères par message sortant avant découpage
Stratégie de découpage du texte. Options : length (découpage strict), newline (respecte les paragraphes)
Identifiant du site SharePoint pour les téléversements de fichiers dans les discussions de groupe/canaux
Hôtes autorisés pour le téléchargement des pièces jointes multimédias
Hôtes qui reçoivent les en-têtes Authorization lors du téléchargement de médias
Nombre de messages privés récents inclus comme contexte IA par conversation
Nombre maximum de messages de canal/groupe inclus comme contexte IA
Microsoft Teams Questions Fréquentes
Microsoft Teams Dépannage
Les permissions de l'API Graph n'ont pas été accordées ou le consentement de l'administrateur est manquant. Le bot reçoit un contenu partiel au lieu du fichier réel.
Le bot nécessite une @mention par défaut dans les canaux et les discussions de groupe, ou les permissions RSC ne sont pas configurées.
Teams met agressivement en cache les métadonnées de l'application. L'ancien manifeste est toujours utilisé.
Les valeurs appId, appPassword ou tenantId dans la configuration OpenClaw ne correspondent pas à l'enregistrement Azure Bot, ou test manuel sans tokens JWT Azure appropriés.
Microsoft Teams avait historiquement une prise en charge limitée des bots dans les canaux privés. Depuis début 2026, Microsoft déploie une prise en charge étendue des applications dans les canaux privés, mais cela peut ne pas encore être disponible dans tous les tenants.