chore(i18n): refresh fr translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-21 17:48:09 +00:00
parent 083da599d5
commit f349af7b7a
5 changed files with 914 additions and 874 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,17 +4,17 @@ read_when:
summary: Configuration de Slack et comportement à lexécution (Socket Mode + URL de requête HTTP)
title: Slack
x-i18n:
generated_at: "2026-04-21T13:35:21Z"
generated_at: "2026-04-21T17:45:44Z"
model: gpt-5.4
provider: openai
source_hash: 2fe3c3c344e1c20c09b29773f4f68d2790751e76d8bbaa3c6157e3ff75978acf
source_hash: f30b372a3ae10b7b649532181306e42792aca76b41422516e9633eb79f73f009
source_path: channels/slack.md
workflow: 15
---
# Slack
Statut : prêt pour la production pour les messages privés et les canaux via les intégrations dapplication Slack. Le mode par défaut est Socket Mode ; les URL de requête HTTP sont également prises en charge.
Statut : prêt pour la production pour les messages privés + canaux via les intégrations dapplication Slack. Le mode par défaut est Socket Mode ; les URL de requête HTTP sont également prises en charge.
<CardGroup cols={3}>
<Card title="Appairage" icon="link" href="/fr/channels/pairing">
@ -24,7 +24,7 @@ Statut : prêt pour la production pour les messages privés et les canaux via l
Comportement natif des commandes et catalogue des commandes.
</Card>
<Card title="Dépannage des canaux" icon="wrench" href="/fr/channels/troubleshooting">
Diagnostics inter-canaux et guides de réparation.
Diagnostics inter-canaux et procédures de réparation.
</Card>
</CardGroup>
@ -34,12 +34,12 @@ Statut : prêt pour la production pour les messages privés et les canaux via l
<Tab title="Socket Mode (par défaut)">
<Steps>
<Step title="Créer une nouvelle application Slack">
Dans les paramètres de lapplication Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
Dans les paramètres de lapplication Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
- choisissez **from a manifest** et sélectionnez un espace de travail pour votre application
- collez le [manifeste dexemple](#manifest-and-scope-checklist) ci-dessous et continuez pour créer
- générez un **jeton de niveau application** (`xapp-...`) avec `connections:write`
- installez lapplication et copiez le **jeton du bot** (`xoxb-...`) affiché
- collez le [manifeste dexemple](#manifest-and-scope-checklist) ci-dessous et continuez pour créer lapplication
- générez un **App-Level Token** (`xapp-...`) avec `connections:write`
- installez lapplication et copiez le **Bot Token** (`xoxb-...`) affiché
</Step>
<Step title="Configurer OpenClaw">
@ -57,7 +57,7 @@ Statut : prêt pour la production pour les messages privés et les canaux via l
}
```
Solution de repli via les variables denvironnement (compte par défaut uniquement) :
Variable denvironnement de secours (compte par défaut uniquement) :
```bash
SLACK_APP_TOKEN=xapp-...
@ -80,12 +80,12 @@ openclaw gateway
<Tab title="URL de requête HTTP">
<Steps>
<Step title="Créer une nouvelle application Slack">
Dans les paramètres de lapplication Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
Dans les paramètres de lapplication Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
- choisissez **from a manifest** et sélectionnez un espace de travail pour votre application
- collez le [manifeste dexemple](#manifest-and-scope-checklist) et mettez à jour les URL avant de créer
- enregistrez le **secret de signature** pour la vérification des requêtes
- installez lapplication et copiez le **jeton du bot** (`xoxb-...`) affiché
- collez le [manifeste dexemple](#manifest-and-scope-checklist) et mettez à jour les URL avant de créer lapplication
- enregistrez le **Signing Secret** pour la vérification des requêtes
- installez lapplication et copiez le **Bot Token** (`xoxb-...`) affiché
</Step>
@ -106,9 +106,9 @@ openclaw gateway
```
<Note>
Utilisez des chemins de Webhook uniques pour le HTTP multi-compte
Utilisez des chemins de Webhook uniques pour le mode HTTP multi-comptes
Attribuez à chaque compte un `webhookPath` distinct (par défaut `/slack/events`) afin que les enregistrements nentrent pas en collision.
Donnez à chaque compte un `webhookPath` distinct (par défaut `/slack/events`) afin que les enregistrements nentrent pas en conflit.
</Note>
</Step>
@ -125,7 +125,7 @@ openclaw gateway
</Tab>
</Tabs>
## Liste de vérification du manifeste et des portées
## Liste de vérification du manifeste et des scopes
<Tabs>
<Tab title="Socket Mode (par défaut)">
@ -289,19 +289,19 @@ openclaw gateway
</Tab>
</Tabs>
### Paramètres de manifeste supplémentaires
### Paramètres supplémentaires du manifeste
Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-dessus.
<AccordionGroup>
<Accordion title="Commandes slash natives facultatives">
Plusieurs [commandes slash natives](#commands-and-slash-behavior) peuvent être utilisées au lieu dune seule commande configurée, avec quelques nuances :
Plusieurs [commandes slash natives](#commands-and-slash-behavior) peuvent être utilisées à la place dune seule commande configurée, avec quelques nuances :
- Utilisez `/agentstatus` au lieu de `/status`, car la commande `/status` est réservée.
- Il nest pas possible de rendre plus de 25 commandes slash disponibles en même temps.
- Il nest pas possible de rendre disponibles plus de 25 commandes slash à la fois.
Remplacez votre section existante `features.slash_commands` par un sous-ensemble des [commandes disponibles](/fr/tools/slash-commands#command-list) :
Remplacez votre section `features.slash_commands` existante par un sous-ensemble des [commandes disponibles](/fr/tools/slash-commands#command-list) :
<Tabs>
<Tab title="Socket Mode (par défaut)">
@ -338,7 +338,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/verbose",
"description": "Activer ou désactiver la sortie verbeuse",
"description": "Activer ou désactiver la sortie détaillée",
"usage_hint": "on|off|full"
},
{
@ -358,7 +358,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/exec",
"description": "Afficher ou définir les valeurs par défaut dexécution",
"description": "Afficher ou définir les valeurs par défaut dexec",
"usage_hint": "host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>"
},
{
@ -386,7 +386,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/agentstatus",
"description": "Afficher létat dexécution, y compris lutilisation/le quota du fournisseur lorsque disponible"
"description": "Afficher létat dexécution, y compris lutilisation/le quota du fournisseur lorsquil est disponible"
},
{
"command": "/tasks",
@ -403,7 +403,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/skill",
"description": "Exécuter une Skills par nom",
"description": "Exécuter une skill par nom",
"usage_hint": "<name> [input]"
},
{
@ -413,7 +413,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/usage",
"description": "Contrôler le pied de page dutilisation ou afficher le récapitulatif des coûts",
"description": "Contrôler le pied de page dutilisation ou afficher le résumé des coûts",
"usage_hint": "off|tokens|full|cost"
}
]
@ -460,7 +460,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/verbose",
"description": "Activer ou désactiver la sortie verbeuse",
"description": "Activer ou désactiver la sortie détaillée",
"usage_hint": "on|off|full",
"url": "https://gateway-host.example.com/slack/events"
},
@ -484,7 +484,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/exec",
"description": "Afficher ou définir les valeurs par défaut dexécution",
"description": "Afficher ou définir les valeurs par défaut dexec",
"usage_hint": "host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>",
"url": "https://gateway-host.example.com/slack/events"
},
@ -518,7 +518,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/agentstatus",
"description": "Afficher létat dexécution, y compris lutilisation/le quota du fournisseur lorsque disponible",
"description": "Afficher létat dexécution, y compris lutilisation/le quota du fournisseur lorsquil est disponible",
"url": "https://gateway-host.example.com/slack/events"
},
{
@ -539,7 +539,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/skill",
"description": "Exécuter une Skills par nom",
"description": "Exécuter une skill par nom",
"usage_hint": "<name> [input]",
"url": "https://gateway-host.example.com/slack/events"
},
@ -551,7 +551,7 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
},
{
"command": "/usage",
"description": "Contrôler le pied de page dutilisation ou afficher le récapitulatif des coûts",
"description": "Contrôler le pied de page dutilisation ou afficher le résumé des coûts",
"usage_hint": "off|tokens|full|cost",
"url": "https://gateway-host.example.com/slack/events"
}
@ -562,14 +562,14 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
</Tabs>
</Accordion>
<Accordion title="Portées dattribution facultatives (opérations décriture)">
Ajoutez la portée de bot `chat:write.customize` si vous souhaitez que les messages sortants utilisent lidentité de lagent actif (nom dutilisateur et icône personnalisés) au lieu de lidentité par défaut de lapplication Slack.
<Accordion title="Scopes dattribution facultatifs (opérations décriture)">
Ajoutez le scope bot `chat:write.customize` si vous voulez que les messages sortants utilisent lidentité de lagent actif (nom dutilisateur et icône personnalisés) au lieu de lidentité par défaut de lapplication Slack.
Si vous utilisez une icône emoji, Slack attend la syntaxe `:nom_emoji:`.
Si vous utilisez une icône emoji, Slack attend la syntaxe `:emoji_name:`.
</Accordion>
<Accordion title="Portées facultatives de jeton utilisateur (opérations de lecture)">
Si vous configurez `channels.slack.userToken`, les portées de lecture habituelles sont :
<Accordion title="Scopes facultatifs de jeton utilisateur (opérations de lecture)">
Si vous configurez `channels.slack.userToken`, les scopes de lecture typiques sont :
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@ -585,64 +585,64 @@ Exposez différentes fonctionnalités qui étendent les valeurs par défaut ci-d
## Modèle de jeton
- `botToken` + `appToken` sont requis pour Socket Mode.
- Le mode HTTP requiert `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` et `userToken` acceptent des chaînes en clair
ou des objets SecretRef.
- Les jetons de configuration remplacent la solution de repli via les variables denvironnement.
- La solution de repli via `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` ne sapplique quau compte par défaut.
- `userToken` (`xoxp-...`) est uniquement configurable dans la configuration (pas de solution de repli via variable denvironnement) et utilise par défaut un comportement en lecture seule (`userTokenReadOnly: true`).
- Le mode HTTP nécessite `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` et `userToken` acceptent des chaînes
en clair ou des objets SecretRef.
- Les jetons de configuration remplacent la variable denvironnement de secours.
- La variable denvironnement de secours `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` sapplique uniquement au compte par défaut.
- `userToken` (`xoxp-...`) est uniquement configurable dans la configuration (pas de variable denvironnement de secours) et utilise par défaut un comportement en lecture seule (`userTokenReadOnly: true`).
Comportement de linstantané détat :
Comportement de linstantané détat :
- Linspection du compte Slack suit les champs `*Source` et `*Status`
par identifiant (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Létat est `available`, `configured_unavailable` ou `missing`.
- `configured_unavailable` signifie que le compte est configuré via SecretRef
ou une autre source de secret non inline, mais que le chemin actuel de commande/dexécution
na pas pu résoudre la valeur réelle.
- En mode HTTP, `signingSecretStatus` est inclus ; en Socket Mode, la
ou une autre source de secret non inline, mais que la commande/le chemin
dexécution actuel na pas pu résoudre la valeur réelle.
- En mode HTTP, `signingSecretStatus` est inclus ; en Socket Mode, la
paire requise est `botTokenStatus` + `appTokenStatus`.
<Tip>
Pour les actions/lectures de répertoire, le jeton utilisateur peut être préféré lorsquil est configuré. Pour les écritures, le jeton bot reste prioritaire ; les écritures avec jeton utilisateur ne sont autorisées que lorsque `userTokenReadOnly: false` et que le jeton bot est indisponible.
Pour les actions/lectures de répertoire, le jeton utilisateur peut être préféré lorsquil est configuré. Pour les écritures, le jeton bot reste prioritaire ; les écritures avec jeton utilisateur ne sont autorisées que lorsque `userTokenReadOnly: false` et que le jeton bot nest pas disponible.
</Tip>
## Actions et contrôles
Les actions Slack sont contrôlées par `channels.slack.actions.*`.
Groupes dactions disponibles dans les outils Slack actuels :
Groupes dactions disponibles dans loutillage Slack actuel :
| Group | Default |
| ---------- | ------- |
| messages | enabled |
| reactions | enabled |
| pins | enabled |
| memberInfo | enabled |
| emojiList | enabled |
| Groupe | Par défaut |
| ---------- | ---------- |
| messages | activé |
| reactions | activé |
| pins | activé |
| memberInfo | activé |
| emojiList | activé |
Les actions actuelles sur les messages Slack comprennent `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` et `emoji-list`.
Les actions de message Slack actuelles incluent `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` et `emoji-list`.
## Contrôle daccès et routage
<Tabs>
<Tab title="Politique des messages privés">
`channels.slack.dmPolicy` contrôle laccès aux messages privés (hérité : `channels.slack.dm.policy`) :
<Tab title="Politique de message privé">
`channels.slack.dmPolicy` contrôle laccès aux messages privés (hérité : `channels.slack.dm.policy`) :
- `pairing` (par défaut)
- `allowlist`
- `open` (nécessite que `channels.slack.allowFrom` inclue `"*"` ; hérité : `channels.slack.dm.allowFrom`)
- `open` (nécessite que `channels.slack.allowFrom` inclue `"*"` ; hérité : `channels.slack.dm.allowFrom`)
- `disabled`
Indicateurs des messages privés :
Drapeaux de message privé :
- `dm.enabled` (par défaut true)
- `channels.slack.allowFrom` (préféré)
- `dm.allowFrom` (hérité)
- `dm.groupEnabled` (messages privés de groupe par défaut à false)
- `dm.groupEnabled` (messages privés de groupe désactivés par défaut)
- `dm.groupChannels` (liste dautorisation MPIM facultative)
Priorité multi-compte :
Priorité multi-comptes :
- `channels.slack.accounts.default.allowFrom` sapplique uniquement au compte `default`.
- Les comptes nommés héritent de `channels.slack.allowFrom` lorsque leur propre `allowFrom` nest pas défini.
@ -652,35 +652,35 @@ Les actions actuelles sur les messages Slack comprennent `send`, `upload-file`,
</Tab>
<Tab title="Politique des canaux">
`channels.slack.groupPolicy` contrôle la gestion des canaux :
<Tab title="Politique de canal">
`channels.slack.groupPolicy` contrôle la gestion des canaux :
- `open`
- `allowlist`
- `disabled`
La liste dautorisation des canaux se trouve sous `channels.slack.channels` et doit utiliser des identifiants de canal stables.
La liste dautorisation des canaux se trouve sous `channels.slack.channels` et doit utiliser des ID de canal stables.
Note dexécution : si `channels.slack` est complètement absent (configuration uniquement via variables denvironnement), lexécution revient à `groupPolicy="allowlist"` et consigne un avertissement (même si `channels.defaults.groupPolicy` est défini).
Remarque dexécution : si `channels.slack` est complètement absent (configuration via variables denvironnement uniquement), lexécution revient à `groupPolicy="allowlist"` et journalise un avertissement (même si `channels.defaults.groupPolicy` est défini).
Résolution nom/ID :
Résolution nom/ID :
- les entrées de liste dautorisation de canal et de message privé sont résolues au démarrage lorsque laccès par jeton le permet
- les entrées non résolues par nom de canal sont conservées telles que configurées mais ignorées pour le routage par défaut
- lautorisation entrante et le routage des canaux utilisent par défaut les ID dabord ; la correspondance directe par nom dutilisateur/slug nécessite `channels.slack.dangerouslyAllowNameMatching: true`
- les entrées de liste dautorisation de canaux et de messages privés sont résolues au démarrage lorsque laccès au jeton le permet
- les entrées de nom de canal non résolues sont conservées telles que configurées mais ignorées pour le routage par défaut
- lautorisation entrante et le routage des canaux utilisent les ID en priorité par défaut ; la correspondance directe par nom dutilisateur/slug nécessite `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="Mentions et utilisateurs du canal">
Les messages de canal sont filtrés par mention par défaut.
Sources de mention :
Sources de mention :
- mention explicite de lapplication (`<@botId>`)
- motifs regex de mention (`agents.list[].groupChat.mentionPatterns`, repli `messages.groupChat.mentionPatterns`)
- comportement implicite de réponse au bot dans un fil (désactivé lorsque `thread.requireExplicitMention` vaut `true`)
- comportement implicite de réponse dans un fil au bot (désactivé lorsque `thread.requireExplicitMention` vaut `true`)
Contrôles par canal (`channels.slack.channels.<id>` ; noms uniquement via résolution au démarrage ou `dangerouslyAllowNameMatching`) :
Contrôles par canal (`channels.slack.channels.<id>` ; noms uniquement via résolution au démarrage ou `dangerouslyAllowNameMatching`) :
- `requireMention`
- `users` (liste dautorisation)
@ -688,69 +688,70 @@ Les actions actuelles sur les messages Slack comprennent `send`, `upload-file`,
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- format des clés `toolsBySender` : `id:`, `e164:`, `username:`, `name:` ou wildcard `"*"`
(les clés héritées sans préfixe sont toujours mappées vers `id:` uniquement)
- format de clé `toolsBySender` : `id:`, `e164:`, `username:`, `name:` ou joker `"*"`
(les clés héritées sans préfixe correspondent toujours uniquement à `id:`)
</Tab>
</Tabs>
## Fils, sessions et balises de réponse
- Les messages privés sont routés comme `direct` ; les canaux comme `channel` ; les MPIM comme `group`.
- Les messages privés sont routés comme `direct` ; les canaux comme `channel` ; les MPIM comme `group`.
- Avec la valeur par défaut `session.dmScope=main`, les messages privés Slack sont regroupés dans la session principale de lagent.
- Sessions de canal : `agent:<agentId>:slack:channel:<channelId>`.
- Sessions de canal : `agent:<agentId>:slack:channel:<channelId>`.
- Les réponses dans un fil peuvent créer des suffixes de session de fil (`:thread:<threadTs>`) lorsque cela sapplique.
- `channels.slack.thread.historyScope` vaut par défaut `thread` ; `thread.inheritParent` vaut par défaut `false`.
- `channels.slack.thread.initialHistoryLimit` contrôle le nombre de messages existants du fil récupérés au démarrage dune nouvelle session de fil (par défaut `20` ; définissez `0` pour désactiver).
- `channels.slack.thread.requireExplicitMention` (par défaut `false`) : lorsque défini à `true`, supprime les mentions implicites dans le fil afin que le bot ne réponde quaux mentions explicites `@bot` à lintérieur des fils, même si le bot a déjà participé au fil. Sans cela, les réponses dans un fil auquel le bot a participé contournent le filtrage `requireMention`.
- La valeur par défaut de `channels.slack.thread.historyScope` est `thread` ; la valeur par défaut de `thread.inheritParent` est `false`.
- `channels.slack.thread.initialHistoryLimit` contrôle combien de messages existants du fil sont récupérés lorsquune nouvelle session de fil démarre (valeur par défaut `20` ; définissez `0` pour désactiver).
- `channels.slack.thread.requireExplicitMention` (par défaut `false`) : lorsque défini à `true`, supprime les mentions implicites dans les fils afin que le bot ne réponde quaux mentions explicites `@bot` dans les fils, même sil a déjà participé au fil. Sans cela, les réponses dans un fil auquel le bot a participé contournent le filtrage `requireMention`.
Contrôles de réponse en fil :
Contrôles du fil de réponse :
- `channels.slack.replyToMode`: `off|first|all|batched` (par défaut `off`)
- `channels.slack.replyToModeByChatType` : par `direct|group|channel`
- solution de repli héritée pour les chats directs : `channels.slack.dm.replyToMode`
- `channels.slack.replyToModeByChatType`: par `direct|group|channel`
- repli hérité pour les discussions directes : `channels.slack.dm.replyToMode`
Les balises de réponse manuelles sont prises en charge :
Les balises de réponse manuelles sont prises en charge :
- `[[reply_to_current]]`
- `[[reply_to:<id>]]`
Remarque : `replyToMode="off"` désactive **tout** le threading de réponse dans Slack, y compris les balises explicites `[[reply_to_*]]`. Cela diffère de Telegram, où les balises explicites sont toujours honorées en mode `"off"`. La différence reflète les modèles de fil des plateformes : les fils Slack masquent les messages du canal, tandis que les réponses Telegram restent visibles dans le flux principal de la conversation.
Remarque : `replyToMode="off"` désactive **tout** le fil de réponse dans Slack, y compris les balises explicites `[[reply_to_*]]`. Cela diffère de Telegram, où les balises explicites sont toujours respectées en mode `"off"`. Cette différence reflète les modèles de fil des plateformes : les fils Slack masquent les messages du canal, tandis que les réponses Telegram restent visibles dans le flux principal de discussion.
## Réactions daccusé de réception
`ackReaction` envoie un emoji daccusé de réception pendant quOpenClaw traite un message entrant.
`ackReaction` envoie un emoji daccusé de réception pendant que OpenClaw traite un message entrant.
Ordre de résolution :
Ordre de résolution :
- `channels.slack.accounts.<accountId>.ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
- repli vers lemoji de lidentité de lagent (`agents.list[].identity.emoji`, sinon `"👀"`)
- repli vers lemoji didentité de lagent (`agents.list[].identity.emoji`, sinon `"👀"`)
Remarques :
Remarques :
- Slack attend des shortcodes (par exemple `"eyes"`).
- Utilisez `""` pour désactiver la réaction pour le compte Slack ou globalement.
## Streaming de texte
`channels.slack.streaming` contrôle le comportement de prévisualisation en direct :
`channels.slack.streaming` contrôle le comportement daperçu en direct :
- `off` : désactiver le streaming de prévisualisation en direct.
- `partial` (par défaut) : remplacer le texte de prévisualisation par la dernière sortie partielle.
- `block` : ajouter des mises à jour de prévisualisation par blocs.
- `progress` : afficher un texte détat de progression pendant la génération, puis envoyer le texte final.
- `off` : désactive le streaming daperçu en direct.
- `partial` (par défaut) : remplace le texte daperçu par la dernière sortie partielle.
- `block` : ajoute des mises à jour daperçu par blocs.
- `progress` : affiche un texte détat de progression pendant la génération, puis envoie le texte final.
- `streaming.preview.toolProgress` : lorsque laperçu de brouillon est actif, route les mises à jour doutil/progression dans le même message daperçu modifié (par défaut : `true`). Définissez `false` pour conserver des messages doutil/progression séparés.
`channels.slack.streaming.nativeTransport` contrôle le streaming de texte natif de Slack lorsque `channels.slack.streaming.mode` est `partial` (par défaut : `true`).
`channels.slack.streaming.nativeTransport` contrôle le streaming de texte natif de Slack lorsque `channels.slack.streaming.mode` est `partial` (par défaut : `true`).
- Un fil de réponse doit être disponible pour que le streaming de texte natif et létat du fil assistant Slack apparaissent. La sélection du fil suit toujours `replyToMode`.
- Les racines de canaux et de discussions de groupe peuvent toujours utiliser la prévisualisation de brouillon normale lorsque le streaming natif nest pas disponible.
- Les messages privés Slack de niveau supérieur restent hors fil par défaut, donc ils naffichent pas la prévisualisation de style fil ; utilisez des réponses dans un fil ou `typingReaction` si vous voulez une progression visible à cet endroit.
- Les médias et les charges utiles non textuelles reviennent à la livraison normale.
- Un fil de réponse doit être disponible pour que le streaming de texte natif et létat de fil assistant Slack apparaissent. La sélection du fil continue néanmoins de suivre `replyToMode`.
- Les racines de canal et de discussion de groupe peuvent toujours utiliser laperçu de brouillon normal lorsque le streaming natif nest pas disponible.
- Les messages privés Slack de niveau supérieur restent hors fil par défaut ; ils naffichent donc pas laperçu de style fil. Utilisez des réponses dans un fil ou `typingReaction` si vous voulez y afficher une progression visible.
- Les médias et les charges utiles non textuelles reviennent au mode de livraison normal.
- Si le streaming échoue en cours de réponse, OpenClaw revient à la livraison normale pour les charges utiles restantes.
Utiliser la prévisualisation de brouillon au lieu du streaming de texte natif de Slack :
Utilisez laperçu de brouillon au lieu du streaming de texte natif de Slack :
```json5
{
@ -765,45 +766,45 @@ Utiliser la prévisualisation de brouillon au lieu du streaming de texte natif d
}
```
Clés héritées :
Clés héritées :
- `channels.slack.streamMode` (`replace | status_final | append`) est migré automatiquement vers `channels.slack.streaming.mode`.
- le booléen `channels.slack.streaming` est migré automatiquement vers `channels.slack.streaming.mode` et `channels.slack.streaming.nativeTransport`.
- lancienne clé `channels.slack.nativeStreaming` est migrée automatiquement vers `channels.slack.streaming.nativeTransport`.
## Repli via réaction de saisie
## Repli via réaction de frappe
`typingReaction` ajoute une réaction temporaire au message Slack entrant pendant quOpenClaw traite une réponse, puis la supprime lorsque lexécution se termine. Cela est surtout utile en dehors des réponses dans un fil, qui utilisent un indicateur détat par défaut « is typing... ».
`typingReaction` ajoute une réaction temporaire au message Slack entrant pendant que OpenClaw traite une réponse, puis la supprime une fois lexécution terminée. Cela est particulièrement utile en dehors des réponses dans un fil, qui utilisent un indicateur détat par défaut « est en train décrire... ».
Ordre de résolution :
Ordre de résolution :
- `channels.slack.accounts.<accountId>.typingReaction`
- `channels.slack.typingReaction`
Remarques :
Remarques :
- Slack attend des shortcodes (par exemple `"hourglass_flowing_sand"`).
- La réaction est effectuée au mieux, et le nettoyage est tenté automatiquement après la réponse ou une fois le chemin déchec terminé.
- La réaction est fournie en mode best-effort et le nettoyage est tenté automatiquement une fois la réponse ou le chemin déchec terminé.
## Médias, segmentation et livraison
<AccordionGroup>
<Accordion title="Pièces jointes entrantes">
Les pièces jointes de fichiers Slack sont téléchargées depuis des URL privées hébergées par Slack (flux de requêtes authentifiées par jeton) et écrites dans le magasin de médias lorsque la récupération réussit et que les limites de taille le permettent.
Les pièces jointes de fichiers Slack sont téléchargées depuis des URL privées hébergées par Slack (flux de requête authentifié par jeton) et écrites dans le stockage média lorsque la récupération réussit et que les limites de taille le permettent.
Le plafond de taille entrant à lexécution est de `20MB` par défaut, sauf remplacement par `channels.slack.mediaMaxMb`.
La limite de taille entrante à lexécution est de `20MB` par défaut, sauf remplacement par `channels.slack.mediaMaxMb`.
</Accordion>
<Accordion title="Texte sortant et fichiers">
<Accordion title="Texte et fichiers sortants">
- les segments de texte utilisent `channels.slack.textChunkLimit` (par défaut 4000)
- `channels.slack.chunkMode="newline"` active le découpage prioritaire par paragraphe
- les envois de fichiers utilisent les API de téléversement Slack et peuvent inclure des réponses dans un fil (`thread_ts`)
- le plafond des médias sortants suit `channels.slack.mediaMaxMb` lorsquil est configuré ; sinon, les envois du canal utilisent les valeurs par défaut par type MIME du pipeline média
- `channels.slack.chunkMode="newline"` active un découpage prioritairement par paragraphe
- les envois de fichiers utilisent les API de téléversement de Slack et peuvent inclure des réponses dans un fil (`thread_ts`)
- la limite de média sortant suit `channels.slack.mediaMaxMb` lorsquelle est configurée ; sinon, les envois de canal utilisent les valeurs par défaut par type MIME du pipeline média
</Accordion>
<Accordion title="Cibles de livraison">
Cibles explicites préférées :
Cibles explicites préférées :
- `user:<id>` pour les messages privés
- `channel:<id>` pour les canaux
@ -813,9 +814,9 @@ Remarques :
</Accordion>
</AccordionGroup>
## Commandes et comportement des slash commands
## Commandes et comportement des commandes slash
Les commandes slash apparaissent dans Slack soit comme une seule commande configurée, soit comme plusieurs commandes natives. Configurez `channels.slack.slashCommand` pour modifier les valeurs par défaut des commandes :
Les commandes slash apparaissent dans Slack soit comme une seule commande configurée, soit comme plusieurs commandes natives. Configurez `channels.slack.slashCommand` pour modifier les valeurs par défaut des commandes :
- `enabled: false`
- `name: "openclaw"`
@ -826,7 +827,7 @@ Les commandes slash apparaissent dans Slack soit comme une seule commande config
/openclaw /help
```
Les commandes natives nécessitent des [paramètres de manifeste supplémentaires](#additional-manifest-settings) dans votre application Slack et sont activées avec `channels.slack.commands.native: true` ou `commands.native: true` dans les configurations globales à la place.
Les commandes natives nécessitent des [paramètres supplémentaires du manifeste](#additional-manifest-settings) dans votre application Slack et sont activées avec `channels.slack.commands.native: true` ou `commands.native: true` dans les configurations globales à la place.
- Le mode automatique des commandes natives est **désactivé** pour Slack, donc `commands.native: "auto"` nactive pas les commandes natives Slack.
@ -834,12 +835,12 @@ Les commandes natives nécessitent des [paramètres de manifeste supplémentaire
/help
```
Les menus darguments natifs utilisent une stratégie de rendu adaptative qui affiche une fenêtre modale de confirmation avant denvoyer la valeur doption sélectionnée :
Les menus darguments natifs utilisent une stratégie de rendu adaptative qui affiche une modale de confirmation avant denvoyer la valeur doption sélectionnée :
- jusquà 5 options : blocs de boutons
- 6 à 100 options : menu de sélection statique
- plus de 100 options : sélection externe avec filtrage asynchrone des options lorsque les gestionnaires doptions dinteractivité sont disponibles
- limites Slack dépassées : les valeurs doptions encodées reviennent à des boutons
- jusquà 5 options : blocs de boutons
- de 6 à 100 options : menu de sélection statique
- plus de 100 options : sélection externe avec filtrage asynchrone des options lorsque les gestionnaires doptions dinteractivité sont disponibles
- limites Slack dépassées : les valeurs doption encodées reviennent à des boutons
```txt
/think
@ -849,9 +850,9 @@ Les sessions slash utilisent des clés isolées comme `agent:<agentId>:slack:sla
## Réponses interactives
Slack peut afficher des contrôles de réponse interactive créés par lagent, mais cette fonctionnalité est désactivée par défaut.
Slack peut afficher des contrôles de réponse interactive rédigés par lagent, mais cette fonctionnalité est désactivée par défaut.
Activez-la globalement :
Activez-la globalement :
```json5
{
@ -865,7 +866,7 @@ Activez-la globalement :
}
```
Ou activez-la uniquement pour un compte Slack :
Ou activez-la pour un seul compte Slack :
```json5
{
@ -883,44 +884,44 @@ Ou activez-la uniquement pour un compte Slack :
}
```
Lorsquelle est activée, les agents peuvent émettre des directives de réponse propres à Slack :
Lorsquelle est activée, les agents peuvent émettre des directives de réponse réservées à Slack :
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
Ces directives sont compilées en Slack Block Kit et routent les clics ou les sélections via le chemin dévénement dinteraction Slack existant.
Ces directives sont compilées en Slack Block Kit et routent les clics ou sélections via le chemin existant des événements dinteraction Slack.
Remarques :
Remarques :
- Il sagit dune interface spécifique à Slack. Les autres canaux ne traduisent pas les directives Slack Block Kit dans leurs propres systèmes de boutons.
- Les valeurs de rappel interactif sont des jetons opaques générés par OpenClaw, et non des valeurs brutes créées par lagent.
- Si les blocs interactifs générés dépassent les limites de Slack Block Kit, OpenClaw revient à la réponse texte dorigine au lieu denvoyer une charge utile de blocs invalide.
- Les valeurs de rappel interactives sont des jetons opaques générés par OpenClaw, et non des valeurs brutes rédigées par lagent.
- Si les blocs interactifs générés dépassent les limites de Slack Block Kit, OpenClaw revient à la réponse texte dorigine au lieu denvoyer une charge utile `blocks` invalide.
## Approbations Exec dans Slack
## Approbations exec dans Slack
Slack peut agir comme client dapprobation natif avec des boutons et des interactions interactifs, au lieu de revenir à linterface Web ou au terminal.
Slack peut agir comme client dapprobation natif avec boutons et interactions interactifs, au lieu de revenir à linterface Web ou au terminal.
- Les approbations Exec utilisent `channels.slack.execApprovals.*` pour le routage natif vers message privé/canal.
- Les approbations de Plugin peuvent toujours être résolues via la même surface de boutons native Slack lorsque la demande arrive déjà dans Slack et que le type didentifiant dapprobation est `plugin:`.
- Lautorisation des approbateurs reste appliquée : seuls les utilisateurs identifiés comme approbateurs peuvent approuver ou refuser des demandes via Slack.
- Les approbations exec utilisent `channels.slack.execApprovals.*` pour le routage natif en message privé/canal.
- Les approbations de Plugin peuvent toujours être résolues via la même surface de boutons native Slack lorsque la requête arrive déjà dans Slack et que le type didentifiant dapprobation est `plugin:`.
- Lautorisation des approbateurs est toujours appliquée : seuls les utilisateurs identifiés comme approbateurs peuvent approuver ou refuser des requêtes via Slack.
Cela utilise la même surface de boutons dapprobation partagée que les autres canaux. Lorsque `interactivity` est activé dans les paramètres de votre application Slack, les invites dapprobation saffichent comme des boutons Block Kit directement dans la conversation.
Lorsque ces boutons sont présents, ils constituent lexpérience principale dapprobation ; OpenClaw
Cela utilise la même surface partagée de boutons dapprobation que les autres canaux. Lorsque `interactivity` est activé dans les paramètres de votre application Slack, les invites dapprobation saffichent comme boutons Block Kit directement dans la conversation.
Lorsque ces boutons sont présents, ils constituent lexpérience utilisateur principale pour lapprobation ; OpenClaw
ne doit inclure une commande manuelle `/approve` que lorsque le résultat de loutil indique que les
approbations par chat ne sont pas disponibles ou que lapprobation manuelle est la seule voie possible.
approbations par discussion ne sont pas disponibles ou que lapprobation manuelle est la seule voie.
Chemin de configuration :
Chemin de configuration :
- `channels.slack.execApprovals.enabled`
- `channels.slack.execApprovals.approvers` (facultatif ; revient à `commands.ownerAllowFrom` lorsque possible)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, par défaut : `dm`)
- `channels.slack.execApprovals.approvers` (facultatif ; revient à `commands.ownerAllowFrom` lorsque possible)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, par défaut : `dm`)
- `agentFilter`, `sessionFilter`
Slack active automatiquement les approbations Exec natives lorsque `enabled` nest pas défini ou vaut `"auto"` et quau moins un
Slack active automatiquement les approbations exec natives lorsque `enabled` nest pas défini ou vaut `"auto"` et quau moins un
approbateur est résolu. Définissez `enabled: false` pour désactiver explicitement Slack comme client dapprobation natif.
Définissez `enabled: true` pour forcer lactivation des approbations natives lorsque des approbateurs sont résolus.
Comportement par défaut sans configuration explicite des approbations Exec Slack :
Comportement par défaut sans configuration explicite des approbations exec Slack :
```json5
{
@ -931,7 +932,7 @@ Comportement par défaut sans configuration explicite des approbations Exec Slac
```
Une configuration native Slack explicite nest nécessaire que si vous voulez remplacer les approbateurs, ajouter des filtres ou
opter pour une livraison dans le chat dorigine :
opter pour une livraison dans la discussion dorigine :
```json5
{
@ -947,52 +948,52 @@ opter pour une livraison dans le chat dorigine :
}
```
Le transfert partagé `approvals.exec` est distinct. Utilisez-le uniquement lorsque les invites dapprobation Exec doivent aussi
être routées vers dautres chats ou des cibles explicites hors bande. Le transfert partagé `approvals.plugin` est également
distinct ; les boutons natifs Slack peuvent toujours résoudre les approbations de Plugin lorsque ces demandes arrivent déjà
Le transfert partagé `approvals.exec` est distinct. Utilisez-le uniquement lorsque les invites dapprobation exec doivent aussi
être routées vers dautres discussions ou des cibles explicites hors bande. Le transfert partagé `approvals.plugin` est lui aussi
distinct ; les boutons natifs Slack peuvent toujours résoudre les approbations de Plugin lorsque ces requêtes arrivent déjà
dans Slack.
La commande `/approve` dans le même chat fonctionne également dans les canaux et messages privés Slack qui prennent déjà en charge les commandes. Voir [Approbations Exec](/fr/tools/exec-approvals) pour le modèle complet de transfert des approbations.
La commande `/approve` dans la même discussion fonctionne également dans les canaux et messages privés Slack qui prennent déjà en charge les commandes. Voir [Approbations exec](/fr/tools/exec-approvals) pour le modèle complet de transfert dapprobation.
## Événements et comportement opérationnel
- Les modifications/suppressions de messages et les diffusions de fil sont mappées vers des événements système.
- Les événements dajout/suppression de réaction sont mappés vers des événements système.
- Les événements dentrée/sortie de membre, de création/renommage de canal et dajout/suppression dépingle sont mappés vers des événements système.
- `channel_id_changed` peut migrer les clés de configuration de canal lorsque `configWrites` est activé.
- Les métadonnées de sujet/objectif du canal sont traitées comme un contexte non fiable et peuvent être injectées dans le contexte de routage.
- Les amorçages de contexte du message de départ du fil et de lhistorique initial du fil sont filtrés par les listes dautorisation dexpéditeur configurées lorsque cela sapplique.
- Les actions de bloc et interactions modales émettent des événements système structurés `Slack interaction: ...` avec des champs de charge utile enrichis :
- actions de bloc : valeurs sélectionnées, libellés, valeurs de sélecteur et métadonnées `workflow_*`
- événements modaux `view_submission` et `view_closed` avec métadonnées de canal routées et entrées de formulaire
- `channel_id_changed` peut migrer les clés de configuration du canal lorsque `configWrites` est activé.
- Les métadonnées de sujet/description de canal sont traitées comme un contexte non fiable et peuvent être injectées dans le contexte de routage.
- Le message initial du fil et linitialisation du contexte dhistorique du fil sont filtrés par les listes dautorisation dexpéditeur configurées, le cas échéant.
- Les actions de bloc et interactions de modale émettent des événements système structurés `Slack interaction: ...` avec des champs de charge utile enrichis :
- actions de bloc : valeurs sélectionnées, libellés, valeurs de sélecteur et métadonnées `workflow_*`
- événements de modale `view_submission` et `view_closed` avec métadonnées de canal routées et entrées de formulaire
## Pointeurs de référence de configuration
## Pointeurs vers la référence de configuration
Référence principale :
Référence principale :
- [Référence de configuration - Slack](/fr/gateway/configuration-reference#slack)
Champs Slack à fort signal :
- mode/auth : `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- accès aux messages privés : `dm.enabled`, `dmPolicy`, `allowFrom` (hérité : `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- bascule de compatibilité : `dangerouslyAllowNameMatching` (solution de dernier recours ; laissez désactivé sauf nécessité)
- accès aux canaux : `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- fils/historique : `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- livraison : `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`
- opérations/fonctionnalités : `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
Champs Slack à fort signal :
- mode/auth : `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- accès DM : `dm.enabled`, `dmPolicy`, `allowFrom` (hérité : `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- option de compatibilité : `dangerouslyAllowNameMatching` (mesure durgence ; laissez désactivé sauf nécessité)
- accès canal : `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- fils/historique : `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- livraison : `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
- opérations/fonctionnalités : `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
## Dépannage
<AccordionGroup>
<Accordion title="Aucune réponse dans les canaux">
Vérifiez, dans lordre :
Vérifiez, dans cet ordre :
- `groupPolicy`
- liste dautorisation des canaux (`channels.slack.channels`)
- `requireMention`
- liste dautorisation `users` par canal
Commandes utiles :
Commandes utiles :
```bash
openclaw channels status --probe
@ -1003,7 +1004,7 @@ openclaw doctor
</Accordion>
<Accordion title="Messages privés ignorés">
Vérifiez :
Vérifiez :
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (ou lancienne clé `channels.slack.dm.policy`)
@ -1016,41 +1017,41 @@ openclaw pairing list slack
</Accordion>
<Accordion title="Le mode socket ne se connecte pas">
Validez les jetons bot + application et lactivation de Socket Mode dans les paramètres de lapplication Slack.
Validez les jetons bot + app ainsi que lactivation de Socket Mode dans les paramètres de lapplication Slack.
Si `openclaw channels status --probe --json` affiche `botTokenStatus` ou
`appTokenStatus: "configured_unavailable"`, le compte Slack est
configuré mais lexécution actuelle na pas pu résoudre la
valeur adossée à SecretRef.
configuré mais lexécution actuelle na pas pu résoudre la valeur
soutenue par SecretRef.
</Accordion>
<Accordion title="Le mode HTTP ne reçoit pas dévénements">
Validez :
Validez :
- secret de signature
- chemin du Webhook
- URL de requête Slack (Events + Interactivity + Slash Commands)
- signing secret
- chemin de Webhook
- URL de requête Slack (événements + interactivité + commandes slash)
- `webhookPath` unique par compte HTTP
Si `signingSecretStatus: "configured_unavailable"` apparaît dans les
instantanés de compte, le compte HTTP est configuré mais lexécution actuelle na pas pu
résoudre le secret de signature adossé à SecretRef.
Si `signingSecretStatus: "configured_unavailable"` apparaît dans les instantanés
de compte, le compte HTTP est configuré mais lexécution actuelle na pas pu
résoudre le signing secret soutenu par SecretRef.
</Accordion>
<Accordion title="Les commandes natives/slash ne se déclenchent pas">
Vérifiez si votre intention était :
Vérifiez si vous vouliez :
- le mode de commande native (`channels.slack.commands.native: true`) avec les commandes slash correspondantes enregistrées dans Slack
- ou le mode de commande slash unique (`channels.slack.slashCommand.enabled: true`)
Vérifiez aussi `commands.useAccessGroups` ainsi que les listes dautorisation des canaux/utilisateurs.
Vérifiez également `commands.useAccessGroups` ainsi que les listes dautorisation de canal/utilisateur.
</Accordion>
</AccordionGroup>
## Lié
## Liens associés
- [Appairage](/fr/channels/pairing)
- [Groupes](/fr/channels/groups)

View File

@ -1,30 +1,30 @@
---
read_when:
- Travaille sur les fonctionnalités Telegram ou les Webhook
- Travail sur les fonctionnalités de Telegram ou les Webhooks
summary: Statut de prise en charge du bot Telegram, capacités et configuration
title: Telegram
x-i18n:
generated_at: "2026-04-21T06:57:37Z"
generated_at: "2026-04-21T17:45:42Z"
model: gpt-5.4
provider: openai
source_hash: b5c70775b55d4923a31ad8bae7f4c6e7cbae754c05c3a578180d63db2b59e39a
source_hash: 816238b53942b319a300843db62ec1d4bf8d84bc11094010926ac9ad457c6d3d
source_path: channels/telegram.md
workflow: 15
---
# Telegram (API Bot)
Statut : prêt pour la production pour les messages privés des bots et les groupes via grammY. Le long polling est le mode par défaut ; le mode Webhook est optionnel.
Statut : prêt pour la production pour les MP de bot + groupes via grammY. Le long polling est le mode par défaut ; le mode Webhook est facultatif.
<CardGroup cols={3}>
<Card title="Association" icon="link" href="/fr/channels/pairing">
La politique DM par défaut pour Telegram est lassociation.
La politique de MP par défaut pour Telegram est lassociation.
</Card>
<Card title="Dépannage du canal" icon="wrench" href="/fr/channels/troubleshooting">
Diagnostics inter-canaux et guides de réparation.
<Card title="Dépannage des canaux" icon="wrench" href="/fr/channels/troubleshooting">
Diagnostics inter-canaux et procédures de réparation.
</Card>
<Card title="Configuration de Gateway" icon="settings" href="/fr/gateway/configuration">
Modèles complets de configuration des canaux et exemples.
Modèles et exemples complets de configuration de canal.
</Card>
</CardGroup>
@ -34,11 +34,11 @@ Statut : prêt pour la production pour les messages privés des bots et les grou
<Step title="Créer le jeton du bot dans BotFather">
Ouvrez Telegram et discutez avec **@BotFather** (vérifiez que lidentifiant est exactement `@BotFather`).
Exécutez `/newbot`, suivez les invites et enregistrez le jeton.
Exécutez `/newbot`, suivez les instructions, puis enregistrez le jeton.
</Step>
<Step title="Configurer le jeton et la politique DM">
<Step title="Configurer le jeton et la politique de MP">
```json5
{
@ -58,7 +58,7 @@ Statut : prêt pour la production pour les messages privés des bots et les grou
</Step>
<Step title="Démarrer Gateway et approuver le premier DM">
<Step title="Démarrer Gateway et approuver le premier MP">
```bash
openclaw gateway
@ -71,24 +71,24 @@ openclaw pairing approve telegram <CODE>
</Step>
<Step title="Ajouter le bot à un groupe">
Ajoutez le bot à votre groupe, puis définissez `channels.telegram.groups` et `groupPolicy` pour quils correspondent à votre modèle daccès.
Ajoutez le bot à votre groupe, puis définissez `channels.telegram.groups` et `groupPolicy` en fonction de votre modèle daccès.
</Step>
</Steps>
<Note>
Lordre de résolution du jeton dépend du compte. En pratique, les valeurs de configuration priment sur la variable denvironnement de secours, et `TELEGRAM_BOT_TOKEN` ne sapplique quau compte par défaut.
Lordre de résolution du jeton tient compte du compte. En pratique, les valeurs de configuration priment sur la variable denvironnement de secours, et `TELEGRAM_BOT_TOKEN` ne sapplique quau compte par défaut.
</Note>
## Paramètres côté Telegram
<AccordionGroup>
<Accordion title="Mode confidentialité et visibilité dans les groupes">
Par défaut, les bots Telegram utilisent le **Mode confidentialité**, ce qui limite les messages de groupe quils reçoivent.
Par défaut, les bots Telegram sont en **mode confidentialité**, ce qui limite les messages de groupe quils reçoivent.
Si le bot doit voir tous les messages du groupe, soit :
Si le bot doit voir tous les messages du groupe, faites soit :
- désactivez le mode confidentialité via `/setprivacy`, soit
- faites du bot un administrateur du groupe.
- désactiver le mode confidentialité via `/setprivacy`, ou
- faire du bot un administrateur du groupe.
Lorsque vous modifiez le mode confidentialité, retirez puis rajoutez le bot dans chaque groupe afin que Telegram applique le changement.
@ -101,9 +101,9 @@ Lordre de résolution du jeton dépend du compte. En pratique, les valeurs de
</Accordion>
<Accordion title="Options BotFather utiles">
<Accordion title="Options utiles de BotFather">
- `/setjoingroups` pour autoriser/interdire lajout à des groupes
- `/setjoingroups` pour autoriser/interdire lajout aux groupes
- `/setprivacy` pour le comportement de visibilité dans les groupes
</Accordion>
@ -112,7 +112,7 @@ Lordre de résolution du jeton dépend du compte. En pratique, les valeurs de
## Contrôle daccès et activation
<Tabs>
<Tab title="Politique DM">
<Tab title="Politique de MP">
`channels.telegram.dmPolicy` contrôle laccès aux messages directs :
- `pairing` (par défaut)
@ -121,22 +121,22 @@ Lordre de résolution du jeton dépend du compte. En pratique, les valeurs de
- `disabled`
`channels.telegram.allowFrom` accepte des ID utilisateur Telegram numériques. Les préfixes `telegram:` / `tg:` sont acceptés et normalisés.
`dmPolicy: "allowlist"` avec un `allowFrom` vide bloque tous les DM et est rejeté par la validation de la configuration.
`dmPolicy: "allowlist"` avec un `allowFrom` vide bloque tous les MP et est rejeté par la validation de configuration.
La configuration demande uniquement des ID utilisateur numériques.
Si vous avez effectué une mise à niveau et que votre configuration contient des entrées de liste dautorisation `@username`, exécutez `openclaw doctor --fix` pour les résoudre (au mieux ; nécessite un jeton de bot Telegram).
Si vous vous appuyiez auparavant sur des fichiers de liste dautorisation du magasin dassociation, `openclaw doctor --fix` peut récupérer les entrées dans `channels.telegram.allowFrom` dans les flux `allowlist` (par exemple lorsque `dmPolicy: "allowlist"` na encore aucun ID explicite).
Si vous avez fait une mise à niveau et que votre configuration contient des entrées de liste dautorisation `@username`, exécutez `openclaw doctor --fix` pour les résoudre (au mieux ; nécessite un jeton de bot Telegram).
Si vous utilisiez auparavant des fichiers de liste dautorisation du magasin dassociation, `openclaw doctor --fix` peut récupérer les entrées dans `channels.telegram.allowFrom` dans les flux allowlist (par exemple lorsque `dmPolicy: "allowlist"` na pas encore dID explicites).
Pour les bots à propriétaire unique, préférez `dmPolicy: "allowlist"` avec des ID `allowFrom` numériques explicites afin de conserver une politique daccès durable dans la configuration (au lieu de dépendre des approbations dassociation précédentes).
Pour les bots à propriétaire unique, préférez `dmPolicy: "allowlist"` avec des ID `allowFrom` numériques explicites afin de garder une politique daccès durable dans la configuration (au lieu de dépendre des approbations dassociation précédentes).
Confusion fréquente : lapprobation de lassociation DM ne signifie pas « cet expéditeur est autorisé partout ».
Lassociation accorde uniquement laccès en DM. Lautorisation des expéditeurs dans les groupes provient toujours de listes dautorisation explicites dans la configuration.
Si vous voulez dire « je suis autorisé une fois et les DM comme les commandes de groupe fonctionnent », placez votre ID utilisateur Telegram numérique dans `channels.telegram.allowFrom`.
Confusion fréquente : lapprobation dassociation en MP ne signifie pas « cet expéditeur est autorisé partout ».
Lassociation naccorde laccès quaux MP. Lautorisation des expéditeurs dans les groupes provient toujours de listes dautorisation explicites dans la configuration.
Si vous voulez « je suis autorisé une seule fois et les MP comme les commandes de groupe fonctionnent », placez votre ID utilisateur Telegram numérique dans `channels.telegram.allowFrom`.
### Trouver votre ID utilisateur Telegram
Plus sûr (sans bot tiers) :
1. Envoyez un DM à votre bot.
1. Envoyez un MP à votre bot.
2. Exécutez `openclaw logs --follow`.
3. Lisez `from.id`.
@ -164,15 +164,15 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `allowlist` (par défaut)
- `disabled`
`groupAllowFrom` est utilisé pour le filtrage des expéditeurs dans les groupes. Sil nest pas défini, Telegram retombe sur `allowFrom`.
`groupAllowFrom` est utilisé pour le filtrage des expéditeurs en groupe. Sil nest pas défini, Telegram se rabat sur `allowFrom`.
Les entrées `groupAllowFrom` doivent être des ID utilisateur Telegram numériques (les préfixes `telegram:` / `tg:` sont normalisés).
Ne mettez pas dID de discussion de groupe ou de supergroupe Telegram dans `groupAllowFrom`. Les ID de discussion négatifs doivent être placés sous `channels.telegram.groups`.
Ne placez pas dID de chat de groupe ou supergroupe Telegram dans `groupAllowFrom`. Les ID de chat négatifs doivent être placés sous `channels.telegram.groups`.
Les entrées non numériques sont ignorées pour lautorisation des expéditeurs.
Limite de sécurité (`2026.2.25+`) : lauthentification des expéditeurs de groupe nhérite **pas** des approbations du magasin dassociation DM.
Lassociation reste limitée aux DM. Pour les groupes, définissez `groupAllowFrom` ou `allowFrom` par groupe/par sujet.
Si `groupAllowFrom` nest pas défini, Telegram retombe sur `allowFrom` de la configuration, pas sur le magasin dassociation.
Modèle pratique pour les bots à propriétaire unique : définissez votre ID utilisateur dans `channels.telegram.allowFrom`, laissez `groupAllowFrom` non défini, et autorisez les groupes cibles sous `channels.telegram.groups`.
Remarque dexécution : si `channels.telegram` est complètement absent, les valeurs par défaut à lexécution sont fail-closed avec `groupPolicy="allowlist"` sauf si `channels.defaults.groupPolicy` est explicitement défini.
Limite de sécurité (`2026.2.25+`) : lautorisation des expéditeurs en groupe **nhérite pas** des approbations du magasin dassociation pour les MP.
Lassociation reste limitée aux MP. Pour les groupes, définissez `groupAllowFrom` ou `allowFrom` par groupe/par sujet.
Si `groupAllowFrom` nest pas défini, Telegram se rabat sur `allowFrom` dans la configuration, pas sur le magasin dassociation.
Modèle pratique pour les bots à propriétaire unique : définissez votre ID utilisateur dans `channels.telegram.allowFrom`, laissez `groupAllowFrom` non défini et autorisez les groupes cibles sous `channels.telegram.groups`.
Note dexécution : si `channels.telegram` est totalement absent, les valeurs par défaut dexécution utilisent le mode fail-closed avec `groupPolicy="allowlist"` sauf si `channels.defaults.groupPolicy` est explicitement défini.
Exemple : autoriser nimporte quel membre dans un groupe spécifique :
@ -191,7 +191,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
}
```
Exemple : autoriser uniquement des utilisateurs spécifiques dans un groupe spécifique :
Exemple : autoriser seulement des utilisateurs spécifiques dans un groupe spécifique :
```json5
{
@ -211,29 +211,29 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
<Warning>
Erreur fréquente : `groupAllowFrom` nest pas une liste dautorisation de groupes Telegram.
- Placez les ID négatifs de groupe ou de supergroupe Telegram comme `-1001234567890` sous `channels.telegram.groups`.
- Placez les ID utilisateur Telegram comme `8734062810` sous `groupAllowFrom` lorsque vous voulez limiter quelles personnes à lintérieur dun groupe autorisé peuvent déclencher le bot.
- Placez les ID négatifs de groupe ou supergroupe Telegram comme `-1001234567890` sous `channels.telegram.groups`.
- Placez les ID utilisateur Telegram comme `8734062810` sous `groupAllowFrom` lorsque vous voulez limiter quelles personnes dans un groupe autorisé peuvent déclencher le bot.
- Utilisez `groupAllowFrom: ["*"]` uniquement lorsque vous voulez que nimporte quel membre dun groupe autorisé puisse parler au bot.
</Warning>
</Tab>
<Tab title="Comportement des mentions">
Par défaut, les réponses dans les groupes exigent une mention.
<Tab title="Comportement de mention">
Les réponses en groupe nécessitent une mention par défaut.
La mention peut venir de :
La mention peut provenir de :
- la mention native `@botusername`, ou
- les modèles de mention dans :
- `agents.list[].groupChat.mentionPatterns`
- `messages.groupChat.mentionPatterns`
Options de commande au niveau de la session :
Basculements de commande au niveau de la session :
- `/activation always`
- `/activation mention`
Celles-ci mettent à jour uniquement létat de la session. Utilisez la configuration pour la persistance.
Ceux-ci mettent à jour uniquement létat de la session. Utilisez la configuration pour une persistance.
Exemple de configuration persistante :
@ -249,11 +249,11 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
}
```
Obtenir lID de discussion du groupe :
Obtenir lID du chat de groupe :
- transférez un message du groupe à `@userinfobot` / `@getidsbot`
- ou lisez `chat.id` depuis `openclaw logs --follow`
- ou inspectez `getUpdates` de lAPI Bot
- transférer un message du groupe à `@userinfobot` / `@getidsbot`
- ou lire `chat.id` depuis `openclaw logs --follow`
- ou inspecter `getUpdates` de lAPI Bot
</Tab>
</Tabs>
@ -262,12 +262,12 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- Telegram est géré par le processus Gateway.
- Le routage est déterministe : les réponses entrantes de Telegram repartent vers Telegram (le modèle ne choisit pas les canaux).
- Les messages entrants sont normalisés dans lenveloppe de canal partagée avec métadonnées de réponse et espaces réservés pour les médias.
- Les messages entrants sont normalisés dans lenveloppe de canal partagée avec les métadonnées de réponse et des espaces réservés pour les médias.
- Les sessions de groupe sont isolées par ID de groupe. Les sujets de forum ajoutent `:topic:<threadId>` pour garder les sujets isolés.
- Les messages DM peuvent transporter `message_thread_id` ; OpenClaw les route avec des clés de session sensibles aux fils et préserve lID de fil pour les réponses.
- Le long polling utilise le runner grammY avec séquencement par discussion/par fil. La concurrence globale du récepteur du runner utilise `agents.defaults.maxConcurrent`.
- Les redémarrages du watchdog de long polling se déclenchent après 120 secondes sans activité `getUpdates` terminée par défaut. Augmentez `channels.telegram.pollingStallThresholdMs` uniquement si votre déploiement voit encore de faux redémarrages pour blocage de polling pendant des traitements longs. La valeur est en millisecondes et est autorisée de `30000` à `600000` ; les surcharges par compte sont prises en charge.
- LAPI Bot Telegram ne prend pas en charge les accusés de lecture (`sendReadReceipts` ne sapplique pas).
- Les messages MP peuvent transporter `message_thread_id` ; OpenClaw les route avec des clés de session tenant compte des fils et préserve lID de fil pour les réponses.
- Le long polling utilise grammY runner avec un séquencement par chat/par fil. La concurrence globale du puits runner utilise `agents.defaults.maxConcurrent`.
- Les redémarrages du watchdog de long polling se déclenchent par défaut après 120 secondes sans activité `getUpdates` terminée. Augmentez `channels.telegram.pollingStallThresholdMs` uniquement si votre déploiement observe encore de faux redémarrages pour blocage de polling pendant des traitements longs. La valeur est en millisecondes et autorisée de `30000` à `600000` ; des surcharges par compte sont prises en charge.
- LAPI Bot Telegram na pas de prise en charge des accusés de lecture (`sendReadReceipts` ne sapplique pas).
## Référence des fonctionnalités
@ -280,20 +280,21 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
Exigence :
- `channels.telegram.streaming` est `off | partial | block | progress` (par défaut : `partial`)
- `channels.telegram.streaming` vaut `off | partial | block | progress` (par défaut : `partial`)
- `progress` correspond à `partial` sur Telegram (compatibilité avec la dénomination inter-canaux)
- les anciennes valeurs `channels.telegram.streamMode` et booléennes `streaming` sont mappées automatiquement
- `streaming.preview.toolProgress` contrôle si les mises à jour doutil/progression réutilisent le même message daperçu modifié (par défaut : `true`). Définissez `false` pour conserver des messages doutil/progression séparés.
- lancien `channels.telegram.streamMode` et les valeurs booléennes `streaming` sont mappés automatiquement
Pour les réponses texte uniquement :
- DM : OpenClaw conserve le même message daperçu et effectue une modification finale sur place (pas de second message)
- MP : OpenClaw conserve le même message daperçu et effectue une modification finale sur place (pas de second message)
- groupe/sujet : OpenClaw conserve le même message daperçu et effectue une modification finale sur place (pas de second message)
Pour les réponses complexes (par exemple des charges utiles média), OpenClaw retombe sur une livraison finale normale puis nettoie le message daperçu.
Pour les réponses complexes (par exemple des charges utiles multimédias), OpenClaw se rabat sur la livraison finale normale puis nettoie le message daperçu.
La diffusion daperçu est distincte de la diffusion par blocs. Lorsque la diffusion par blocs est explicitement activée pour Telegram, OpenClaw ignore le flux daperçu afin déviter une double diffusion.
Le flux daperçu est distinct du flux par blocs. Lorsque le flux par blocs est explicitement activé pour Telegram, OpenClaw ignore le flux daperçu pour éviter un double flux.
Si le transport natif de brouillon nest pas disponible ou est rejeté, OpenClaw retombe automatiquement sur `sendMessage` + `editMessageText`.
Si le transport de brouillon natif nest pas disponible/rejeté, OpenClaw se rabat automatiquement sur `sendMessage` + `editMessageText`.
Flux de raisonnement propre à Telegram :
@ -302,10 +303,10 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
</Accordion>
<Accordion title="Mise en forme et repli HTML">
<Accordion title="Formatage et repli HTML">
Le texte sortant utilise Telegram `parse_mode: "HTML"`.
- Le texte de type Markdown est rendu en HTML sûr pour Telegram.
- Le texte de style Markdown est rendu en HTML sûr pour Telegram.
- Le HTML brut du modèle est échappé pour réduire les échecs danalyse Telegram.
- Si Telegram rejette le HTML analysé, OpenClaw réessaie en texte brut.
@ -320,7 +321,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `commands.native: "auto"` active les commandes natives pour Telegram
Ajouter des entrées de menu de commandes personnalisées :
Ajouter des entrées de menu de commande personnalisées :
```json5
{
@ -337,45 +338,45 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
Règles :
- les noms sont normalisés (suppression du `/` initial, minuscules)
- les noms sont normalisés (supprime le `/` initial, minuscules)
- modèle valide : `a-z`, `0-9`, `_`, longueur `1..32`
- les commandes personnalisées ne peuvent pas remplacer les commandes natives
- les conflits/doublons sont ignorés et journalisés
- les conflits/doublons sont ignorés et consignés
Remarques :
- les commandes personnalisées sont uniquement des entrées de menu ; elles nimplémentent pas automatiquement un comportement
- les commandes de Plugin/Skills peuvent quand même fonctionner lorsquelles sont saisies même si elles ne sont pas affichées dans le menu Telegram
- les commandes de plugin/Skills peuvent toujours fonctionner lorsquelles sont saisies, même si elles ne sont pas affichées dans le menu Telegram
Si les commandes natives sont désactivées, les commandes intégrées sont supprimées. Les commandes personnalisées/de Plugin peuvent quand même senregistrer si elles sont configurées.
Si les commandes natives sont désactivées, les commandes intégrées sont supprimées. Les commandes personnalisées/de plugin peuvent toujours senregistrer si elles sont configurées.
Échecs fréquents de configuration :
Échecs de configuration fréquents :
- `setMyCommands failed` avec `BOT_COMMANDS_TOO_MUCH` signifie que le menu Telegram déborde encore après réduction ; réduisez les commandes de Plugin/Skills/personnalisées ou désactivez `channels.telegram.commands.native`.
- `setMyCommands failed` avec `BOT_COMMANDS_TOO_MUCH` signifie que le menu Telegram déborde encore après réduction ; réduisez les commandes de plugin/Skills/personnalisées ou désactivez `channels.telegram.commands.native`.
- `setMyCommands failed` avec des erreurs réseau/fetch signifie généralement que le DNS/HTTPS sortant vers `api.telegram.org` est bloqué.
### Commandes dassociation dappareil (Plugin `device-pair`)
### Commandes dassociation dappareil (plugin `device-pair`)
Lorsque le Plugin `device-pair` est installé :
Lorsque le plugin `device-pair` est installé :
1. `/pair` génère un code de configuration
2. collez le code dans lapp iOS
3. `/pair pending` liste les requêtes en attente (y compris rôle/portées)
4. approuvez la requête :
3. `/pair pending` liste les demandes en attente (y compris le rôle/les scopes)
4. approuvez la demande :
- `/pair approve <requestId>` pour une approbation explicite
- `/pair approve` lorsquil ny a quune seule requête en attente
- `/pair approve` lorsquil ny a quune seule demande en attente
- `/pair approve latest` pour la plus récente
Le code de configuration transporte un jeton damorçage de courte durée. Le transfert damorçage intégré conserve le jeton du nœud principal à `scopes: []` ; tout jeton opérateur transféré reste limité à `operator.approvals`, `operator.read`, `operator.talk.secrets` et `operator.write`. Les vérifications de portée damorçage sont préfixées par rôle, de sorte que cette liste dautorisation opérateur ne satisfait que les requêtes opérateur ; les rôles non opérateur nécessitent toujours des portées sous leur propre préfixe de rôle.
Le code de configuration transporte un jeton bootstrap de courte durée. Le transfert bootstrap intégré conserve le jeton du nœud principal à `scopes: []` ; tout jeton opérateur transmis reste limité à `operator.approvals`, `operator.read`, `operator.talk.secrets` et `operator.write`. Les vérifications de scope bootstrap sont préfixées par rôle ; ainsi, cette liste dautorisation dopérateur ne satisfait que les demandes dopérateur ; les rôles non opérateur nécessitent toujours des scopes sous leur propre préfixe de rôle.
Si un appareil réessaie avec des détails dauthentification modifiés (par exemple rôle/portées/clé publique), la requête en attente précédente est remplacée et la nouvelle requête utilise un `requestId` différent. Réexécutez `/pair pending` avant dapprouver.
Si un appareil réessaie avec des détails dauthentification modifiés (par exemple rôle/scopes/clé publique), la demande en attente précédente est remplacée et la nouvelle demande utilise un `requestId` différent. Relancez `/pair pending` avant dapprouver.
Plus de détails : [Association](/fr/channels/pairing#pair-via-telegram-recommended-for-ios).
</Accordion>
<Accordion title="Boutons intégrés">
Configurez la portée du clavier intégré :
<Accordion title="Boutons inline">
Configurer la portée du clavier inline :
```json5
{
@ -424,18 +425,18 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
action: "send",
channel: "telegram",
to: "123456789",
message: "Choisissez une option :",
message: "Choose an option:",
buttons: [
[
{ text: "Oui", callback_data: "yes" },
{ text: "Non", callback_data: "no" },
{ text: "Yes", callback_data: "yes" },
{ text: "No", callback_data: "no" },
],
[{ text: "Annuler", callback_data: "cancel" }],
[{ text: "Cancel", callback_data: "cancel" }],
],
}
```
Les clics sur les callbacks sont transmis à lagent sous forme de texte :
Les clics de callback sont transmis à lagent sous forme de texte :
`callback_data: <value>`
</Accordion>
@ -443,23 +444,23 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
<Accordion title="Actions de message Telegram pour les agents et lautomatisation">
Les actions doutil Telegram incluent :
- `sendMessage` (`to`, `content`, `mediaUrl`, `replyToMessageId`, `messageThreadId` optionnels)
- `sendMessage` (`to`, `content`, `mediaUrl`, `replyToMessageId`, `messageThreadId` facultatifs)
- `react` (`chatId`, `messageId`, `emoji`)
- `deleteMessage` (`chatId`, `messageId`)
- `editMessage` (`chatId`, `messageId`, `content`)
- `createForumTopic` (`chatId`, `name`, `iconColor`, `iconCustomEmojiId` optionnels)
- `createForumTopic` (`chatId`, `name`, `iconColor`, `iconCustomEmojiId` facultatifs)
Les actions de message du canal exposent des alias ergonomiques (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`).
Les actions de message de canal exposent des alias ergonomiques (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`).
Contrôles de limitation :
Contrôles de restriction :
- `channels.telegram.actions.sendMessage`
- `channels.telegram.actions.deleteMessage`
- `channels.telegram.actions.reactions`
- `channels.telegram.actions.sticker` (par défaut : désactivé)
Remarque : `edit` et `topic-create` sont actuellement activés par défaut et nont pas de commutateurs `channels.telegram.actions.*` séparés.
Les envois à lexécution utilisent linstantané actif de la configuration/secrets (démarrage/rechargement), de sorte que les chemins daction neffectuent pas de nouvelle résolution ad hoc de SecretRef à chaque envoi.
Remarque : `edit` et `topic-create` sont actuellement activés par défaut et nont pas de bascules `channels.telegram.actions.*` séparées.
Les envois à lexécution utilisent linstantané actif de config/secrets (démarrage/rechargement), donc les chemins daction neffectuent pas de re-résolution ad hoc de SecretRef à chaque envoi.
Sémantique de suppression des réactions : [/tools/reactions](/fr/tools/reactions)
@ -477,7 +478,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `first`
- `all`
Remarque : `off` désactive le fil de réponse implicite. Les balises explicites `[[reply_to_*]]` restent honorées.
Remarque : `off` désactive le fil de réponse implicite. Les balises explicites `[[reply_to_*]]` sont toujours respectées.
</Accordion>
@ -491,7 +492,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
Cas particulier du sujet général (`threadId=1`) :
- les envois de message omettent `message_thread_id` (Telegram rejette `sendMessage(...thread_id=1)`)
- les envois de messages omettent `message_thread_id` (Telegram rejette `sendMessage(...thread_id=1)`)
- les actions de saisie incluent toujours `message_thread_id`
Héritage des sujets : les entrées de sujet héritent des paramètres du groupe sauf surcharge (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`).
@ -575,18 +576,18 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
**Lancement ACP lié au fil depuis le chat** :
- `/acp spawn <agent> --thread here|auto` peut lier le sujet Telegram actuel à une nouvelle session ACP.
- Les messages suivants dans le sujet sont routés directement vers la session ACP liée (aucun `/acp steer` requis).
- OpenClaw épingle le message de confirmation du lancement dans le sujet après une liaison réussie.
- Les messages suivants dans le sujet sont routés directement vers la session ACP liée (pas de `/acp steer` requis).
- OpenClaw épingle dans le sujet le message de confirmation du lancement après une liaison réussie.
- Nécessite `channels.telegram.threadBindings.spawnAcpSessions=true`.
Le contexte du modèle inclut :
Le contexte de modèle inclut :
- `MessageThreadId`
- `IsForum`
Comportement des fils en DM :
Comportement des fils en MP :
- les discussions privées avec `message_thread_id` conservent le routage DM mais utilisent des clés de session et des cibles de réponse sensibles aux fils.
- les discussions privées avec `message_thread_id` conservent le routage MP mais utilisent des clés de session et des cibles de réponse tenant compte des fils.
</Accordion>
@ -596,7 +597,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
Telegram distingue les notes vocales des fichiers audio.
- par défaut : comportement de fichier audio
- balise `[[audio_as_voice]]` dans la réponse de lagent pour forcer lenvoi comme note vocale
- balise `[[audio_as_voice]]` dans la réponse de lagent pour forcer lenvoi en note vocale
Exemple daction de message :
@ -626,7 +627,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
}
```
Les notes vidéo ne prennent pas en charge les légendes ; le texte du message fourni est envoyé séparément.
Les notes vidéo ne prennent pas en charge les légendes ; le texte de message fourni est envoyé séparément.
### Stickers
@ -636,7 +637,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- TGS animé : ignoré
- WEBM vidéo : ignoré
Champs de contexte du sticker :
Champs de contexte des stickers :
- `Sticker.emoji`
- `Sticker.setName`
@ -648,9 +649,9 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `~/.openclaw/telegram/sticker-cache.json`
Les stickers sont décrits une fois (quand cest possible) puis mis en cache afin de réduire les appels répétés à la vision.
Les stickers sont décrits une seule fois (lorsque possible) puis mis en cache afin de réduire les appels de vision répétés.
Activer les actions de stickers :
Activer les actions de sticker :
```json5
{
@ -681,7 +682,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
{
action: "sticker-search",
channel: "telegram",
query: "chat qui fait coucou",
query: "cat waving",
limit: 5,
}
```
@ -691,9 +692,9 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
<Accordion title="Notifications de réaction">
Les réactions Telegram arrivent sous forme de mises à jour `message_reaction` (séparées des charges utiles de message).
Lorsquelles sont activées, OpenClaw met en file dattente des événements système comme :
Lorsquelles sont activées, OpenClaw met en file dattente des événements système tels que :
- `Réaction Telegram ajoutée : 👍 par Alice (@alice) sur le msg 42`
- `Réaction Telegram ajoutée : 👍 par Alice (@alice) sur msg 42`
Configuration :
@ -705,8 +706,8 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
- `own` signifie uniquement les réactions des utilisateurs aux messages envoyés par le bot (au mieux via le cache des messages envoyés).
- Les événements de réaction respectent toujours les contrôles daccès Telegram (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`) ; les expéditeurs non autorisés sont ignorés.
- Telegram ne fournit pas dID de fil dans les mises à jour de réaction.
- les groupes non forum sont routés vers la session de discussion de groupe
- les groupes forum sont routés vers la session du sujet général du groupe (`:topic:1`), et non vers le sujet dorigine exact
- les groupes non forum sont routés vers la session de chat de groupe
- les groupes forum sont routés vers la session du sujet général du groupe (`:topic:1`), pas vers le sujet dorigine exact
`allowed_updates` pour le polling/Webhook inclut automatiquement `message_reaction`.
@ -729,8 +730,8 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
</Accordion>
<Accordion title="Écritures de configuration depuis les événements et commandes Telegram">
Les écritures de configuration du canal sont activées par défaut (`configWrites !== false`).
<Accordion title="Écritures de configuration à partir des événements et commandes Telegram">
Les écritures de configuration de canal sont activées par défaut (`configWrites !== false`).
Les écritures déclenchées par Telegram incluent :
@ -757,31 +758,31 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
Mode Webhook :
- définir `channels.telegram.webhookUrl`
- définir `channels.telegram.webhookSecret` (obligatoire lorsque lURL Webhook est définie)
- `channels.telegram.webhookPath` optionnel (par défaut `/telegram-webhook`)
- `channels.telegram.webhookHost` optionnel (par défaut `127.0.0.1`)
- `channels.telegram.webhookPort` optionnel (par défaut `8787`)
- définir `channels.telegram.webhookSecret` (requis lorsquune URL Webhook est définie)
- `channels.telegram.webhookPath` facultatif (par défaut `/telegram-webhook`)
- `channels.telegram.webhookHost` facultatif (par défaut `127.0.0.1`)
- `channels.telegram.webhookPort` facultatif (par défaut `8787`)
Lécouteur local par défaut pour le mode Webhook est lié à `127.0.0.1:8787`.
Lécouteur local par défaut pour le mode Webhook se lie à `127.0.0.1:8787`.
Si votre point de terminaison public diffère, placez un proxy inverse devant et pointez `webhookUrl` vers lURL publique.
Définissez `webhookHost` (par exemple `0.0.0.0`) lorsque vous avez intentionnellement besoin dun trafic entrant externe.
Si votre point de terminaison public est différent, placez un proxy inverse devant et faites pointer `webhookUrl` vers lURL publique.
Définissez `webhookHost` (par exemple `0.0.0.0`) lorsque vous avez intentionnellement besoin dun ingress externe.
</Accordion>
<Accordion title="Limites, nouvelle tentative et cibles CLI">
- `channels.telegram.textChunkLimit` vaut `4000` par défaut.
- `channels.telegram.chunkMode="newline"` privilégie les limites de paragraphe (lignes vides) avant la découpe par longueur.
- `channels.telegram.mediaMaxMb` (par défaut `100`) plafonne la taille des médias Telegram entrants et sortants.
- `channels.telegram.textChunkLimit` a pour valeur par défaut 4000.
- `channels.telegram.chunkMode="newline"` privilégie les limites de paragraphe (lignes vides) avant le découpage par longueur.
- `channels.telegram.mediaMaxMb` (par défaut 100) limite la taille des médias Telegram entrants et sortants.
- `channels.telegram.timeoutSeconds` remplace le délai dexpiration du client API Telegram (si non défini, la valeur par défaut de grammY sapplique).
- `channels.telegram.pollingStallThresholdMs` vaut `120000` par défaut ; ajustez-le entre `30000` et `600000` uniquement pour les redémarrages par faux positifs de blocage du polling.
- lhistorique du contexte de groupe utilise `channels.telegram.historyLimit` ou `messages.groupChat.historyLimit` (par défaut `50`) ; `0` désactive.
- `channels.telegram.pollingStallThresholdMs` vaut par défaut `120000` ; ajustez entre `30000` et `600000` uniquement pour les redémarrages de polling bloqué faux positifs.
- lhistorique du contexte de groupe utilise `channels.telegram.historyLimit` ou `messages.groupChat.historyLimit` (par défaut 50) ; `0` le désactive.
- le contexte supplémentaire de réponse/citation/transfert est actuellement transmis tel que reçu.
- les listes dautorisation Telegram limitent principalement qui peut déclencher lagent, et non une limite complète de masquage du contexte supplémentaire.
- contrôles dhistorique DM :
- les listes dautorisation Telegram contrôlent principalement qui peut déclencher lagent, pas une limite complète de masquage du contexte supplémentaire.
- contrôles de lhistorique des MP :
- `channels.telegram.dmHistoryLimit`
- `channels.telegram.dms["<user_id>"].historyLimit`
- la configuration `channels.telegram.retry` sapplique aux assistants denvoi Telegram (CLI/outils/actions) pour les erreurs dAPI sortantes récupérables.
- la configuration `channels.telegram.retry` sapplique aux aides denvoi Telegram (CLI/outils/actions) pour les erreurs récupérables de lAPI sortante.
La cible denvoi CLI peut être un ID de chat numérique ou un nom dutilisateur :
@ -800,63 +801,63 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \
--poll-duration-seconds 300 --poll-public
```
Options de sondage propres à Telegram :
Indicateurs de sondage propres à Telegram :
- `--poll-duration-seconds` (`5-600`)
- `--poll-duration-seconds` (5-600)
- `--poll-anonymous`
- `--poll-public`
- `--thread-id` pour les sujets de forum (ou utilisez une cible `:topic:`)
Lenvoi Telegram prend aussi en charge :
- `--buttons` pour les claviers intégrés lorsque `channels.telegram.capabilities.inlineButtons` lautorise
- `--force-document` pour envoyer les images et GIF sortants comme documents au lieu denvois de photo compressée ou de média animé
- `--buttons` pour les claviers inline lorsque `channels.telegram.capabilities.inlineButtons` lautorise
- `--force-document` pour envoyer les images et GIF sortants comme documents au lieu de téléversements compressés de photo ou de média animé
Limitation des actions :
Restriction des actions :
- `channels.telegram.actions.sendMessage=false` désactive les messages Telegram sortants, y compris les sondages
- `channels.telegram.actions.poll=false` désactive la création de sondages Telegram tout en laissant les envois réguliers activés
- `channels.telegram.actions.poll=false` désactive la création de sondages Telegram tout en laissant les envois normaux activés
</Accordion>
<Accordion title="Approbations exec dans Telegram">
Telegram prend en charge les approbations exec dans les DM des approbateurs et peut facultativement publier les invites dapprobation dans le chat ou le sujet dorigine.
Telegram prend en charge les approbations exec dans les MP des approbateurs et peut facultativement publier les invites dapprobation dans le chat ou le sujet dorigine.
Chemin de configuration :
- `channels.telegram.execApprovals.enabled`
- `channels.telegram.execApprovals.approvers` (optionnel ; retombe sur les ID propriétaires numériques déduits de `allowFrom` et de `defaultTo` direct lorsque possible)
- `channels.telegram.execApprovals.approvers` (facultatif ; se rabat sur les ID propriétaires numériques déduits de `allowFrom` et de `defaultTo` en message direct lorsque possible)
- `channels.telegram.execApprovals.target` (`dm` | `channel` | `both`, par défaut : `dm`)
- `agentFilter`, `sessionFilter`
Les approbateurs doivent être des ID utilisateur Telegram numériques. Telegram active automatiquement les approbations exec natives lorsque `enabled` nest pas défini ou vaut `"auto"` et quau moins un approbateur peut être résolu, soit depuis `execApprovals.approvers`, soit depuis la configuration du propriétaire numérique du compte (`allowFrom` et `defaultTo` en message direct). Définissez `enabled: false` pour désactiver explicitement Telegram comme client dapprobation natif. Les demandes dapprobation retombent sinon sur dautres routes dapprobation configurées ou sur la politique de repli des approbations exec.
Les approbateurs doivent être des ID utilisateur Telegram numériques. Telegram active automatiquement les approbations exec natives lorsque `enabled` nest pas défini ou vaut `"auto"` et quau moins un approbateur peut être résolu, soit depuis `execApprovals.approvers`, soit depuis la configuration numérique du propriétaire du compte (`allowFrom` et `defaultTo` en message direct). Définissez `enabled: false` pour désactiver explicitement Telegram comme client dapprobation natif. Sinon, les demandes dapprobation se rabattent sur dautres routes dapprobation configurées ou sur la politique de repli dapprobation exec.
Telegram affiche aussi les boutons dapprobation partagés utilisés par les autres canaux de chat. Ladaptateur Telegram natif ajoute surtout le routage vers les DM des approbateurs, la diffusion vers le canal/sujet et les indices de saisie avant livraison.
Lorsque ces boutons sont présents, ils constituent lUX principale dapprobation ; OpenClaw
ne doit inclure une commande manuelle `/approve` que lorsque le résultat de loutil indique
que les approbations par chat ne sont pas disponibles ou que lapprobation manuelle est la seule voie.
Telegram affiche également les boutons dapprobation partagés utilisés par les autres canaux de chat. Ladaptateur natif Telegram ajoute principalement le routage des MP dapprobateur, la diffusion vers le canal/sujet et les indications de saisie avant la livraison.
Lorsque ces boutons sont présents, ils constituent lUX dapprobation principale ; OpenClaw
ne devrait inclure une commande manuelle `/approve` que lorsque le résultat de loutil indique
que les approbations par chat sont indisponibles ou que lapprobation manuelle est la seule voie.
Règles de livraison :
- `target: "dm"` envoie les invites dapprobation uniquement aux DM des approbateurs résolus
- `target: "channel"` renvoie linvite dans le chat/sujet Telegram dorigine
- `target: "both"` envoie aux DM des approbateurs et au chat/sujet dorigine
- `target: "dm"` envoie les invites dapprobation uniquement aux MP des approbateurs résolus
- `target: "channel"` renvoie linvite vers le chat/sujet Telegram dorigine
- `target: "both"` envoie aux MP des approbateurs et au chat/sujet dorigine
Seuls les approbateurs résolus peuvent approuver ou refuser. Les non-approbateurs ne peuvent pas utiliser `/approve` et ne peuvent pas utiliser les boutons dapprobation Telegram.
Seuls les approbateurs résolus peuvent approuver ou refuser. Les non-approbateurs ne peuvent pas utiliser `/approve` ni les boutons dapprobation Telegram.
Comportement de résolution des approbations :
- Les ID préfixés par `plugin:` sont toujours résolus via les approbations de Plugin.
- Les autres ID essaient dabord `exec.approval.resolve`.
- Si Telegram est aussi autorisé pour les approbations de Plugin et que Gateway indique
- les ID préfixés par `plugin:` sont toujours résolus via les approbations de plugin.
- les autres ID essaient dabord `exec.approval.resolve`.
- si Telegram est aussi autorisé pour les approbations de plugin et que la gateway indique
que lapprobation exec est inconnue/expirée, Telegram réessaie une fois via
`plugin.approval.resolve`.
- Les refus/erreurs réels dapprobation exec ne retombent pas silencieusement vers la résolution
dapprobation de Plugin.
- les refus/erreurs réels dapprobation exec ne basculent pas silencieusement vers la
résolution dapprobation de plugin.
La livraison dans le canal affiche le texte de la commande dans le chat ; activez donc `channel` ou `both` uniquement dans des groupes/sujets de confiance. Lorsque linvite arrive dans un sujet de forum, OpenClaw préserve le sujet à la fois pour linvite dapprobation et pour le suivi après approbation. Les approbations exec expirent après 30 minutes par défaut.
La livraison dans le canal affiche le texte de la commande dans le chat ; nactivez donc `channel` ou `both` que dans des groupes/sujets de confiance. Lorsque linvite arrive dans un sujet de forum, OpenClaw préserve le sujet à la fois pour linvite dapprobation et pour le suivi après approbation. Les approbations exec expirent après 30 minutes par défaut.
Les boutons dapprobation intégrés dépendent également de `channels.telegram.capabilities.inlineButtons` autorisant la surface cible (`dm`, `group` ou `all`).
Les boutons dapprobation inline dépendent également du fait que `channels.telegram.capabilities.inlineButtons` autorise la surface cible (`dm`, `group` ou `all`).
Documentation associée : [Approbations exec](/fr/tools/exec-approvals)
@ -870,9 +871,9 @@ Lorsque lagent rencontre une erreur de livraison ou de fournisseur, Telegram
| Key | Values | Default | Description |
| ----------------------------------- | ----------------- | ------- | ----------------------------------------------------------------------------------------------- |
| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` envoie un message derreur convivial dans le chat. `silent` supprime entièrement les réponses derreur. |
| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | Temps minimal entre les réponses derreur au même chat. Évite le spam derreurs pendant les pannes. |
| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | Délai minimal entre deux réponses derreur dans le même chat. Empêche le spam derreurs pendant les pannes. |
Les surcharges par compte, par groupe et par sujet sont prises en charge (même héritage que les autres clés de configuration Telegram).
Des surcharges par compte, par groupe et par sujet sont prises en charge (même héritage que les autres clés de configuration Telegram).
```json5
{
@ -895,40 +896,40 @@ Les surcharges par compte, par groupe et par sujet sont prises en charge (même
<AccordionGroup>
<Accordion title="Le bot ne répond pas aux messages de groupe sans mention">
- Si `requireMention=false`, le mode confidentialité de Telegram doit autoriser une visibilité complète.
- BotFather : `/setprivacy` -> Désactiver
- Si `requireMention=false`, le mode confidentialité de Telegram doit autoriser la visibilité complète.
- BotFather : `/setprivacy` -> Disable
- puis retirer + rajouter le bot au groupe
- `openclaw channels status` avertit lorsque la configuration attend des messages de groupe sans mention.
- `openclaw channels status --probe` peut vérifier des ID de groupe numériques explicites ; le joker `"*"` ne peut pas être sondé pour lappartenance.
- test de session rapide : `/activation always`.
- test rapide de session : `/activation always`.
</Accordion>
<Accordion title="Le bot ne voit pas du tout les messages du groupe">
<Accordion title="Le bot ne voit pas du tout les messages de groupe">
- lorsque `channels.telegram.groups` existe, le groupe doit être listé (ou inclure `"*"`)
- vérifiez lappartenance du bot au groupe
- consultez les journaux : `openclaw logs --follow` pour les raisons dignorance
- vérifier lappartenance du bot au groupe
- consulter les journaux : `openclaw logs --follow` pour les raisons dignorance
</Accordion>
<Accordion title="Les commandes fonctionnent partiellement ou pas du tout">
- autorisez lidentité de votre expéditeur (association et/ou `allowFrom` numérique)
- autorisez votre identité dexpéditeur (association et/ou `allowFrom` numérique)
- lautorisation des commandes sapplique toujours même lorsque la politique de groupe est `open`
- `setMyCommands failed` avec `BOT_COMMANDS_TOO_MUCH` signifie que le menu natif contient trop dentrées ; réduisez les commandes de Plugin/Skills/personnalisées ou désactivez les menus natifs
- `setMyCommands failed` avec des erreurs réseau/fetch indique généralement des problèmes daccessibilité DNS/HTTPS vers `api.telegram.org`
- `setMyCommands failed` avec `BOT_COMMANDS_TOO_MUCH` signifie que le menu natif contient trop dentrées ; réduisez les commandes de plugin/Skills/personnalisées ou désactivez les menus natifs
- `setMyCommands failed` avec des erreurs réseau/fetch indique généralement des problèmes de connectivité DNS/HTTPS vers `api.telegram.org`
</Accordion>
<Accordion title="Instabilité du polling ou du réseau">
- Node 22+ + fetch/proxy personnalisé peut déclencher un comportement dabandon immédiat si les types `AbortSignal` ne correspondent pas.
- Certains hôtes résolvent dabord `api.telegram.org` en IPv6 ; une sortie IPv6 défaillante peut provoquer des échecs intermittents de lAPI Telegram.
- Si les journaux incluent `TypeError: fetch failed` ou `Network request for 'getUpdates' failed!`, OpenClaw les réessaie désormais comme erreurs réseau récupérables.
- Node 22+ + fetch/proxy personnalisé peuvent déclencher un comportement dabandon immédiat si les types AbortSignal ne correspondent pas.
- Certains hôtes résolvent `api.telegram.org` en IPv6 en premier ; un trafic sortant IPv6 défectueux peut provoquer des défaillances intermittentes de lAPI Telegram.
- Si les journaux incluent `TypeError: fetch failed` ou `Network request for 'getUpdates' failed!`, OpenClaw réessaie désormais ces erreurs comme des erreurs réseau récupérables.
- Si les journaux incluent `Polling stall detected`, OpenClaw redémarre le polling et reconstruit le transport Telegram après 120 secondes sans activité de long polling terminée par défaut.
- Augmentez `channels.telegram.pollingStallThresholdMs` uniquement lorsque les appels `getUpdates` longs fonctionnent correctement mais que votre hôte signale quand même de faux redémarrages pour blocage du polling. Les blocages persistants pointent généralement vers des problèmes de proxy, DNS, IPv6 ou de sortie TLS entre lhôte et `api.telegram.org`.
- Sur les hôtes VPS avec sortie directe/TLS instable, faites passer les appels API Telegram via `channels.telegram.proxy` :
- Augmentez `channels.telegram.pollingStallThresholdMs` uniquement lorsque les appels `getUpdates` de longue durée sont sains mais que votre hôte signale encore de faux redémarrages de polling bloqué. Les blocages persistants indiquent généralement des problèmes de proxy, DNS, IPv6 ou de sortie TLS entre lhôte et `api.telegram.org`.
- Sur les hôtes VPS avec une sortie directe/TLS instable, faites passer les appels API Telegram via `channels.telegram.proxy` :
```yaml
channels:
@ -937,7 +938,7 @@ channels:
```
- Node 22+ utilise par défaut `autoSelectFamily=true` (sauf WSL2) et `dnsResultOrder=ipv4first`.
- Si votre hôte est WSL2 ou fonctionne explicitement mieux avec un comportement IPv4 uniquement, forcez la sélection de famille :
- Si votre hôte est WSL2 ou fonctionne explicitement mieux en IPv4 uniquement, forcez la sélection de famille :
```yaml
channels:
@ -949,8 +950,8 @@ channels:
- Les réponses de plage de benchmark RFC 2544 (`198.18.0.0/15`) sont déjà autorisées
par défaut pour les téléchargements de médias Telegram. Si une fausse IP de confiance ou un
proxy transparent réécrit `api.telegram.org` vers une autre
adresse privée/interne/à usage spécial pendant les téléchargements de médias, vous pouvez activer
le contournement propre à Telegram :
adresse privée/interne/à usage spécial pendant les téléchargements de médias, vous pouvez
activer le contournement réservé à Telegram :
```yaml
channels:
@ -959,17 +960,16 @@ channels:
dangerouslyAllowPrivateNetwork: true
```
- Le même opt-in est disponible par compte à
- La même activation facultative est disponible par compte dans
`channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork`.
- Si votre proxy résout les hôtes média Telegram en `198.18.x.x`, laissez dabord
loption dangereuse désactivée. Les médias Telegram autorisent déjà par défaut la plage de benchmark RFC 2544.
- Si votre proxy résout les hôtes média Telegram en `198.18.x.x`, laissez dabord le
drapeau dangereux désactivé. Les médias Telegram autorisent déjà par défaut la plage de benchmark RFC 2544.
<Warning>
`channels.telegram.network.dangerouslyAllowPrivateNetwork` affaiblit les protections SSRF
des médias Telegram. Utilisez-le uniquement pour des environnements de proxy de confiance contrôlés par lopérateur
tels que le routage fake-IP de Clash, Mihomo ou Surge lorsquils
synthétisent des réponses privées ou à usage spécial hors de la plage de benchmark RFC 2544.
Laissez-le désactivé pour un accès Telegram normal sur linternet public.
des médias Telegram. Utilisez-le uniquement pour des environnements de proxy de confiance
contrôlés par lopérateur tels que le routage fake-IP de Clash, Mihomo ou Surge lorsquils
synthétisent des réponses privées ou à usage spécial en dehors de la plage de benchmark RFC 2544. Laissez-le désactivé pour un accès Telegram normal sur internet public.
</Warning>
- Surcharges denvironnement (temporaires) :
@ -986,9 +986,9 @@ dig +short api.telegram.org AAAA
</Accordion>
</AccordionGroup>
Plus daide : [Dépannage du canal](/fr/channels/troubleshooting).
Aide supplémentaire : [Dépannage des canaux](/fr/channels/troubleshooting).
## Pointeurs vers la référence de configuration Telegram
## Pointeurs de référence de configuration Telegram
Référence principale :
@ -996,63 +996,64 @@ Référence principale :
- `channels.telegram.botToken` : jeton du bot (BotFather).
- `channels.telegram.tokenFile` : lit le jeton depuis le chemin dun fichier ordinaire. Les liens symboliques sont rejetés.
- `channels.telegram.dmPolicy` : `pairing | allowlist | open | disabled` (par défaut : pairing).
- `channels.telegram.allowFrom` : liste dautorisation DM (ID utilisateur Telegram numériques). `allowlist` nécessite au moins un ID dexpéditeur. `open` nécessite `"*"`. `openclaw doctor --fix` peut résoudre les anciennes entrées `@username` en ID et peut récupérer les entrées de liste dautorisation depuis les fichiers du magasin dassociation dans les flux de migration `allowlist`.
- `channels.telegram.allowFrom` : liste dautorisation des MP (ID utilisateur Telegram numériques). `allowlist` nécessite au moins un ID dexpéditeur. `open` nécessite `"*"`. `openclaw doctor --fix` peut résoudre les anciennes entrées `@username` en ID et peut récupérer des entrées de liste dautorisation depuis des fichiers du magasin dassociation dans les flux de migration allowlist.
- `channels.telegram.actions.poll` : active ou désactive la création de sondages Telegram (activé par défaut ; nécessite toujours `sendMessage`).
- `channels.telegram.defaultTo` : cible Telegram par défaut utilisée par le CLI `--deliver` lorsquaucun `--reply-to` explicite nest fourni.
- `channels.telegram.groupPolicy` : `open | allowlist | disabled` (par défaut : allowlist).
- `channels.telegram.groupAllowFrom` : liste dautorisation des expéditeurs de groupe (ID utilisateur Telegram numériques). `openclaw doctor --fix` peut résoudre les anciennes entrées `@username` en ID. Les entrées non numériques sont ignorées au moment de lauthentification. Lauthentification de groupe nutilise pas le repli vers le magasin dassociation DM (`2026.2.25+`).
- `channels.telegram.groupAllowFrom` : liste dautorisation des expéditeurs de groupe (ID utilisateur Telegram numériques). `openclaw doctor --fix` peut résoudre les anciennes entrées `@username` en ID. Les entrées non numériques sont ignorées au moment de lauthentification. Lauthentification de groupe nutilise pas le repli vers le magasin dassociation des MP (`2026.2.25+`).
- Priorité multi-comptes :
- Lorsque deux ID de compte ou plus sont configurés, définissez `channels.telegram.defaultAccount` (ou incluez `channels.telegram.accounts.default`) pour rendre le routage par défaut explicite.
- Si aucun nest défini, OpenClaw retombe sur le premier ID de compte normalisé et `openclaw doctor` émet un avertissement.
- Si aucun nest défini, OpenClaw se rabat sur le premier ID de compte normalisé et `openclaw doctor` affiche un avertissement.
- `channels.telegram.accounts.default.allowFrom` et `channels.telegram.accounts.default.groupAllowFrom` sappliquent uniquement au compte `default`.
- Les comptes nommés héritent de `channels.telegram.allowFrom` et `channels.telegram.groupAllowFrom` lorsque les valeurs au niveau du compte ne sont pas définies.
- Les comptes nommés nhéritent pas de `channels.telegram.accounts.default.allowFrom` / `groupAllowFrom`.
- `channels.telegram.groups` : valeurs par défaut par groupe + liste dautorisation (utilisez `"*"` pour les valeurs par défaut globales).
- `channels.telegram.groups.<id>.groupPolicy` : surcharge par groupe pour groupPolicy (`open | allowlist | disabled`).
- `channels.telegram.groups.<id>.requireMention` : valeur par défaut de limitation par mention.
- `channels.telegram.groups.<id>.skills` : filtre Skills (omis = tous les Skills, vide = aucun).
- `channels.telegram.groups.<id>.requireMention` : valeur par défaut de restriction par mention.
- `channels.telegram.groups.<id>.skills` : filtre de Skills (omis = toutes les Skills, vide = aucune).
- `channels.telegram.groups.<id>.allowFrom` : surcharge par groupe de la liste dautorisation des expéditeurs.
- `channels.telegram.groups.<id>.systemPrompt` : prompt système supplémentaire pour le groupe.
- `channels.telegram.groups.<id>.enabled` : désactive le groupe si `false`.
- `channels.telegram.groups.<id>.enabled` : désactive le groupe lorsque la valeur est `false`.
- `channels.telegram.groups.<id>.topics.<threadId>.*` : surcharges par sujet (champs de groupe + `agentId` propre au sujet).
- `channels.telegram.groups.<id>.topics.<threadId>.agentId` : route ce sujet vers un agent spécifique (remplace le routage au niveau du groupe et par liaison).
- `channels.telegram.groups.<id>.topics.<threadId>.agentId` : route ce sujet vers un agent spécifique (remplace le routage au niveau du groupe et des liaisons).
- `channels.telegram.groups.<id>.topics.<threadId>.groupPolicy` : surcharge par sujet pour groupPolicy (`open | allowlist | disabled`).
- `channels.telegram.groups.<id>.topics.<threadId>.requireMention` : surcharge par sujet de la limitation par mention.
- `bindings[]` de niveau supérieur avec `type: "acp"` et lID canonique du sujet `chatId:topic:topicId` dans `match.peer.id` : champs de liaison persistante de sujet ACP (voir [Agents ACP](/fr/tools/acp-agents#channel-specific-settings)).
- `channels.telegram.direct.<id>.topics.<threadId>.agentId` : route les sujets DM vers un agent spécifique (même comportement que les sujets de forum).
- `channels.telegram.execApprovals.enabled` : active Telegram comme client natif dapprobation exec basé sur le chat pour ce compte.
- `channels.telegram.execApprovals.approvers` : ID utilisateur Telegram autorisés à approuver ou refuser les requêtes exec. Optionnel lorsque `channels.telegram.allowFrom` ou un `channels.telegram.defaultTo` direct identifie déjà le propriétaire.
- `channels.telegram.groups.<id>.topics.<threadId>.requireMention` : surcharge par sujet de la restriction par mention.
- `bindings[]` de niveau supérieur avec `type: "acp"` et lID canonique de sujet `chatId:topic:topicId` dans `match.peer.id` : champs de liaison persistante de sujet ACP (voir [Agents ACP](/fr/tools/acp-agents#channel-specific-settings)).
- `channels.telegram.direct.<id>.topics.<threadId>.agentId` : route les sujets de MP vers un agent spécifique (même comportement que pour les sujets de forum).
- `channels.telegram.execApprovals.enabled` : active Telegram comme client dapprobation exec par chat pour ce compte.
- `channels.telegram.execApprovals.approvers` : ID utilisateur Telegram autorisés à approuver ou refuser des demandes exec. Facultatif lorsque `channels.telegram.allowFrom` ou un `channels.telegram.defaultTo` direct identifie déjà le propriétaire.
- `channels.telegram.execApprovals.target` : `dm | channel | both` (par défaut : `dm`). `channel` et `both` préservent le sujet Telegram dorigine lorsquil est présent.
- `channels.telegram.execApprovals.agentFilter` : filtre dID dagent optionnel pour les invites dapprobation transférées.
- `channels.telegram.execApprovals.sessionFilter` : filtre optionnel de clé de session (sous-chaîne ou regex) pour les invites dapprobation transférées.
- `channels.telegram.execApprovals.agentFilter` : filtre facultatif par ID dagent pour les invites dapprobation transférées.
- `channels.telegram.execApprovals.sessionFilter` : filtre facultatif par clé de session (sous-chaîne ou regex) pour les invites dapprobation transférées.
- `channels.telegram.accounts.<account>.execApprovals` : surcharge par compte pour le routage des approbations exec Telegram et lautorisation des approbateurs.
- `channels.telegram.capabilities.inlineButtons` : `off | dm | group | all | allowlist` (par défaut : allowlist).
- `channels.telegram.accounts.<account>.capabilities.inlineButtons` : surcharge par compte.
- `channels.telegram.commands.nativeSkills` : active/désactive les commandes natives Skills de Telegram.
- `channels.telegram.commands.nativeSkills` : active/désactive les commandes Telegram natives de Skills.
- `channels.telegram.replyToMode` : `off | first | all` (par défaut : `off`).
- `channels.telegram.textChunkLimit` : taille des segments sortants (caractères).
- `channels.telegram.chunkMode` : `length` (par défaut) ou `newline` pour découper sur les lignes vides (limites de paragraphe) avant le découpage par longueur.
- `channels.telegram.linkPreview` : active/désactive les aperçus de liens pour les messages sortants (par défaut : true).
- `channels.telegram.streaming` : `off | partial | block | progress` (aperçu du flux en direct ; par défaut : `partial` ; `progress` correspond à `partial` ; `block` est une compatibilité héritée du mode aperçu). Le flux daperçu Telegram utilise un seul message daperçu modifié sur place.
- `channels.telegram.mediaMaxMb` : plafond de médias Telegram entrants/sortants (Mo, par défaut : 100).
- `channels.telegram.retry` : politique de nouvelle tentative pour les assistants denvoi Telegram (CLI/outils/actions) sur les erreurs dAPI sortantes récupérables (tentatives, `minDelayMs`, `maxDelayMs`, `jitter`).
- `channels.telegram.network.autoSelectFamily` : remplace `autoSelectFamily` de Node (`true`=activer, `false`=désactiver). Activé par défaut sur Node 22+, avec WSL2 désactivé par défaut.
- `channels.telegram.network.dnsResultOrder` : remplace lordre des résultats DNS (`ipv4first` ou `verbatim`). `ipv4first` par défaut sur Node 22+.
- `channels.telegram.network.dangerouslyAllowPrivateNetwork` : opt-in dangereux pour les environnements de fausse IP ou de proxy transparent de confiance où les téléchargements de médias Telegram résolvent `api.telegram.org` vers des adresses privées/internes/à usage spécial hors de lautorisation par défaut de la plage de benchmark RFC 2544.
- `channels.telegram.proxy` : URL de proxy pour les appels Bot API (SOCKS/HTTP).
- `channels.telegram.streaming` : `off | partial | block | progress` (aperçu de flux en direct ; par défaut : `partial` ; `progress` correspond à `partial` ; `block` est une compatibilité avec lancien mode daperçu). Laperçu de flux Telegram utilise un seul message daperçu modifié sur place.
- `channels.telegram.streaming.preview.toolProgress` : réutilise le message daperçu en direct pour les mises à jour doutil/progression lorsque laperçu de flux est actif (par défaut : `true`). Définissez `false` pour conserver des messages doutil/progression séparés.
- `channels.telegram.mediaMaxMb` : limite des médias Telegram entrants/sortants (Mo, par défaut : 100).
- `channels.telegram.retry` : politique de nouvelle tentative pour les aides denvoi Telegram (CLI/outils/actions) lors derreurs récupérables de lAPI sortante (`attempts`, `minDelayMs`, `maxDelayMs`, `jitter`).
- `channels.telegram.network.autoSelectFamily` : remplace Node autoSelectFamily (true=activé, false=désactivé). Activé par défaut sur Node 22+, avec WSL2 désactivé par défaut.
- `channels.telegram.network.dnsResultOrder` : remplace lordre des résultats DNS (`ipv4first` ou `verbatim`). Par défaut : `ipv4first` sur Node 22+.
- `channels.telegram.network.dangerouslyAllowPrivateNetwork` : activation dangereuse pour les environnements de fausse IP de confiance ou de proxy transparent où les téléchargements de médias Telegram résolvent `api.telegram.org` vers des adresses privées/internes/à usage spécial en dehors de la plage de benchmark RFC 2544 autorisée par défaut.
- `channels.telegram.proxy` : URL de proxy pour les appels à lAPI Bot (SOCKS/HTTP).
- `channels.telegram.webhookUrl` : active le mode Webhook (nécessite `channels.telegram.webhookSecret`).
- `channels.telegram.webhookSecret` : secret Webhook (obligatoire lorsque `webhookUrl` est défini).
- `channels.telegram.webhookPath` : chemin local du Webhook (par défaut `/telegram-webhook`).
- `channels.telegram.webhookHost` : hôte de liaison local du Webhook (par défaut `127.0.0.1`).
- `channels.telegram.webhookPort` : port de liaison local du Webhook (par défaut `8787`).
- `channels.telegram.actions.reactions` : limite les réactions de loutil Telegram.
- `channels.telegram.actions.sendMessage` : limite les envois de message de loutil Telegram.
- `channels.telegram.actions.deleteMessage` : limite les suppressions de message de loutil Telegram.
- `channels.telegram.actions.sticker` : limite les actions de sticker Telegram — envoi et recherche (par défaut : false).
- `channels.telegram.webhookSecret` : secret Webhook (requis lorsque webhookUrl est défini).
- `channels.telegram.webhookPath` : chemin local Webhook (par défaut `/telegram-webhook`).
- `channels.telegram.webhookHost` : hôte local de liaison Webhook (par défaut `127.0.0.1`).
- `channels.telegram.webhookPort` : port local de liaison Webhook (par défaut `8787`).
- `channels.telegram.actions.reactions` : restreint les réactions doutil Telegram.
- `channels.telegram.actions.sendMessage` : restreint les envois de messages doutil Telegram.
- `channels.telegram.actions.deleteMessage` : restreint les suppressions de messages doutil Telegram.
- `channels.telegram.actions.sticker` : restreint les actions de sticker Telegram — envoi et recherche (par défaut : false).
- `channels.telegram.reactionNotifications` : `off | own | all` — contrôle quelles réactions déclenchent des événements système (par défaut : `own` si non défini).
- `channels.telegram.reactionLevel` : `off | ack | minimal | extensive` — contrôle la capacité de réaction de lagent (par défaut : `minimal` si non défini).
- `channels.telegram.errorPolicy` : `reply | silent` — contrôle le comportement des réponses derreur (par défaut : `reply`). Surcharges par compte/groupe/sujet prises en charge.
- `channels.telegram.errorCooldownMs` : minimum en ms entre les réponses derreur au même chat (par défaut : `60000`). Évite le spam derreurs pendant les pannes.
- `channels.telegram.errorCooldownMs` : nombre minimal de ms entre deux réponses derreur dans le même chat (par défaut : `60000`). Empêche le spam derreurs pendant les pannes.
- [Référence de configuration - Telegram](/fr/gateway/configuration-reference#telegram)
@ -1063,8 +1064,8 @@ Champs Telegram spécifiques à fort signal :
- approbations exec : `execApprovals`, `accounts.*.execApprovals`
- commande/menu : `commands.native`, `commands.nativeSkills`, `customCommands`
- fils/réponses : `replyToMode`
- streaming : `streaming` (aperçu), `blockStreaming`
- mise en forme/livraison : `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix`
- flux : `streaming` (aperçu), `streaming.preview.toolProgress`, `blockStreaming`
- formatage/livraison : `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix`
- média/réseau : `mediaMaxMb`, `timeoutSeconds`, `pollingStallThresholdMs`, `retry`, `network.autoSelectFamily`, `network.dangerouslyAllowPrivateNetwork`, `proxy`
- Webhook : `webhookUrl`, `webhookSecret`, `webhookPath`, `webhookHost`
- actions/capacités : `capabilities.inlineButtons`, `actions.sendMessage|editMessage|deleteMessage|reactions|sticker`
@ -1078,5 +1079,5 @@ Champs Telegram spécifiques à fort signal :
- [Groupes](/fr/channels/groups)
- [Sécurité](/fr/gateway/security)
- [Routage des canaux](/fr/channels/channel-routing)
- [Routage multi-agents](/fr/concepts/multi-agent)
- [Routage multi-agent](/fr/concepts/multi-agent)
- [Dépannage](/fr/channels/troubleshooting)

View File

@ -1,108 +1,144 @@
---
read_when:
- Exécution de plusieurs passerelles sur la même machine
- Vous avez besoin dune config/dun état/de ports isolés par passerelle
summary: Exécuter plusieurs passerelles OpenClaw sur un même hôte (isolation, ports et profils)
title: Passerelles multiples
- Exécution de plusieurs Gateway sur la même machine
- Vous avez besoin dune configuration, dun état et de ports isolés pour chaque Gateway
summary: Exécuter plusieurs Gateway OpenClaw sur un même hôte (isolation, ports et profils)
title: Plusieurs Gateway
x-i18n:
generated_at: "2026-04-05T12:42:19Z"
generated_at: "2026-04-21T17:45:42Z"
model: gpt-5.4
provider: openai
source_hash: 061f204bf56b28c6bd0e2c9aee6c561a8a162ca219060117fea4d3a007f01899
source_hash: 8c3fcb921bc6596040e9249467964bd9dcd40ea7c16e958bb378247b0f994a7b
source_path: gateway/multiple-gateways.md
workflow: 15
---
# Passerelles multiples (même hôte)
# Plusieurs Gateway (même hôte)
La plupart des configurations devraient utiliser une seule passerelle, car une seule passerelle peut gérer plusieurs connexions de messagerie et agents. Si vous avez besoin dune isolation ou dune redondance plus forte (par ex. un bot de secours), exécutez des passerelles distinctes avec des profils/ports isolés.
La plupart des configurations devraient utiliser un seul Gateway, car un Gateway unique peut gérer plusieurs connexions de messagerie et agents. Si vous avez besoin dune isolation plus forte ou de redondance (par exemple, un bot de secours), exécutez des Gateway distincts avec des profils et des ports isolés.
## Checklist disolation (obligatoire)
## Liste de contrôle disolation (obligatoire)
- `OPENCLAW_CONFIG_PATH` — fichier de configuration par instance
- `OPENCLAW_STATE_DIR` — sessions, identifiants, caches par instance
- `agents.defaults.workspace` — racine de workspace par instance
- `OPENCLAW_STATE_DIR` — sessions, identifiants et caches par instance
- `agents.defaults.workspace` — racine despace de travail par instance
- `gateway.port` (ou `--port`) — unique par instance
- Les ports dérivés (browser/canvas) ne doivent pas se chevaucher
Si ces éléments sont partagés, vous rencontrerez des courses de configuration et des conflits de port.
Si ces éléments sont partagés, vous rencontrerez des conflits de configuration et de ports.
## Recommandé : profils (`--profile`)
## Recommandé : utilisez le profil par défaut pour le principal, un profil nommé pour le secours
Les profils limitent automatiquement `OPENCLAW_STATE_DIR` + `OPENCLAW_CONFIG_PATH` et suffixent les noms de service.
Les profils appliquent automatiquement un périmètre à `OPENCLAW_STATE_DIR` + `OPENCLAW_CONFIG_PATH` et ajoutent un suffixe aux noms de service. Pour
la plupart des configurations de bot de secours, gardez le bot principal sur le profil par défaut et attribuez uniquement
au bot de secours un profil nommé tel que `rescue`.
```bash
# principal
openclaw --profile main setup
openclaw --profile main gateway --port 18789
# principal (profil par défaut)
openclaw setup
openclaw gateway --port 18789
# secours
openclaw --profile rescue setup
openclaw --profile rescue gateway --port 19001
```
Services par profil :
Services :
```bash
openclaw --profile main gateway install
openclaw gateway install
openclaw --profile rescue gateway install
```
Si vous souhaitez que les deux Gateway utilisent des profils nommés, cela fonctionne aussi, mais ce nest pas
obligatoire.
## Guide du bot de secours
Exécutez une seconde passerelle sur le même hôte avec ses propres :
Configuration recommandée :
- profil/configuration
- répertoire détat
- workspace
- port de base (plus les ports dérivés)
- gardez le bot principal sur le profil par défaut
- exécutez le bot de secours avec `--profile rescue`
- utilisez un bot Telegram complètement distinct pour le compte de secours
- gardez le bot de secours sur un port de base différent, par exemple `19001`
Cela maintient le bot de secours isolé du bot principal afin quil puisse déboguer ou appliquer des changements de configuration si le bot principal est hors service.
Cela permet disoler le bot de secours du bot principal afin quil puisse déboguer ou appliquer
des modifications de configuration si le bot principal est indisponible. Laissez au moins 20 ports entre les
ports de base afin que les ports dérivés browser/canvas/CDP nentrent jamais en collision.
Espacement des ports : laissez au moins 20 ports entre les ports de base afin que les ports dérivés browser/canvas/CDP nentrent jamais en collision.
### Canal/compte de secours recommandé
### Comment installer (bot de secours)
Pour la plupart des configurations, utilisez un bot Telegram complètement distinct pour le profil de secours.
Pourquoi Telegram :
- facile à réserver aux opérateurs uniquement
- jeton de bot et identité distincts
- indépendant de linstallation du canal/de lapplication du bot principal
- chemin de récupération simple basé sur les messages privés lorsque le bot principal est défaillant
Lélément important est lindépendance complète : compte de bot distinct, identifiants distincts, profil OpenClaw distinct, espace de travail distinct et port distinct.
### Flux dinstallation recommandé
Utilisez ceci comme configuration par défaut, sauf si vous avez une raison solide de faire autrement :
```bash
# Bot principal (existant ou nouveau, sans paramètre --profile)
# Sexécute sur le port 18789 + ports Chrome CDC/Canvas/...
# Bot principal (profil par défaut, port 18789)
openclaw onboard
openclaw gateway install
# Bot de secours (profil + ports isolés)
# Bot de secours (bot Telegram distinct, profil distinct, port 19001)
openclaw --profile rescue onboard
# Remarques :
# - le nom du workspace recevra par défaut le suffixe -rescue
# - le port doit être au moins 18789 + 20 ports,
# il est préférable de choisir un port de base complètement différent, comme 19789,
# - le reste de lintégration guidée est identique à la normale
# Pour installer le service (si cela na pas eu lieu automatiquement pendant la configuration)
openclaw --profile rescue gateway install
```
Pendant `openclaw --profile rescue onboard` :
- utilisez le jeton du bot Telegram distinct
- conservez le profil `rescue`
- utilisez un port de base au moins 20 plus élevé que celui du bot principal
- acceptez lespace de travail de secours par défaut, sauf si vous en gérez déjà un vous-même
Si lonboarding a déjà installé le service de secours pour vous, le
`gateway install` final nest pas nécessaire.
### Ce que lonboarding modifie
`openclaw --profile rescue onboard` utilise le flux donboarding normal, mais
écrit tout dans un profil distinct.
En pratique, cela signifie que le bot de secours obtient son propre :
- fichier de configuration
- répertoire détat
- espace de travail (par défaut `~/.openclaw/workspace-rescue`)
- nom de service géré
Les invites sont par ailleurs les mêmes que pour un onboarding normal.
## Mappage des ports (dérivés)
Port de base = `gateway.port` (ou `OPENCLAW_GATEWAY_PORT` / `--port`).
- port du service de contrôle browser = base + 2 (loopback uniquement)
- lhôte canvas est servi sur le serveur HTTP de la passerelle (même port que `gateway.port`)
- les ports CDP des profils browser sont alloués automatiquement depuis `browser.controlPort + 9 .. + 108`
- port du service de contrôle du browser = base + 2 (loopback uniquement)
- lhôte canvas est servi sur le serveur HTTP Gateway (même port que `gateway.port`)
- les ports CDP du profil Browser sont alloués automatiquement à partir de `browser.controlPort + 9 .. + 108`
Si vous remplacez lun de ces paramètres dans la config ou lenvironnement, vous devez les garder uniques par instance.
Si vous remplacez lun de ces paramètres dans la configuration ou lenvironnement, vous devez les garder uniques par instance.
## Remarques sur Browser/CDP (piège courant)
## Notes browser/CDP (piège fréquent)
- **Ne fixez pas** `browser.cdpUrl` aux mêmes valeurs sur plusieurs instances.
- Chaque instance a besoin de son propre port de contrôle browser et de sa propre plage CDP (dérivés de son port de passerelle).
- **Népinglez pas** `browser.cdpUrl` aux mêmes valeurs sur plusieurs instances.
- Chaque instance a besoin de son propre port de contrôle browser et de sa propre plage CDP (dérivée de son port Gateway).
- Si vous avez besoin de ports CDP explicites, définissez `browser.profiles.<name>.cdpPort` par instance.
- Chrome distant : utilisez `browser.profiles.<name>.cdpUrl` (par profil, par instance).
## Exemple manuel avec env
## Exemple manuel avec variables denvironnement
```bash
OPENCLAW_CONFIG_PATH=~/.openclaw/main.json \
OPENCLAW_STATE_DIR=~/.openclaw-main \
OPENCLAW_STATE_DIR=~/.openclaw \
openclaw gateway --port 18789
OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \
@ -113,15 +149,15 @@ openclaw gateway --port 19001
## Vérifications rapides
```bash
openclaw --profile main gateway status --deep
openclaw gateway status --deep
openclaw --profile rescue gateway status --deep
openclaw --profile rescue gateway probe
openclaw --profile main status
openclaw status
openclaw --profile rescue status
openclaw --profile rescue browser status
```
Interprétation :
- `gateway status --deep` aide à détecter les services launchd/systemd/schtasks obsolètes issus dinstallations plus anciennes.
- Un texte davertissement de `gateway probe` tel que `multiple reachable gateways detected` nest attendu que lorsque vous exécutez intentionnellement plusieurs passerelles isolées.
- `gateway status --deep` aide à détecter les services launchd/systemd/schtasks obsolètes issus danciennes installations.
- Le texte davertissement de `gateway probe`, tel que `multiple reachable gateways detected`, nest attendu que lorsque vous exécutez intentionnellement plus dun gateway isolé.

View File

@ -1,36 +1,36 @@
---
read_when:
- Utiliser ou configurer les commandes de chat
- Débogage du routage des commandes ou des autorisations
summary: 'Commandes slash : texte vs natives, configuration et commandes prises en charge'
- Déboguer le routage des commandes ou les autorisations
summary: 'Commandes slash : texte ou natives, configuration et commandes prises en charge'
title: Commandes slash
x-i18n:
generated_at: "2026-04-21T13:36:58Z"
generated_at: "2026-04-21T17:45:42Z"
model: gpt-5.4
provider: openai
source_hash: d90ddee54af7c05b7fdf486590561084581d750e42cd14674d43bbdc0984df5d
source_hash: 26923608329ba2aeece2d4bc8edfa40ae86e03719a9f590f26ff79f57d97521d
source_path: tools/slash-commands.md
workflow: 15
---
# Commandes slash
Les commandes sont gérées par la Gateway. La plupart des commandes doivent être envoyées comme un message **autonome** commençant par `/`.
Les commandes sont gérées par la Gateway. La plupart des commandes doivent être envoyées comme un message **autonome** qui commence par `/`.
La commande de chat bash réservée à lhôte utilise `! <cmd>` (avec `/bash <cmd>` comme alias).
Il existe deux systèmes liés :
Il existe deux systèmes liés :
- **Commandes** : messages autonomes `/...`.
- **Directives** : `/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
- **Commandes** : messages autonomes `/...`.
- **Directives** : `/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
- Les directives sont retirées du message avant que le modèle ne le voie.
- Dans les messages de chat normaux (pas uniquement composés de directives), elles sont traitées comme des « indications inline » et ne persistent **pas** les paramètres de session.
- Dans les messages de chat normaux (pas uniquement des directives), elles sont traitées comme des « indications en ligne » et ne rendent **pas** persistants les paramètres de session.
- Dans les messages composés uniquement de directives (le message ne contient que des directives), elles persistent dans la session et répondent avec un accusé de réception.
- Les directives ne sont appliquées que pour les **expéditeurs autorisés**. Si `commands.allowFrom` est défini, cest la seule
liste dautorisation utilisée ; sinon, lautorisation provient des listes dautorisation/appairages du canal plus `commands.useAccessGroups`.
liste dautorisation utilisée ; sinon, lautorisation provient des listes dautorisation/dassociation du canal ainsi que de `commands.useAccessGroups`.
Les expéditeurs non autorisés voient les directives traitées comme du texte brut.
Il existe aussi quelques **raccourcis inline** (expéditeurs autorisés/listés uniquement) : `/help`, `/commands`, `/status`, `/whoami` (`/id`).
Ils sexécutent immédiatement, sont retirés avant que le modèle ne voie le message, et le texte restant continue dans le flux normal.
Il existe aussi quelques **raccourcis en ligne** (expéditeurs autorisés/sur liste dautorisation uniquement) : `/help`, `/commands`, `/status`, `/whoami` (`/id`).
Ils sexécutent immédiatement, sont retirés avant que le modèle ne voie le message, et le texte restant suit le flux normal.
## Configuration
@ -60,107 +60,109 @@ Ils sexécutent immédiatement, sont retirés avant que le modèle ne voie le
```
- `commands.text` (par défaut `true`) active lanalyse de `/...` dans les messages de chat.
- Sur les surfaces sans commandes natives (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams), les commandes texte continuent de fonctionner même si vous définissez cette valeur sur `false`.
- Sur les surfaces sans commandes natives (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams), les commandes textuelles fonctionnent quand même, même si vous définissez cette option sur `false`.
- `commands.native` (par défaut `"auto"`) enregistre les commandes natives.
- Auto : activé pour Discord/Telegram ; désactivé pour Slack (jusquà ce que vous ajoutiez des commandes slash) ; ignoré pour les fournisseurs sans prise en charge native.
- Définissez `channels.discord.commands.native`, `channels.telegram.commands.native` ou `channels.slack.commands.native` pour remplacer par fournisseur (booléen ou `"auto"`).
- Auto : activé pour Discord/Telegram ; désactivé pour Slack (jusquà ce que vous ajoutiez des commandes slash) ; ignoré pour les fournisseurs sans prise en charge native.
- Définissez `channels.discord.commands.native`, `channels.telegram.commands.native` ou `channels.slack.commands.native` pour remplacer le comportement par fournisseur (booléen ou `"auto"`).
- `false` efface les commandes précédemment enregistrées sur Discord/Telegram au démarrage. Les commandes Slack sont gérées dans lapplication Slack et ne sont pas supprimées automatiquement.
- `commands.nativeSkills` (par défaut `"auto"`) enregistre les commandes de **Skills** nativement lorsquelles sont prises en charge.
- Auto : activé pour Discord/Telegram ; désactivé pour Slack (Slack exige la création dune commande slash par Skill).
- Définissez `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` ou `channels.slack.commands.nativeSkills` pour remplacer par fournisseur (booléen ou `"auto"`).
- `commands.bash` (par défaut `false`) active `! <cmd>` pour exécuter des commandes shell de lhôte (`/bash <cmd>` est un alias ; nécessite les listes dautorisation `tools.elevated`).
- `commands.bashForegroundMs` (par défaut `2000`) contrôle combien de temps bash attend avant de passer en mode arrière-plan (`0` le place immédiatement en arrière-plan).
- `commands.config` (par défaut `false`) active `/config` (lecture/écriture de `openclaw.json`).
- `commands.mcp` (par défaut `false`) active `/mcp` (lecture/écriture de la configuration MCP gérée par OpenClaw sous `mcp.servers`).
- `commands.plugins` (par défaut `false`) active `/plugins` (découverte/statut des plugins plus installation et contrôles dactivation/désactivation).
- `commands.debug` (par défaut `false`) active `/debug` (remplacements en exécution uniquement).
- `commands.restart` (par défaut `true`) active `/restart` ainsi que les actions doutil de redémarrage de la Gateway.
- `commands.ownerAllowFrom` (facultatif) définit la liste dautorisation explicite du propriétaire pour les surfaces de commandes/outils réservées au propriétaire. Elle est distincte de `commands.allowFrom`.
- `commands.ownerDisplay` contrôle la manière dont les identifiants du propriétaire apparaissent dans le prompt système : `raw` ou `hash`.
- `commands.ownerDisplaySecret` définit facultativement le secret HMAC utilisé lorsque `commands.ownerDisplay="hash"`.
- `commands.nativeSkills` (par défaut `"auto"`) enregistre les commandes de **Skills** de manière native lorsque cest pris en charge.
- Auto : activé pour Discord/Telegram ; désactivé pour Slack (Slack exige la création dune commande slash par skill).
- Définissez `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` ou `channels.slack.commands.nativeSkills` pour remplacer le comportement par fournisseur (booléen ou `"auto"`).
- `commands.bash` (par défaut `false`) active `! <cmd>` pour exécuter des commandes shell sur lhôte (`/bash <cmd>` est un alias ; nécessite les listes dautorisation `tools.elevated`).
- `commands.bashForegroundMs` (par défaut `2000`) contrôle combien de temps bash attend avant de passer en mode arrière-plan (`0` envoie immédiatement en arrière-plan).
- `commands.config` (par défaut `false`) active `/config` (lit/écrit `openclaw.json`).
- `commands.mcp` (par défaut `false`) active `/mcp` (lit/écrit la configuration MCP gérée par OpenClaw sous `mcp.servers`).
- `commands.plugins` (par défaut `false`) active `/plugins` (découverte/état des plugins ainsi que contrôles dinstallation + activation/désactivation).
- `commands.debug` (par défaut `false`) active `/debug` (remplacements réservés à lexécution).
- `commands.restart` (par défaut `true`) active `/restart` ainsi que les actions doutil de redémarrage de la gateway.
- `commands.ownerAllowFrom` (facultatif) définit la liste dautorisation explicite du propriétaire pour les surfaces de commande/doutil réservées au propriétaire. Elle est distincte de `commands.allowFrom`.
- `commands.ownerDisplay` contrôle la façon dont les ID propriétaire apparaissent dans le prompt système : `raw` ou `hash`.
- `commands.ownerDisplaySecret` définit éventuellement le secret HMAC utilisé lorsque `commands.ownerDisplay="hash"`.
- `commands.allowFrom` (facultatif) définit une liste dautorisation par fournisseur pour lautorisation des commandes. Lorsquelle est configurée, cest la
seule source dautorisation pour les commandes et directives (`commands.useAccessGroups` ainsi que les listes dautorisation/appairages du canal sont ignorés). Utilisez `"*"` pour une valeur globale par défaut ; les clés spécifiques à un fournisseur remplacent cette valeur.
- `commands.useAccessGroups` (par défaut `true`) applique les listes dautorisation/politiques pour les commandes lorsque `commands.allowFrom` nest pas défini.
seule source dautorisation pour les commandes et directives (`commands.useAccessGroups` ainsi que les listes dautorisation/lassociation du canal
sont ignorés). Utilisez `"*"` comme valeur globale par défaut ; les clés spécifiques à un fournisseur la remplacent.
- `commands.useAccessGroups` (par défaut `true`) applique les listes dautorisation/politiques aux commandes lorsque `commands.allowFrom` nest pas défini.
## Liste des commandes
Source de vérité actuelle :
Source de référence actuelle :
- les intégrées core proviennent de `src/auto-reply/commands-registry.shared.ts`
- les commandes intégrées du cœur proviennent de `src/auto-reply/commands-registry.shared.ts`
- les commandes dock générées proviennent de `src/auto-reply/commands-registry.data.ts`
- les commandes de plugin proviennent des appels plugin `registerCommand()`
- la disponibilité réelle sur votre Gateway dépend toujours des drapeaux de configuration, de la surface du canal et des plugins installés/activés
- les commandes de plugin proviennent des appels `registerCommand()` des plugins
- la disponibilité réelle sur votre gateway dépend toujours des indicateurs de configuration, de la surface du canal et des plugins installés/activés
### Commandes intégrées core
### Commandes intégrées du cœur
Commandes intégrées disponibles aujourdhui :
Commandes intégrées disponibles aujourdhui :
- `/new [model]` démarre une nouvelle session ; `/reset` est lalias de réinitialisation.
- `/new [model]` démarre une nouvelle session ; `/reset` est lalias de réinitialisation.
- `/reset soft [message]` conserve la transcription actuelle, supprime les ID de session backend CLI réutilisés et relance en place le chargement du démarrage/du prompt système.
- `/compact [instructions]` compacte le contexte de session. Voir [/concepts/compaction](/fr/concepts/compaction).
- `/stop` interrompt lexécution en cours.
- `/session idle <duration|off>` et `/session max-age <duration|off>` gèrent lexpiration de liaison au fil.
- `/think <level>` définit le niveau de réflexion. Les options proviennent du profil fournisseur du modèle actif ; les niveaux courants sont `off`, `minimal`, `low`, `medium` et `high`, avec des niveaux personnalisés tels que `xhigh`, `adaptive`, `max`, ou le binaire `on` uniquement lorsquils sont pris en charge. Alias : `/thinking`, `/t`.
- `/verbose on|off|full` active/désactive la sortie détaillée. Alias : `/v`.
- `/trace on|off` active/désactive la sortie de trace Plugin pour la session en cours.
- `/session idle <duration|off>` et `/session max-age <duration|off>` gèrent lexpiration de la liaison de fil.
- `/think <level>` définit le niveau de réflexion. Les options proviennent du profil fournisseur du modèle actif ; les niveaux courants sont `off`, `minimal`, `low`, `medium` et `high`, avec des niveaux personnalisés comme `xhigh`, `adaptive`, `max`, ou le mode binaire `on` uniquement lorsquils sont pris en charge. Alias : `/thinking`, `/t`.
- `/verbose on|off|full` active ou désactive la sortie verbeuse. Alias : `/v`.
- `/trace on|off` active ou désactive la sortie de trace des plugins pour la session actuelle.
- `/fast [status|on|off]` affiche ou définit le mode rapide.
- `/reasoning [on|off|stream]` active/désactive la visibilité du raisonnement. Alias : `/reason`.
- `/elevated [on|off|ask|full]` active/désactive le mode elevated. Alias : `/elev`.
- `/reasoning [on|off|stream]` active ou désactive la visibilité du raisonnement. Alias : `/reason`.
- `/elevated [on|off|ask|full]` active ou désactive le mode élevé. Alias : `/elev`.
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` affiche ou définit les valeurs par défaut dexécution.
- `/model [name|#|status]` affiche ou définit le modèle.
- `/models [provider] [page] [limit=<n>|size=<n>|all]` liste les fournisseurs ou les modèles dun fournisseur.
- `/queue <mode>` gère le comportement de la file (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) plus des options comme `debounce:2s cap:25 drop:summarize`.
- `/queue <mode>` gère le comportement de la file (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) ainsi que des options comme `debounce:2s cap:25 drop:summarize`.
- `/help` affiche le résumé daide court.
- `/commands` affiche le catalogue de commandes généré.
- `/tools [compact|verbose]` affiche ce que lagent actuel peut utiliser maintenant.
- `/status` affiche létat dexécution, y compris lusage/quota du fournisseur lorsquil est disponible.
- `/tasks` liste les tâches darrière-plan actives/récentes pour la session en cours.
- `/status` affiche létat dexécution, y compris lutilisation/le quota du fournisseur lorsquils sont disponibles.
- `/tasks` liste les tâches darrière-plan actives/récentes pour la session actuelle.
- `/context [list|detail|json]` explique comment le contexte est assemblé.
- `/export-session [path]` exporte la session en cours au format HTML. Alias : `/export`.
- `/whoami` affiche votre identifiant dexpéditeur. Alias : `/id`.
- `/skill <name> [input]` exécute une Skill par son nom.
- `/export-session [path]` exporte la session actuelle en HTML. Alias : `/export`.
- `/whoami` affiche votre ID expéditeur. Alias : `/id`.
- `/skill <name> [input]` exécute un skill par son nom.
- `/allowlist [list|add|remove] ...` gère les entrées de la liste dautorisation. Texte uniquement.
- `/approve <id> <decision>` résout les demandes dapprobation dexécution.
- `/btw <question>` pose une question latérale sans modifier le contexte futur de la session. Voir [/tools/btw](/fr/tools/btw).
- `/subagents list|kill|log|info|send|steer|spawn` gère les exécutions de sous-agents pour la session en cours.
- `/approve <id> <decision>` résout les invites dapprobation dexécution.
- `/btw <question>` pose une question annexe sans modifier le contexte futur de la session. Voir [/tools/btw](/fr/tools/btw).
- `/subagents list|kill|log|info|send|steer|spawn` gère les exécutions de sous-agents pour la session actuelle.
- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` gère les sessions ACP et les options dexécution.
- `/focus <target>` lie le fil Discord ou le topic/conversation Telegram actuel à une cible de session.
- `/focus <target>` lie le fil Discord actuel ou le sujet/conversation Telegram à une cible de session.
- `/unfocus` supprime la liaison actuelle.
- `/agents` liste les agents liés à un fil pour la session en cours.
- `/kill <id|#|all>` interrompt un ou tous les sous-agents en cours.
- `/steer <id|#> <message>` envoie un pilotage à un sous-agent en cours. Alias : `/tell`.
- `/agents` liste les agents liés au fil pour la session actuelle.
- `/kill <id|#|all>` interrompt un ou tous les sous-agents en cours dexécution.
- `/steer <id|#> <message>` envoie une instruction à un sous-agent en cours dexécution. Alias : `/tell`.
- `/config show|get|set|unset` lit ou écrit `openclaw.json`. Réservé au propriétaire. Nécessite `commands.config: true`.
- `/mcp show|get|set|unset` lit ou écrit la configuration de serveur MCP gérée par OpenClaw sous `mcp.servers`. Réservé au propriétaire. Nécessite `commands.mcp: true`.
- `/mcp show|get|set|unset` lit ou écrit la configuration du serveur MCP gérée par OpenClaw sous `mcp.servers`. Réservé au propriétaire. Nécessite `commands.mcp: true`.
- `/plugins list|inspect|show|get|install|enable|disable` inspecte ou modifie létat des plugins. `/plugin` est un alias. Écriture réservée au propriétaire. Nécessite `commands.plugins: true`.
- `/debug show|set|unset|reset` gère les remplacements de configuration en exécution uniquement. Réservé au propriétaire. Nécessite `commands.debug: true`.
- `/usage off|tokens|full|cost` contrôle le pied de page dusage par réponse ou affiche un résumé local des coûts.
- `/debug show|set|unset|reset` gère les remplacements de configuration réservés à lexécution. Réservé au propriétaire. Nécessite `commands.debug: true`.
- `/usage off|tokens|full|cost` contrôle le pied de page dutilisation par réponse ou affiche un résumé local des coûts.
- `/tts on|off|status|provider|limit|summary|audio|help` contrôle le TTS. Voir [/tools/tts](/fr/tools/tts).
- `/restart` redémarre OpenClaw lorsquil est activé. Par défaut : activé ; définissez `commands.restart: false` pour le désactiver.
- `/restart` redémarre OpenClaw lorsque cette commande est activée. Par défaut : activée ; définissez `commands.restart: false` pour la désactiver.
- `/activation mention|always` définit le mode dactivation de groupe.
- `/send on|off|inherit` définit la politique denvoi. Réservé au propriétaire.
- `/bash <command>` exécute une commande shell sur lhôte. Texte uniquement. Alias : `! <command>`. Nécessite `commands.bash: true` plus les listes dautorisation `tools.elevated`.
- `!poll [sessionId]` vérifie un travail bash en arrière-plan.
- `!stop [sessionId]` arrête un travail bash en arrière-plan.
- `/bash <command>` exécute une commande shell sur lhôte. Texte uniquement. Alias : `! <command>`. Nécessite `commands.bash: true` ainsi que les listes dautorisation `tools.elevated`.
- `!poll [sessionId]` vérifie un job bash en arrière-plan.
- `!stop [sessionId]` arrête un job bash en arrière-plan.
### Commandes dock générées
Les commandes dock sont générées à partir des plugins de canal avec prise en charge des commandes natives. Ensemble intégré actuel :
Les commandes dock sont générées à partir de plugins de canal prenant en charge les commandes natives. Ensemble intégré actuel :
- `/dock-discord` (alias : `/dock_discord`)
- `/dock-mattermost` (alias : `/dock_mattermost`)
- `/dock-slack` (alias : `/dock_slack`)
- `/dock-telegram` (alias : `/dock_telegram`)
- `/dock-discord` (alias : `/dock_discord`)
- `/dock-mattermost` (alias : `/dock_mattermost`)
- `/dock-slack` (alias : `/dock_slack`)
- `/dock-telegram` (alias : `/dock_telegram`)
### Commandes des plugins intégrés
### Commandes de plugins intégrés
Les plugins intégrés peuvent ajouter dautres commandes slash. Commandes intégrées actuelles dans ce dépôt :
Les plugins intégrés peuvent ajouter dautres commandes slash. Commandes intégrées actuelles dans ce dépôt :
- `/dreaming [on|off|status|help]` active/désactive Dreaming de la mémoire. Voir [Dreaming](/fr/concepts/dreaming).
- `/pair [qr|status|pending|approve|cleanup|notify]` gère le flux dappairage/configuration de lappareil. Voir [Appairage](/fr/channels/pairing).
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` arme temporairement les commandes de Node de téléphone à haut risque.
- `/dreaming [on|off|status|help]` active ou désactive Dreaming de mémoire. Voir [Dreaming](/fr/concepts/dreaming).
- `/pair [qr|status|pending|approve|cleanup|notify]` gère le flux dassociation/de configuration dappareil. Voir [Pairing](/fr/channels/pairing).
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` arme temporairement les commandes de nœud téléphonique à haut risque.
- `/voice status|list [limit]|set <voiceId|name>` gère la configuration de voix Talk. Sur Discord, le nom de la commande native est `/talkvoice`.
- `/card ...` envoie des préréglages de carte enrichie LINE. Voir [LINE](/fr/channels/line).
- `/codex status|models|threads|resume|compact|review|account|mcp|skills` inspecte et contrôle le harnais app-server Codex intégré. Voir [Harnais Codex](/fr/plugins/codex-harness).
- Commandes réservées à QQBot :
- `/codex status|models|threads|resume|compact|review|account|mcp|skills` inspecte et contrôle le harnais app-server Codex intégré. Voir [Codex Harness](/fr/plugins/codex-harness).
- Commandes réservées à QQBot :
- `/bot-ping`
- `/bot-version`
- `/bot-help`
@ -169,77 +171,76 @@ Les plugins intégrés peuvent ajouter dautres commandes slash. Commandes int
### Commandes de Skills dynamiques
Les Skills invocables par lutilisateur sont également exposées comme commandes slash :
Les Skills invocables par lutilisateur sont également exposées comme commandes slash :
- `/skill <name> [input]` fonctionne toujours comme point dentrée générique.
- les Skills peuvent aussi apparaître comme commandes directes telles que `/prose` lorsque la Skill/le plugin les enregistre.
- les skills peuvent aussi apparaître comme commandes directes telles que `/prose` lorsque le skill/plugin les enregistre.
- lenregistrement natif des commandes de Skills est contrôlé par `commands.nativeSkills` et `channels.<provider>.commands.nativeSkills`.
Remarques :
Remarques :
- Les commandes acceptent un `:` facultatif entre la commande et les arguments (par ex. `/think: high`, `/send: on`, `/help:`).
- `/new <model>` accepte un alias de modèle, `provider/model` ou un nom de fournisseur (correspondance approximative) ; sans correspondance, le texte est traité comme corps du message.
- Pour le détail complet de lusage par fournisseur, utilisez `openclaw status --usage`.
- Les commandes acceptent un `:` facultatif entre la commande et les arguments (par exemple `/think: high`, `/send: on`, `/help:`).
- `/new <model>` accepte un alias de modèle, `provider/model`, ou un nom de fournisseur (correspondance approximative) ; sil ny a aucune correspondance, le texte est traité comme corps du message.
- Pour le détail complet de lutilisation par fournisseur, utilisez `openclaw status --usage`.
- `/allowlist add|remove` nécessite `commands.config=true` et respecte `configWrites` du canal.
- Dans les canaux multi-comptes, `/allowlist --account <id>` ciblé configuration et `/config set channels.<provider>.accounts.<id>...` respectent aussi `configWrites` du compte cible.
- `/usage` contrôle le pied de page dusage par réponse ; `/usage cost` affiche un résumé local des coûts à partir des journaux de session OpenClaw.
- `/restart` est activé par défaut ; définissez `commands.restart: false` pour le désactiver.
- `/plugins install <spec>` accepte les mêmes spécifications de plugin que `openclaw plugins install` : chemin/archive local, paquet npm ou `clawhub:<pkg>`.
- Dans les canaux à plusieurs comptes, `/allowlist --account <id>` ciblé sur la configuration et `/config set channels.<provider>.accounts.<id>...` respectent aussi `configWrites` du compte cible.
- `/usage` contrôle le pied de page dutilisation par réponse ; `/usage cost` affiche un résumé local des coûts à partir des journaux de session OpenClaw.
- `/restart` est activé par défaut ; définissez `commands.restart: false` pour le désactiver.
- `/plugins install <spec>` accepte les mêmes spécifications de plugin que `openclaw plugins install` : chemin/archive local, package npm ou `clawhub:<pkg>`.
- `/plugins enable|disable` met à jour la configuration du plugin et peut demander un redémarrage.
- Commande native réservée à Discord : `/vc join|leave|status` contrôle les canaux vocaux (nécessite `channels.discord.voice` et les commandes natives ; non disponible en texte).
- Les commandes de liaison de fil Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) nécessitent que les liaisons de fil effectives soient activées (`session.threadBindings.enabled` et/ou `channels.discord.threadBindings.enabled`).
- Référence des commandes ACP et comportement dexécution : [Agents ACP](/fr/tools/acp-agents).
- `/verbose` est destiné au débogage et à une visibilité accrue ; laissez-le **désactivé** en usage normal.
- `/trace` est plus ciblé que `/verbose` : il révèle uniquement les lignes de trace/débogage possédées par les plugins et garde désactivé le bavardage détaillé normal des outils.
- `/fast on|off` persiste un remplacement de session. Utilisez loption `inherit` de lUI Sessions pour leffacer et revenir aux valeurs par défaut de la configuration.
- `/fast` est spécifique au fournisseur : OpenAI/OpenAI Codex le mappe sur `service_tier=priority` sur les points de terminaison Responses natifs, tandis que les requêtes publiques directes Anthropic, y compris le trafic authentifié par OAuth envoyé à `api.anthropic.com`, le mappent sur `service_tier=auto` ou `standard_only`. Voir [OpenAI](/fr/providers/openai) et [Anthropic](/fr/providers/anthropic).
- Les résumés déchec doutil restent affichés lorsquils sont pertinents, mais le texte déchec détaillé nest inclus que lorsque `/verbose` est `on` ou `full`.
- `/reasoning`, `/verbose` et `/trace` sont risqués dans les contextes de groupe : ils peuvent révéler un raisonnement interne, une sortie doutil ou des diagnostics de plugin que vous naviez pas lintention dexposer. Il est préférable de les laisser désactivés, surtout dans les discussions de groupe.
- `/model` persiste immédiatement le nouveau modèle de session.
- Commande native réservée à Discord : `/vc join|leave|status` contrôle les canaux vocaux (nécessite `channels.discord.voice` et les commandes natives ; indisponible en texte).
- Les commandes de liaison de fil Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) exigent que les liaisons de fil effectives soient activées (`session.threadBindings.enabled` et/ou `channels.discord.threadBindings.enabled`).
- Référence de la commande ACP et comportement à lexécution : [ACP Agents](/fr/tools/acp-agents).
- `/verbose` est destiné au débogage et à une visibilité supplémentaire ; laissez-le **désactivé** en usage normal.
- `/trace` est plus ciblé que `/verbose` : il révèle uniquement les lignes de trace/de débogage appartenant aux plugins et laisse désactivé le bavardage verbeux normal des outils.
- `/fast on|off` rend persistant un remplacement de session. Utilisez loption `inherit` de linterface Sessions pour leffacer et revenir aux valeurs par défaut de la configuration.
- `/fast` dépend du fournisseur : OpenAI/OpenAI Codex le mappent à `service_tier=priority` sur les endpoints Responses natifs, tandis que les requêtes Anthropic publiques directes, y compris le trafic authentifié par OAuth envoyé à `api.anthropic.com`, le mappent à `service_tier=auto` ou `standard_only`. Voir [OpenAI](/fr/providers/openai) et [Anthropic](/fr/providers/anthropic).
- Les résumés déchec doutil sont toujours affichés quand cest pertinent, mais le texte détaillé de léchec nest inclus que lorsque `/verbose` est `on` ou `full`.
- `/reasoning`, `/verbose` et `/trace` sont risqués dans les contextes de groupe : ils peuvent révéler un raisonnement interne, une sortie doutil ou des diagnostics de plugin que vous naviez pas lintention dexposer. Il vaut mieux les laisser désactivés, surtout dans les discussions de groupe.
- `/model` rend immédiatement persistant le nouveau modèle de session.
- Si lagent est inactif, lexécution suivante lutilise immédiatement.
- Si une exécution est déjà active, OpenClaw marque un changement à chaud comme en attente et ne redémarre sur le nouveau modèle quà un point de reprise propre.
- Si lactivité doutil ou la sortie de réponse a déjà commencé, le changement en attente peut rester en file jusquà une opportunité de reprise ultérieure ou au tour utilisateur suivant.
- **Chemin rapide :** les messages composés uniquement de commandes provenant dexpéditeurs autorisés sont traités immédiatement (contournent file + modèle).
- **Filtrage par mention de groupe :** les messages composés uniquement de commandes provenant dexpéditeurs autorisés contournent les exigences de mention.
- **Raccourcis inline (expéditeurs autorisés uniquement) :** certaines commandes fonctionnent également lorsquelles sont intégrées dans un message normal et sont retirées avant que le modèle ne voie le texte restant.
- Exemple : `hey /status` déclenche une réponse détat, et le texte restant continue dans le flux normal.
- Actuellement : `/help`, `/commands`, `/status`, `/whoami` (`/id`).
- Les messages composés uniquement de commandes non autorisés sont ignorés silencieusement, et les jetons inline `/...` sont traités comme du texte brut.
- **Commandes de Skills :** les Skills `user-invocable` sont exposées comme commandes slash. Les noms sont normalisés en `a-z0-9_` (32 caractères max) ; les collisions reçoivent des suffixes numériques (par ex. `_2`).
- `/skill <name> [input]` exécute une Skill par son nom (utile lorsque les limites de commandes natives empêchent les commandes par Skill).
- Par défaut, les commandes de Skills sont transmises au modèle comme une requête normale.
- Les Skills peuvent facultativement déclarer `command-dispatch: tool` pour acheminer la commande directement vers un outil (déterministe, sans modèle).
- Exemple : `/prose` (plugin OpenProse) — voir [OpenProse](/fr/prose).
- **Arguments des commandes natives :** Discord utilise lautocomplétion pour les options dynamiques (et des menus à boutons lorsque vous omettez des arguments requis). Telegram et Slack affichent un menu à boutons lorsquune commande prend en charge des choix et que vous omettez largument.
- Si une exécution est déjà active, OpenClaw marque un basculement à chaud comme en attente et ne redémarre avec le nouveau modèle quà un point de nouvelle tentative propre.
- Si lactivité des outils ou la sortie de réponse a déjà commencé, le basculement en attente peut rester en file jusquà une opportunité de nouvelle tentative ultérieure ou jusquau prochain tour utilisateur.
- **Voie rapide :** les messages contenant uniquement une commande provenant dexpéditeurs sur liste dautorisation sont traités immédiatement (contournent la file + le modèle).
- **Contrôle par mention de groupe :** les messages contenant uniquement une commande provenant dexpéditeurs sur liste dautorisation contournent les exigences de mention.
- **Raccourcis en ligne (expéditeurs sur liste dautorisation uniquement) :** certaines commandes fonctionnent aussi lorsquelles sont intégrées dans un message normal et sont retirées avant que le modèle ne voie le texte restant.
- Exemple : `hey /status` déclenche une réponse de statut, et le texte restant continue dans le flux normal.
- Actuellement : `/help`, `/commands`, `/status`, `/whoami` (`/id`).
- Les messages contenant uniquement une commande et provenant dexpéditeurs non autorisés sont ignorés silencieusement, et les jetons `/...` en ligne sont traités comme du texte brut.
- **Commandes de Skills :** les skills `user-invocable` sont exposés comme commandes slash. Les noms sont assainis en `a-z0-9_` (32 caractères max) ; les collisions reçoivent des suffixes numériques (par ex. `_2`).
- `/skill <name> [input]` exécute un skill par son nom (utile lorsque les limites des commandes natives empêchent les commandes par skill).
- Par défaut, les commandes de skill sont transmises au modèle comme une requête normale.
- Les skills peuvent déclarer facultativement `command-dispatch: tool` pour router la commande directement vers un outil (déterministe, sans modèle).
- Exemple : `/prose` (plugin OpenProse) — voir [OpenProse](/fr/prose).
- **Arguments de commandes natives :** Discord utilise lautocomplétion pour les options dynamiques (et des menus à boutons lorsque vous omettez des arguments obligatoires). Telegram et Slack affichent un menu à boutons lorsquune commande prend en charge des choix et que vous omettez largument.
## `/tools`
`/tools` répond à une question dexécution, pas à une question de configuration : **ce que cet agent peut utiliser maintenant dans
`/tools` répond à une question dexécution, pas à une question de configuration : **ce que cet agent peut utiliser maintenant dans
cette conversation**.
- `/tools` par défaut est compact et optimisé pour un balayage rapide.
- Par défaut, `/tools` est compact et optimisé pour une lecture rapide.
- `/tools verbose` ajoute de courtes descriptions.
- Les surfaces à commandes natives qui prennent en charge les arguments exposent le même changement de mode que `compact|verbose`.
- Les résultats sont limités à la session, donc changer lagent, le canal, le fil, lautorisation de lexpéditeur ou le modèle peut
- Les surfaces à commandes natives qui prennent en charge les arguments exposent le même changement de mode avec `compact|verbose`.
- Les résultats sont limités à la session ; changer dagent, de canal, de fil, dautorisation dexpéditeur ou de modèle peut donc
modifier la sortie.
- `/tools` inclut les outils réellement accessibles à lexécution, y compris les outils core, les outils de plugin
connectés et les outils possédés par le canal.
- `/tools` inclut les outils réellement accessibles à lexécution, y compris les outils du cœur, les outils de plugins connectés et les outils appartenant au canal.
Pour modifier les profils et remplacements, utilisez le panneau Outils de lUI Control ou les surfaces de configuration/catalogue au lieu
Pour lédition du profil et des remplacements, utilisez le panneau Outils de linterface Control ou les surfaces de configuration/catalogue au lieu
de traiter `/tools` comme un catalogue statique.
## Surfaces dusage (ce qui saffiche où)
## Surfaces dutilisation (ce qui saffiche où)
- **Usage/quota du fournisseur** (exemple : « Claude 80 % restants ») saffiche dans `/status` pour le fournisseur du modèle actuel lorsque le suivi dusage est activé. OpenClaw normalise les fenêtres de fournisseur en `% restants` ; pour MiniMax, les champs de pourcentage restant seuls sont inversés avant affichage, et les réponses `model_remains` privilégient lentrée du modèle de chat plus une étiquette de plan marquée par modèle.
- Les **lignes tokens/cache** dans `/status` peuvent revenir à la dernière entrée dusage de transcript lorsque linstantané de session en direct est peu fourni. Les valeurs en direct non nulles existantes restent prioritaires, et le repli sur le transcript peut aussi récupérer létiquette du modèle dexécution actif ainsi quun total plus important orienté prompt lorsque les totaux stockés sont absents ou plus faibles.
- Le contrôle des **tokens/coût par réponse** se fait via `/usage off|tokens|full` (ajoutés aux réponses normales).
- `/model status` concerne les **modèles/auth/points de terminaison**, pas lusage.
- **Utilisation/quota du fournisseur** (exemple : « Claude 80% left ») saffiche dans `/status` pour le fournisseur du modèle actuel lorsque le suivi dutilisation est activé. OpenClaw normalise les fenêtres fournisseur en `% left` ; pour MiniMax, les champs de pourcentage « restant uniquement » sont inversés avant affichage, et les réponses `model_remains` privilégient lentrée du modèle de chat ainsi quune étiquette de plan balisée par modèle.
- Les **lignes jetons/cache** dans `/status` peuvent se rabattre sur la dernière entrée dutilisation de la transcription lorsque linstantané de session en direct est trop pauvre. Les valeurs en direct non nulles existantes restent prioritaires, et ce repli sur la transcription peut aussi récupérer létiquette du modèle actif à lexécution ainsi quun total davantage orienté prompt lorsque les totaux enregistrés sont absents ou plus faibles.
- Le **coût/les jetons par réponse** est contrôlé par `/usage off|tokens|full` (ajouté aux réponses normales).
- `/model status` concerne les **modèles/lauthentification/les endpoints**, pas lutilisation.
## Sélection du modèle (`/model`)
`/model` est implémenté comme une directive.
`/model` est implémenté comme directive.
Exemples :
Exemples :
```
/model
@ -250,18 +251,18 @@ Exemples :
/model status
```
Remarques :
Remarques :
- `/model` et `/model list` affichent un sélecteur compact numéroté (famille de modèles + fournisseurs disponibles).
- Sur Discord, `/model` et `/models` ouvrent un sélecteur interactif avec listes déroulantes de fournisseur et de modèle, puis une étape Submit.
- Sur Discord, `/model` et `/models` ouvrent un sélecteur interactif avec listes déroulantes de fournisseur et de modèle, ainsi quune étape Submit.
- `/model <#>` sélectionne à partir de ce sélecteur (et préfère le fournisseur actuel lorsque cest possible).
- `/model status` affiche la vue détaillée, y compris le point de terminaison fournisseur configuré (`baseUrl`) et le mode API (`api`) lorsquils sont disponibles.
- `/model status` affiche la vue détaillée, y compris lendpoint fournisseur configuré (`baseUrl`) et le mode API (`api`) lorsquils sont disponibles.
## Remplacements de débogage
`/debug` vous permet de définir des remplacements de configuration **uniquement en exécution** (en mémoire, pas sur disque). Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.debug: true`.
`/debug` vous permet de définir des remplacements de configuration **réservés à lexécution** (en mémoire, pas sur disque). Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.debug: true`.
Exemples :
Exemples :
```
/debug show
@ -271,16 +272,16 @@ Exemples :
/debug reset
```
Remarques :
Remarques :
- Les remplacements sappliquent immédiatement aux nouvelles lectures de configuration, mais nécrivent **pas** dans `openclaw.json`.
- Les remplacements sappliquent immédiatement aux nouvelles lectures de configuration, mais nécrivent pas dans `openclaw.json`.
- Utilisez `/debug reset` pour effacer tous les remplacements et revenir à la configuration sur disque.
## Sortie de trace Plugin
## Sortie de trace des plugins
`/trace` vous permet dactiver/désactiver les **lignes de trace/débogage Plugin limitées à la session** sans activer le mode verbose complet.
`/trace` vous permet dactiver ou de désactiver les **lignes de trace/de débogage des plugins limitées à la session** sans activer le mode verbeux complet.
Exemples :
Exemples :
```text
/trace
@ -288,20 +289,20 @@ Exemples :
/trace off
```
Remarques :
Remarques :
- `/trace` sans argument affiche létat actuel de la trace pour la session.
- `/trace on` active les lignes de trace Plugin pour la session en cours.
- `/trace on` active les lignes de trace de plugin pour la session actuelle.
- `/trace off` les désactive à nouveau.
- Les lignes de trace Plugin peuvent apparaître dans `/status` et comme message de diagnostic de suivi après la réponse normale de lassistant.
- `/trace` ne remplace pas `/debug` ; `/debug` continue de gérer les remplacements de configuration uniquement en exécution.
- `/trace` ne remplace pas `/verbose` ; la sortie verbose normale des outils/statuts reste du ressort de `/verbose`.
- Les lignes de trace de plugin peuvent apparaître dans `/status` et comme message de diagnostic de suivi après la réponse normale de lassistant.
- `/trace` ne remplace pas `/debug` ; `/debug` continue de gérer les remplacements de configuration réservés à lexécution.
- `/trace` ne remplace pas `/verbose` ; la sortie verbeuse normale des outils/statuts relève toujours de `/verbose`.
## Mises à jour de configuration
`/config` écrit dans votre configuration sur disque (`openclaw.json`). Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.config: true`.
`/config` écrit dans votre configuration sur disque (`openclaw.json`). Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.config: true`.
Exemples :
Exemples :
```
/config show
@ -311,16 +312,16 @@ Exemples :
/config unset messages.responsePrefix
```
Remarques :
Remarques :
- La configuration est validée avant lécriture ; les changements invalides sont rejetés.
- La configuration est validée avant écriture ; les modifications invalides sont rejetées.
- Les mises à jour `/config` persistent après redémarrage.
## Mises à jour MCP
`/mcp` écrit les définitions de serveur MCP gérées par OpenClaw sous `mcp.servers`. Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.mcp: true`.
`/mcp` écrit les définitions de serveur MCP gérées par OpenClaw sous `mcp.servers`. Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.mcp: true`.
Exemples :
Exemples :
```text
/mcp show
@ -329,16 +330,16 @@ Exemples :
/mcp unset context7
```
Remarques :
Remarques :
- `/mcp` stocke la configuration dans la configuration OpenClaw, pas dans les paramètres de projet possédés par Pi.
- `/mcp` stocke la configuration dans la configuration OpenClaw, pas dans les paramètres de projet appartenant à Pi.
- Les adaptateurs dexécution décident quels transports sont réellement exécutables.
## Mises à jour des plugins
## Mises à jour de plugins
`/plugins` permet aux opérateurs dinspecter les plugins découverts et de basculer leur activation dans la configuration. Les flux en lecture seule peuvent utiliser `/plugin` comme alias. Désactivé par défaut ; activez-le avec `commands.plugins: true`.
`/plugins` permet aux opérateurs dinspecter les plugins découverts et dactiver/de désactiver leur état dans la configuration. Les flux en lecture seule peuvent utiliser `/plugin` comme alias. Désactivé par défaut ; activez-le avec `commands.plugins: true`.
Exemples :
Exemples :
```text
/plugins
@ -348,43 +349,43 @@ Exemples :
/plugins disable context7
```
Remarques :
Remarques :
- `/plugins list` et `/plugins show` utilisent la découverte réelle des plugins sur lespace de travail actuel plus la configuration sur disque.
- `/plugins enable|disable` met uniquement à jour la configuration du plugin ; cela ninstalle ni ne désinstalle les plugins.
- Après des changements dactivation/désactivation, redémarrez la Gateway pour les appliquer.
- `/plugins list` et `/plugins show` utilisent la découverte réelle des plugins par rapport à lespace de travail actuel ainsi quà la configuration sur disque.
- `/plugins enable|disable` met uniquement à jour la configuration du plugin ; cela ninstalle ni ne désinstalle les plugins.
- Après des changements dactivation/désactivation, redémarrez la gateway pour les appliquer.
## Remarques sur les surfaces
- **Les commandes texte** sexécutent dans la session de chat normale (les DM partagent `main`, les groupes ont leur propre session).
- **Les commandes natives** utilisent des sessions isolées :
- Discord : `agent:<agentId>:discord:slash:<userId>`
- Slack : `agent:<agentId>:slack:slash:<userId>` (préfixe configurable via `channels.slack.slashCommand.sessionPrefix`)
- Telegram : `telegram:slash:<userId>` (cible la session du chat via `CommandTargetSessionKey`)
- **Les commandes texte** sexécutent dans la session de chat normale (les messages privés partagent `main`, les groupes ont leur propre session).
- **Les commandes natives** utilisent des sessions isolées :
- Discord : `agent:<agentId>:discord:slash:<userId>`
- Slack : `agent:<agentId>:slack:slash:<userId>` (préfixe configurable via `channels.slack.slashCommand.sessionPrefix`)
- Telegram : `telegram:slash:<userId>` (cible la session de chat via `CommandTargetSessionKey`)
- **`/stop`** cible la session de chat active afin de pouvoir interrompre lexécution en cours.
- **Slack :** `channels.slack.slashCommand` reste pris en charge pour une seule commande de type `/openclaw`. Si vous activez `commands.native`, vous devez créer une commande slash Slack par commande intégrée (mêmes noms que `/help`). Les menus darguments de commande pour Slack sont livrés comme boutons Block Kit éphémères.
- Exception native Slack : enregistrez `/agentstatus` (pas `/status`) parce que Slack réserve `/status`. Le texte `/status` continue de fonctionner dans les messages Slack.
- **Slack :** `channels.slack.slashCommand` reste pris en charge pour une seule commande de style `/openclaw`. Si vous activez `commands.native`, vous devez créer une commande slash Slack par commande intégrée (mêmes noms que `/help`). Les menus darguments de commande pour Slack sont fournis sous forme de boutons Block Kit éphémères.
- Exception native Slack : enregistrez `/agentstatus` (pas `/status`) parce que Slack réserve `/status`. Le texte `/status` continue de fonctionner dans les messages Slack.
## Questions latérales BTW
## Questions annexes BTW
`/btw` est une **question latérale** rapide à propos de la session en cours.
`/btw` est une **question annexe** rapide sur la session actuelle.
Contrairement au chat normal :
Contrairement au chat normal :
- il utilise la session en cours comme contexte darrière-plan,
- il sexécute comme un appel ponctuel séparé **sans outils**,
- il utilise la session actuelle comme contexte darrière-plan,
- il sexécute comme un appel one-shot séparé **sans outils**,
- il ne modifie pas le contexte futur de la session,
- il nest pas écrit dans lhistorique du transcript,
- il est livré comme résultat latéral en direct au lieu dun message assistant normal.
- il nest pas écrit dans lhistorique de transcription,
- il est livré comme résultat annexe en direct au lieu dun message normal de lassistant.
Cela rend `/btw` utile lorsque vous voulez une clarification temporaire pendant que la
tâche principale continue.
Exemple :
Exemple :
```text
/btw que sommes-nous en train de faire en ce moment ?
/btw what are we doing right now?
```
Voir [Questions latérales BTW](/fr/tools/btw) pour le comportement complet et les
détails UX client.
Voir [BTW Side Questions](/fr/tools/btw) pour le comportement complet et les détails
dexpérience utilisateur côté client.