chore(i18n): refresh fr translations
This commit is contained in:
parent
083da599d5
commit
f349af7b7a
File diff suppressed because it is too large
Load Diff
@ -4,17 +4,17 @@ read_when:
|
||||
summary: Configuration de Slack et comportement à l’exé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 d’application 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 d’application 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 l’application Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
|
||||
Dans les paramètres de l’application 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 d’exemple](#manifest-and-scope-checklist) ci-dessous et continuez pour créer
|
||||
- générez un **jeton de niveau application** (`xapp-...`) avec `connections:write`
|
||||
- installez l’application et copiez le **jeton du bot** (`xoxb-...`) affiché
|
||||
- collez le [manifeste d’exemple](#manifest-and-scope-checklist) ci-dessous et continuez pour créer l’application
|
||||
- générez un **App-Level Token** (`xapp-...`) avec `connections:write`
|
||||
- installez l’application 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 d’environnement (compte par défaut uniquement) :
|
||||
Variable d’environnement 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 l’application Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
|
||||
Dans les paramètres de l’application 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 d’exemple](#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 l’application et copiez le **jeton du bot** (`xoxb-...`) affiché
|
||||
- collez le [manifeste d’exemple](#manifest-and-scope-checklist) et mettez à jour les URL avant de créer l’application
|
||||
- enregistrez le **Signing Secret** pour la vérification des requêtes
|
||||
- installez l’application 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 n’entrent pas en collision.
|
||||
Donnez à chaque compte un `webhookPath` distinct (par défaut `/slack/events`) afin que les enregistrements n’entrent 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 d’une seule commande configurée, avec quelques nuances :
|
||||
Plusieurs [commandes slash natives](#commands-and-slash-behavior) peuvent être utilisées à la place d’une seule commande configurée, avec quelques nuances :
|
||||
|
||||
- Utilisez `/agentstatus` au lieu de `/status`, car la commande `/status` est réservée.
|
||||
- Il n’est pas possible de rendre plus de 25 commandes slash disponibles en même temps.
|
||||
- Il n’est 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 d’exécution",
|
||||
"description": "Afficher ou définir les valeurs par défaut d’exec",
|
||||
"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 d’exécution, y compris l’utilisation/le quota du fournisseur lorsque disponible"
|
||||
"description": "Afficher l’état d’exécution, y compris l’utilisation/le quota du fournisseur lorsqu’il 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 d’utilisation ou afficher le récapitulatif des coûts",
|
||||
"description": "Contrôler le pied de page d’utilisation 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 d’exécution",
|
||||
"description": "Afficher ou définir les valeurs par défaut d’exec",
|
||||
"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 d’exécution, y compris l’utilisation/le quota du fournisseur lorsque disponible",
|
||||
"description": "Afficher l’état d’exécution, y compris l’utilisation/le quota du fournisseur lorsqu’il 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 d’utilisation ou afficher le récapitulatif des coûts",
|
||||
"description": "Contrôler le pied de page d’utilisation 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 d’attribution facultatives (opérations d’écriture)">
|
||||
Ajoutez la portée de bot `chat:write.customize` si vous souhaitez que les messages sortants utilisent l’identité de l’agent actif (nom d’utilisateur et icône personnalisés) au lieu de l’identité par défaut de l’application Slack.
|
||||
<Accordion title="Scopes d’attribution facultatifs (opérations d’écriture)">
|
||||
Ajoutez le scope bot `chat:write.customize` si vous voulez que les messages sortants utilisent l’identité de l’agent actif (nom d’utilisateur et icône personnalisés) au lieu de l’identité par défaut de l’application 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 d’environnement.
|
||||
- La solution de repli via `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` ne s’applique qu’au compte par défaut.
|
||||
- `userToken` (`xoxp-...`) est uniquement configurable dans la configuration (pas de solution de repli via variable d’environnement) 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 d’environnement de secours.
|
||||
- La variable d’environnement de secours `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` s’applique uniquement au compte par défaut.
|
||||
- `userToken` (`xoxp-...`) est uniquement configurable dans la configuration (pas de variable d’environnement de secours) et utilise par défaut un comportement en lecture seule (`userTokenReadOnly: true`).
|
||||
|
||||
Comportement de l’instantané d’état :
|
||||
Comportement de l’instantané d’état :
|
||||
|
||||
- L’inspection 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/d’exécution
|
||||
n’a 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
|
||||
d’exécution actuel n’a 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é lorsqu’il 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é lorsqu’il 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 n’est pas disponible.
|
||||
</Tip>
|
||||
|
||||
## Actions et contrôles
|
||||
|
||||
Les actions Slack sont contrôlées par `channels.slack.actions.*`.
|
||||
|
||||
Groupes d’actions disponibles dans les outils Slack actuels :
|
||||
Groupes d’actions disponibles dans l’outillage 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 d’accès et routage
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Politique des messages privés">
|
||||
`channels.slack.dmPolicy` contrôle l’accès aux messages privés (hérité : `channels.slack.dm.policy`) :
|
||||
<Tab title="Politique de message privé">
|
||||
`channels.slack.dmPolicy` contrôle l’accè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 d’autorisation MPIM facultative)
|
||||
|
||||
Priorité multi-compte :
|
||||
Priorité multi-comptes :
|
||||
|
||||
- `channels.slack.accounts.default.allowFrom` s’applique uniquement au compte `default`.
|
||||
- Les comptes nommés héritent de `channels.slack.allowFrom` lorsque leur propre `allowFrom` n’est 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 d’autorisation des canaux se trouve sous `channels.slack.channels` et doit utiliser des identifiants de canal stables.
|
||||
La liste d’autorisation des canaux se trouve sous `channels.slack.channels` et doit utiliser des ID de canal stables.
|
||||
|
||||
Note d’exécution : si `channels.slack` est complètement absent (configuration uniquement via variables d’environnement), l’exécution revient à `groupPolicy="allowlist"` et consigne un avertissement (même si `channels.defaults.groupPolicy` est défini).
|
||||
Remarque d’exécution : si `channels.slack` est complètement absent (configuration via variables d’environnement uniquement), l’exé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 d’autorisation de canal et de message privé sont résolues au démarrage lorsque l’accè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
|
||||
- l’autorisation entrante et le routage des canaux utilisent par défaut les ID d’abord ; la correspondance directe par nom d’utilisateur/slug nécessite `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
- les entrées de liste d’autorisation de canaux et de messages privés sont résolues au démarrage lorsque l’accè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
|
||||
- l’autorisation entrante et le routage des canaux utilisent les ID en priorité par défaut ; la correspondance directe par nom d’utilisateur/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 l’application (`<@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 d’autorisation)
|
||||
@ -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 l’agent.
|
||||
- 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 s’applique.
|
||||
- `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 d’une 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 qu’aux mentions explicites `@bot` à l’inté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 lorsqu’une 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 qu’aux mentions explicites `@bot` dans les fils, même s’il 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 d’accusé de réception
|
||||
|
||||
`ackReaction` envoie un emoji d’accusé de réception pendant qu’OpenClaw traite un message entrant.
|
||||
`ackReaction` envoie un emoji d’accusé 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 l’emoji de l’identité de l’agent (`agents.list[].identity.emoji`, sinon `"👀"`)
|
||||
- repli vers l’emoji d’identité de l’agent (`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 d’aperç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 d’aperçu en direct.
|
||||
- `partial` (par défaut) : remplace le texte d’aperçu par la dernière sortie partielle.
|
||||
- `block` : ajoute des mises à jour d’aperç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 l’aperçu de brouillon est actif, route les mises à jour d’outil/progression dans le même message d’aperçu modifié (par défaut : `true`). Définissez `false` pour conserver des messages d’outil/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 n’est pas disponible.
|
||||
- Les messages privés Slack de niveau supérieur restent hors fil par défaut, donc ils n’affichent 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 l’aperçu de brouillon normal lorsque le streaming natif n’est pas disponible.
|
||||
- Les messages privés Slack de niveau supérieur restent hors fil par défaut ; ils n’affichent donc pas l’aperç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 l’aperç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`.
|
||||
- l’ancienne 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 qu’OpenClaw traite une réponse, puis la supprime lorsque l’exé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 l’exé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 à l’exécution est de `20MB` par défaut, sauf remplacement par `channels.slack.mediaMaxMb`.
|
||||
La limite de taille entrante à l’exé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` lorsqu’il 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` lorsqu’elle 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"` n’active pas les commandes natives Slack.
|
||||
|
||||
@ -834,12 +835,12 @@ Les commandes natives nécessitent des [paramètres de manifeste supplémentaire
|
||||
/help
|
||||
```
|
||||
|
||||
Les menus d’arguments natifs utilisent une stratégie de rendu adaptative qui affiche une fenêtre modale de confirmation avant d’envoyer la valeur d’option sélectionnée :
|
||||
Les menus d’arguments natifs utilisent une stratégie de rendu adaptative qui affiche une modale de confirmation avant d’envoyer la valeur d’option 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 d’options d’interactivité sont disponibles
|
||||
- limites Slack dépassées : les valeurs d’options 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 d’options d’interactivité sont disponibles
|
||||
- limites Slack dépassées : les valeurs d’option 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 l’agent, mais cette fonctionnalité est désactivée par défaut.
|
||||
Slack peut afficher des contrôles de réponse interactive rédigés par l’agent, 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 :
|
||||
}
|
||||
```
|
||||
|
||||
Lorsqu’elle est activée, les agents peuvent émettre des directives de réponse propres à Slack :
|
||||
Lorsqu’elle 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 d’interaction 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 d’interaction Slack.
|
||||
|
||||
Remarques :
|
||||
Remarques :
|
||||
|
||||
- Il s’agit d’une 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 l’agent.
|
||||
- Si les blocs interactifs générés dépassent les limites de Slack Block Kit, OpenClaw revient à la réponse texte d’origine au lieu d’envoyer 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 l’agent.
|
||||
- Si les blocs interactifs générés dépassent les limites de Slack Block Kit, OpenClaw revient à la réponse texte d’origine au lieu d’envoyer une charge utile `blocks` invalide.
|
||||
|
||||
## Approbations Exec dans Slack
|
||||
## Approbations exec dans Slack
|
||||
|
||||
Slack peut agir comme client d’approbation natif avec des boutons et des interactions interactifs, au lieu de revenir à l’interface Web ou au terminal.
|
||||
Slack peut agir comme client d’approbation natif avec boutons et interactions interactifs, au lieu de revenir à l’interface 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 d’identifiant d’approbation est `plugin:`.
|
||||
- L’autorisation 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 d’identifiant d’approbation est `plugin:`.
|
||||
- L’autorisation 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 d’approbation partagée que les autres canaux. Lorsque `interactivity` est activé dans les paramètres de votre application Slack, les invites d’approbation s’affichent comme des boutons Block Kit directement dans la conversation.
|
||||
Lorsque ces boutons sont présents, ils constituent l’expérience principale d’approbation ; OpenClaw
|
||||
Cela utilise la même surface partagée de boutons d’approbation que les autres canaux. Lorsque `interactivity` est activé dans les paramètres de votre application Slack, les invites d’approbation s’affichent comme boutons Block Kit directement dans la conversation.
|
||||
Lorsque ces boutons sont présents, ils constituent l’expérience utilisateur principale pour l’approbation ; OpenClaw
|
||||
ne doit inclure une commande manuelle `/approve` que lorsque le résultat de l’outil indique que les
|
||||
approbations par chat ne sont pas disponibles ou que l’approbation manuelle est la seule voie possible.
|
||||
approbations par discussion ne sont pas disponibles ou que l’approbation 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` n’est pas défini ou vaut `"auto"` et qu’au moins un
|
||||
Slack active automatiquement les approbations exec natives lorsque `enabled` n’est pas défini ou vaut `"auto"` et qu’au moins un
|
||||
approbateur est résolu. Définissez `enabled: false` pour désactiver explicitement Slack comme client d’approbation natif.
|
||||
Définissez `enabled: true` pour forcer l’activation 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 n’est nécessaire que si vous voulez remplacer les approbateurs, ajouter des filtres ou
|
||||
opter pour une livraison dans le chat d’origine :
|
||||
opter pour une livraison dans la discussion d’origine :
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -947,52 +948,52 @@ opter pour une livraison dans le chat d’origine :
|
||||
}
|
||||
```
|
||||
|
||||
Le transfert partagé `approvals.exec` est distinct. Utilisez-le uniquement lorsque les invites d’approbation Exec doivent aussi
|
||||
être routées vers d’autres 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 d’approbation exec doivent aussi
|
||||
être routées vers d’autres 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 d’approbation.
|
||||
|
||||
## É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 d’ajout/suppression de réaction sont mappés vers des événements système.
|
||||
- Les événements d’entrée/sortie de membre, de création/renommage de canal et d’ajout/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 l’historique initial du fil sont filtrés par les listes d’autorisation d’expéditeur configurées lorsque cela s’applique.
|
||||
- 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 l’initialisation du contexte d’historique du fil sont filtrés par les listes d’autorisation d’expé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 d’urgence ; 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 l’ordre :
|
||||
Vérifiez, dans cet ordre :
|
||||
|
||||
- `groupPolicy`
|
||||
- liste d’autorisation des canaux (`channels.slack.channels`)
|
||||
- `requireMention`
|
||||
- liste d’autorisation `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 l’ancienne 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 l’activation de Socket Mode dans les paramètres de l’application Slack.
|
||||
Validez les jetons bot + app ainsi que l’activation de Socket Mode dans les paramètres de l’application Slack.
|
||||
|
||||
Si `openclaw channels status --probe --json` affiche `botTokenStatus` ou
|
||||
`appTokenStatus: "configured_unavailable"`, le compte Slack est
|
||||
configuré mais l’exécution actuelle n’a pas pu résoudre la
|
||||
valeur adossée à SecretRef.
|
||||
configuré mais l’exécution actuelle n’a 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 l’exécution actuelle n’a 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 l’exécution actuelle n’a 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 d’autorisation des canaux/utilisateurs.
|
||||
Vérifiez également `commands.useAccessGroups` ainsi que les listes d’autorisation de canal/utilisateur.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Lié
|
||||
## Liens associés
|
||||
|
||||
- [Appairage](/fr/channels/pairing)
|
||||
- [Groupes](/fr/channels/groups)
|
||||
|
||||
@ -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 l’association.
|
||||
La politique de MP par défaut pour Telegram est l’association.
|
||||
</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 l’identifiant 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 qu’ils correspondent à votre modèle d’accès.
|
||||
Ajoutez le bot à votre groupe, puis définissez `channels.telegram.groups` et `groupPolicy` en fonction de votre modèle d’accès.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
<Note>
|
||||
L’ordre de résolution du jeton dépend du compte. En pratique, les valeurs de configuration priment sur la variable d’environnement de secours, et `TELEGRAM_BOT_TOKEN` ne s’applique qu’au compte par défaut.
|
||||
L’ordre de résolution du jeton tient compte du compte. En pratique, les valeurs de configuration priment sur la variable d’environnement de secours, et `TELEGRAM_BOT_TOKEN` ne s’applique qu’au 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 qu’ils reçoivent.
|
||||
Par défaut, les bots Telegram sont en **mode confidentialité**, ce qui limite les messages de groupe qu’ils 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 @@ L’ordre 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 l’ajout à des groupes
|
||||
- `/setjoingroups` pour autoriser/interdire l’ajout aux groupes
|
||||
- `/setprivacy` pour le comportement de visibilité dans les groupes
|
||||
|
||||
</Accordion>
|
||||
@ -112,7 +112,7 @@ L’ordre de résolution du jeton dépend du compte. En pratique, les valeurs de
|
||||
## Contrôle d’accès et activation
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Politique DM">
|
||||
<Tab title="Politique de MP">
|
||||
`channels.telegram.dmPolicy` contrôle l’accès aux messages directs :
|
||||
|
||||
- `pairing` (par défaut)
|
||||
@ -121,22 +121,22 @@ L’ordre 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 d’autorisation `@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 d’autorisation du magasin d’association, `openclaw doctor --fix` peut récupérer les entrées dans `channels.telegram.allowFrom` dans les flux `allowlist` (par exemple lorsque `dmPolicy: "allowlist"` n’a encore aucun ID explicite).
|
||||
Si vous avez fait une mise à niveau et que votre configuration contient des entrées de liste d’autorisation `@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 d’autorisation du magasin d’association, `openclaw doctor --fix` peut récupérer les entrées dans `channels.telegram.allowFrom` dans les flux allowlist (par exemple lorsque `dmPolicy: "allowlist"` n’a pas encore d’ID explicites).
|
||||
|
||||
Pour les bots à propriétaire unique, préférez `dmPolicy: "allowlist"` avec des ID `allowFrom` numériques explicites afin de conserver une politique d’accès durable dans la configuration (au lieu de dépendre des approbations d’association 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 d’accès durable dans la configuration (au lieu de dépendre des approbations d’association précédentes).
|
||||
|
||||
Confusion fréquente : l’approbation de l’association DM ne signifie pas « cet expéditeur est autorisé partout ».
|
||||
L’association accorde uniquement l’accès en DM. L’autorisation des expéditeurs dans les groupes provient toujours de listes d’autorisation 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 : l’approbation d’association en MP ne signifie pas « cet expéditeur est autorisé partout ».
|
||||
L’association n’accorde l’accès qu’aux MP. L’autorisation des expéditeurs dans les groupes provient toujours de listes d’autorisation 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. S’il n’est pas défini, Telegram retombe sur `allowFrom`.
|
||||
`groupAllowFrom` est utilisé pour le filtrage des expéditeurs en groupe. S’il n’est 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 d’ID 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 d’ID 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 l’autorisation des expéditeurs.
|
||||
Limite de sécurité (`2026.2.25+`) : l’authentification des expéditeurs de groupe n’hérite **pas** des approbations du magasin d’association DM.
|
||||
L’association reste limitée aux DM. Pour les groupes, définissez `groupAllowFrom` ou `allowFrom` par groupe/par sujet.
|
||||
Si `groupAllowFrom` n’est pas défini, Telegram retombe sur `allowFrom` de la configuration, pas sur le magasin d’association.
|
||||
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 d’exécution : si `channels.telegram` est complètement absent, les valeurs par défaut à l’exécution sont fail-closed avec `groupPolicy="allowlist"` sauf si `channels.defaults.groupPolicy` est explicitement défini.
|
||||
Limite de sécurité (`2026.2.25+`) : l’autorisation des expéditeurs en groupe **n’hérite pas** des approbations du magasin d’association pour les MP.
|
||||
L’association reste limitée aux MP. Pour les groupes, définissez `groupAllowFrom` ou `allowFrom` par groupe/par sujet.
|
||||
Si `groupAllowFrom` n’est pas défini, Telegram se rabat sur `allowFrom` dans la configuration, pas sur le magasin d’association.
|
||||
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 d’exécution : si `channels.telegram` est totalement absent, les valeurs par défaut d’exécution utilisent le mode fail-closed avec `groupPolicy="allowlist"` sauf si `channels.defaults.groupPolicy` est explicitement défini.
|
||||
|
||||
Exemple : autoriser n’importe 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` n’est pas une liste d’autorisation 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 à l’intérieur d’un 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 n’importe quel membre d’un 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 l’ID de discussion du groupe :
|
||||
Obtenir l’ID du chat de groupe :
|
||||
|
||||
- transférez un message du groupe à `@userinfobot` / `@getidsbot`
|
||||
- ou lisez `chat.id` depuis `openclaw logs --follow`
|
||||
- ou inspectez `getUpdates` de l’API Bot
|
||||
- transférer un message du groupe à `@userinfobot` / `@getidsbot`
|
||||
- ou lire `chat.id` depuis `openclaw logs --follow`
|
||||
- ou inspecter `getUpdates` de l’API 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 l’enveloppe 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 l’enveloppe 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 l’ID 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.
|
||||
- L’API Bot Telegram ne prend pas en charge les accusés de lecture (`sendReadReceipts` ne s’applique 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 l’ID 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.
|
||||
- L’API Bot Telegram n’a pas de prise en charge des accusés de lecture (`sendReadReceipts` ne s’applique 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 d’outil/progression réutilisent le même message d’aperçu modifié (par défaut : `true`). Définissez `false` pour conserver des messages d’outil/progression séparés.
|
||||
- l’ancien `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 d’aperçu et effectue une modification finale sur place (pas de second message)
|
||||
- MP : OpenClaw conserve le même message d’aperçu et effectue une modification finale sur place (pas de second message)
|
||||
- groupe/sujet : OpenClaw conserve le même message d’aperç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 d’aperç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 d’aperçu.
|
||||
|
||||
La diffusion d’aperçu est distincte de la diffusion par blocs. Lorsque la diffusion par blocs est explicitement activée pour Telegram, OpenClaw ignore le flux d’aperçu afin d’éviter une double diffusion.
|
||||
Le flux d’aperçu est distinct du flux par blocs. Lorsque le flux par blocs est explicitement activé pour Telegram, OpenClaw ignore le flux d’aperçu pour éviter un double flux.
|
||||
|
||||
Si le transport natif de brouillon n’est pas disponible ou est rejeté, OpenClaw retombe automatiquement sur `sendMessage` + `editMessageText`.
|
||||
Si le transport de brouillon natif n’est 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 d’analyse 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 n’implémentent pas automatiquement un comportement
|
||||
- les commandes de Plugin/Skills peuvent quand même fonctionner lorsqu’elles sont saisies même si elles ne sont pas affichées dans le menu Telegram
|
||||
- les commandes de plugin/Skills peuvent toujours fonctionner lorsqu’elles 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 s’enregistrer 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 s’enregistrer 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 d’association d’appareil (Plugin `device-pair`)
|
||||
### Commandes d’association d’appareil (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 l’app 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` lorsqu’il n’y a qu’une seule requête en attente
|
||||
- `/pair approve` lorsqu’il n’y a qu’une seule demande en attente
|
||||
- `/pair approve latest` pour la plus récente
|
||||
|
||||
Le code de configuration transporte un jeton d’amorçage de courte durée. Le transfert d’amorç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 d’amorçage sont préfixées par rôle, de sorte que cette liste d’autorisation 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 d’autorisation d’opérateur ne satisfait que les demandes d’opé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 d’authentification 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 d’approuver.
|
||||
Si un appareil réessaie avec des détails d’authentification 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 d’approuver.
|
||||
|
||||
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 à l’agent sous forme de texte :
|
||||
Les clics de callback sont transmis à l’agent 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 l’automatisation">
|
||||
Les actions d’outil 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 n’ont pas de commutateurs `channels.telegram.actions.*` séparés.
|
||||
Les envois à l’exécution utilisent l’instantané actif de la configuration/secrets (démarrage/rechargement), de sorte que les chemins d’action n’effectuent pas de nouvelle résolution ad hoc de SecretRef à chaque envoi.
|
||||
Remarque : `edit` et `topic-create` sont actuellement activés par défaut et n’ont pas de bascules `channels.telegram.actions.*` séparées.
|
||||
Les envois à l’exécution utilisent l’instantané actif de config/secrets (démarrage/rechargement), donc les chemins d’action n’effectuent 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 l’agent pour forcer l’envoi comme note vocale
|
||||
- balise `[[audio_as_voice]]` dans la réponse de l’agent pour forcer l’envoi en note vocale
|
||||
|
||||
Exemple d’action 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 c’est 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).
|
||||
|
||||
Lorsqu’elles sont activées, OpenClaw met en file d’attente des événements système comme :
|
||||
Lorsqu’elles sont activées, OpenClaw met en file d’attente 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 d’accès Telegram (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`) ; les expéditeurs non autorisés sont ignorés.
|
||||
- Telegram ne fournit pas d’ID 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 d’origine 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 d’origine 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 l’URL 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 lorsqu’une 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 l’URL publique.
|
||||
Définissez `webhookHost` (par exemple `0.0.0.0`) lorsque vous avez intentionnellement besoin d’un trafic entrant externe.
|
||||
Si votre point de terminaison public est différent, placez un proxy inverse devant et faites pointer `webhookUrl` vers l’URL publique.
|
||||
Définissez `webhookHost` (par exemple `0.0.0.0`) lorsque vous avez intentionnellement besoin d’un 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 d’expiration du client API Telegram (si non défini, la valeur par défaut de grammY s’applique).
|
||||
- `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.
|
||||
- l’historique 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.
|
||||
- l’historique 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 d’autorisation Telegram limitent principalement qui peut déclencher l’agent, et non une limite complète de masquage du contexte supplémentaire.
|
||||
- contrôles d’historique DM :
|
||||
- les listes d’autorisation Telegram contrôlent principalement qui peut déclencher l’agent, pas une limite complète de masquage du contexte supplémentaire.
|
||||
- contrôles de l’historique des MP :
|
||||
- `channels.telegram.dmHistoryLimit`
|
||||
- `channels.telegram.dms["<user_id>"].historyLimit`
|
||||
- la configuration `channels.telegram.retry` s’applique aux assistants d’envoi Telegram (CLI/outils/actions) pour les erreurs d’API sortantes récupérables.
|
||||
- la configuration `channels.telegram.retry` s’applique aux aides d’envoi Telegram (CLI/outils/actions) pour les erreurs récupérables de l’API sortante.
|
||||
|
||||
La cible d’envoi CLI peut être un ID de chat numérique ou un nom d’utilisateur :
|
||||
|
||||
@ -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:`)
|
||||
|
||||
L’envoi Telegram prend aussi en charge :
|
||||
|
||||
- `--buttons` pour les claviers intégrés lorsque `channels.telegram.capabilities.inlineButtons` l’autorise
|
||||
- `--force-document` pour envoyer les images et GIF sortants comme documents au lieu d’envois de photo compressée ou de média animé
|
||||
- `--buttons` pour les claviers inline lorsque `channels.telegram.capabilities.inlineButtons` l’autorise
|
||||
- `--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 d’approbation dans le chat ou le sujet d’origine.
|
||||
Telegram prend en charge les approbations exec dans les MP des approbateurs et peut facultativement publier les invites d’approbation dans le chat ou le sujet d’origine.
|
||||
|
||||
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` n’est pas défini ou vaut `"auto"` et qu’au 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 d’approbation natif. Les demandes d’approbation retombent sinon sur d’autres routes d’approbation 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` n’est pas défini ou vaut `"auto"` et qu’au 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 d’approbation natif. Sinon, les demandes d’approbation se rabattent sur d’autres routes d’approbation configurées ou sur la politique de repli d’approbation exec.
|
||||
|
||||
Telegram affiche aussi les boutons d’approbation partagés utilisés par les autres canaux de chat. L’adaptateur 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 l’UX principale d’approbation ; OpenClaw
|
||||
ne doit inclure une commande manuelle `/approve` que lorsque le résultat de l’outil indique
|
||||
que les approbations par chat ne sont pas disponibles ou que l’approbation manuelle est la seule voie.
|
||||
Telegram affiche également les boutons d’approbation partagés utilisés par les autres canaux de chat. L’adaptateur natif Telegram ajoute principalement le routage des MP d’approbateur, la diffusion vers le canal/sujet et les indications de saisie avant la livraison.
|
||||
Lorsque ces boutons sont présents, ils constituent l’UX d’approbation principale ; OpenClaw
|
||||
ne devrait inclure une commande manuelle `/approve` que lorsque le résultat de l’outil indique
|
||||
que les approbations par chat sont indisponibles ou que l’approbation manuelle est la seule voie.
|
||||
|
||||
Règles de livraison :
|
||||
|
||||
- `target: "dm"` envoie les invites d’approbation uniquement aux DM des approbateurs résolus
|
||||
- `target: "channel"` renvoie l’invite dans le chat/sujet Telegram d’origine
|
||||
- `target: "both"` envoie aux DM des approbateurs et au chat/sujet d’origine
|
||||
- `target: "dm"` envoie les invites d’approbation uniquement aux MP des approbateurs résolus
|
||||
- `target: "channel"` renvoie l’invite vers le chat/sujet Telegram d’origine
|
||||
- `target: "both"` envoie aux MP des approbateurs et au chat/sujet d’origine
|
||||
|
||||
Seuls les approbateurs résolus peuvent approuver ou refuser. Les non-approbateurs ne peuvent pas utiliser `/approve` et ne peuvent pas utiliser les boutons d’approbation Telegram.
|
||||
Seuls les approbateurs résolus peuvent approuver ou refuser. Les non-approbateurs ne peuvent pas utiliser `/approve` ni les boutons d’approbation 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 d’abord `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 d’abord `exec.approval.resolve`.
|
||||
- si Telegram est aussi autorisé pour les approbations de plugin et que la gateway indique
|
||||
que l’approbation exec est inconnue/expirée, Telegram réessaie une fois via
|
||||
`plugin.approval.resolve`.
|
||||
- Les refus/erreurs réels d’approbation exec ne retombent pas silencieusement vers la résolution
|
||||
d’approbation de Plugin.
|
||||
- les refus/erreurs réels d’approbation exec ne basculent pas silencieusement vers la
|
||||
résolution d’approbation 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 l’invite arrive dans un sujet de forum, OpenClaw préserve le sujet à la fois pour l’invite d’approbation 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 ; n’activez donc `channel` ou `both` que dans des groupes/sujets de confiance. Lorsque l’invite arrive dans un sujet de forum, OpenClaw préserve le sujet à la fois pour l’invite d’approbation et pour le suivi après approbation. Les approbations exec expirent après 30 minutes par défaut.
|
||||
|
||||
Les boutons d’approbation intégrés dépendent également de `channels.telegram.capabilities.inlineButtons` autorisant la surface cible (`dm`, `group` ou `all`).
|
||||
Les boutons d’approbation 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 l’agent rencontre une erreur de livraison ou de fournisseur, Telegram
|
||||
| Key | Values | Default | Description |
|
||||
| ----------------------------------- | ----------------- | ------- | ----------------------------------------------------------------------------------------------- |
|
||||
| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` envoie un message d’erreur convivial dans le chat. `silent` supprime entièrement les réponses d’erreur. |
|
||||
| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | Temps minimal entre les réponses d’erreur au même chat. Évite le spam d’erreurs pendant les pannes. |
|
||||
| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | Délai minimal entre deux réponses d’erreur dans le même chat. Empêche le spam d’erreurs 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 l’appartenance.
|
||||
- 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 l’appartenance du bot au groupe
|
||||
- consultez les journaux : `openclaw logs --follow` pour les raisons d’ignorance
|
||||
- vérifier l’appartenance du bot au groupe
|
||||
- consulter les journaux : `openclaw logs --follow` pour les raisons d’ignorance
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Les commandes fonctionnent partiellement ou pas du tout">
|
||||
|
||||
- autorisez l’identité de votre expéditeur (association et/ou `allowFrom` numérique)
|
||||
- autorisez votre identité d’expéditeur (association et/ou `allowFrom` numérique)
|
||||
- l’autorisation des commandes s’applique toujours même lorsque la politique de groupe est `open`
|
||||
- `setMyCommands failed` avec `BOT_COMMANDS_TOO_MUCH` signifie que le menu natif contient trop d’entré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 d’accessibilité DNS/HTTPS vers `api.telegram.org`
|
||||
- `setMyCommands failed` avec `BOT_COMMANDS_TOO_MUCH` signifie que le menu natif contient trop d’entré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 d’abandon immédiat si les types `AbortSignal` ne correspondent pas.
|
||||
- Certains hôtes résolvent d’abord `api.telegram.org` en IPv6 ; une sortie IPv6 défaillante peut provoquer des échecs intermittents de l’API 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 d’abandon 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 l’API 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 l’hô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 l’hô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 d’abord
|
||||
l’option 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 d’abord 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 l’opérateur
|
||||
tels que le routage fake-IP de Clash, Mihomo ou Surge lorsqu’ils
|
||||
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 l’internet public.
|
||||
des médias Telegram. Utilisez-le uniquement pour des environnements de proxy de confiance
|
||||
contrôlés par l’opérateur tels que le routage fake-IP de Clash, Mihomo ou Surge lorsqu’ils
|
||||
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 d’environnement (temporaires) :
|
||||
@ -986,9 +986,9 @@ dig +short api.telegram.org AAAA
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
Plus d’aide : [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 d’un fichier ordinaire. Les liens symboliques sont rejetés.
|
||||
- `channels.telegram.dmPolicy` : `pairing | allowlist | open | disabled` (par défaut : pairing).
|
||||
- `channels.telegram.allowFrom` : liste d’autorisation DM (ID utilisateur Telegram numériques). `allowlist` nécessite au moins un ID d’expé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 d’autorisation depuis les fichiers du magasin d’association dans les flux de migration `allowlist`.
|
||||
- `channels.telegram.allowFrom` : liste d’autorisation des MP (ID utilisateur Telegram numériques). `allowlist` nécessite au moins un ID d’expé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 d’autorisation depuis des fichiers du magasin d’association 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` lorsqu’aucun `--reply-to` explicite n’est fourni.
|
||||
- `channels.telegram.groupPolicy` : `open | allowlist | disabled` (par défaut : allowlist).
|
||||
- `channels.telegram.groupAllowFrom` : liste d’autorisation 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 l’authentification. L’authentification de groupe n’utilise pas le repli vers le magasin d’association DM (`2026.2.25+`).
|
||||
- `channels.telegram.groupAllowFrom` : liste d’autorisation 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 l’authentification. L’authentification de groupe n’utilise pas le repli vers le magasin d’association 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 n’est défini, OpenClaw retombe sur le premier ID de compte normalisé et `openclaw doctor` émet un avertissement.
|
||||
- Si aucun n’est 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` s’appliquent 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 n’héritent pas de `channels.telegram.accounts.default.allowFrom` / `groupAllowFrom`.
|
||||
- `channels.telegram.groups` : valeurs par défaut par groupe + liste d’autorisation (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 d’autorisation 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 l’ID 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 d’approbation 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 l’ID 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 d’approbation 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 d’origine lorsqu’il est présent.
|
||||
- `channels.telegram.execApprovals.agentFilter` : filtre d’ID d’agent optionnel pour les invites d’approbation transférées.
|
||||
- `channels.telegram.execApprovals.sessionFilter` : filtre optionnel de clé de session (sous-chaîne ou regex) pour les invites d’approbation transférées.
|
||||
- `channels.telegram.execApprovals.agentFilter` : filtre facultatif par ID d’agent pour les invites d’approbation transférées.
|
||||
- `channels.telegram.execApprovals.sessionFilter` : filtre facultatif par clé de session (sous-chaîne ou regex) pour les invites d’approbation transférées.
|
||||
- `channels.telegram.accounts.<account>.execApprovals` : surcharge par compte pour le routage des approbations exec Telegram et l’autorisation 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 d’aperçu Telegram utilise un seul message d’aperç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 d’envoi Telegram (CLI/outils/actions) sur les erreurs d’API 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 l’ordre 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 l’autorisation 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 l’ancien mode d’aperçu). L’aperçu de flux Telegram utilise un seul message d’aperçu modifié sur place.
|
||||
- `channels.telegram.streaming.preview.toolProgress` : réutilise le message d’aperçu en direct pour les mises à jour d’outil/progression lorsque l’aperçu de flux est actif (par défaut : `true`). Définissez `false` pour conserver des messages d’outil/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 d’envoi Telegram (CLI/outils/actions) lors d’erreurs récupérables de l’API 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 l’ordre 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 à l’API 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 l’outil Telegram.
|
||||
- `channels.telegram.actions.sendMessage` : limite les envois de message de l’outil Telegram.
|
||||
- `channels.telegram.actions.deleteMessage` : limite les suppressions de message de l’outil 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 d’outil Telegram.
|
||||
- `channels.telegram.actions.sendMessage` : restreint les envois de messages d’outil Telegram.
|
||||
- `channels.telegram.actions.deleteMessage` : restreint les suppressions de messages d’outil 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 l’agent (par défaut : `minimal` si non défini).
|
||||
- `channels.telegram.errorPolicy` : `reply | silent` — contrôle le comportement des réponses d’erreur (par défaut : `reply`). Surcharges par compte/groupe/sujet prises en charge.
|
||||
- `channels.telegram.errorCooldownMs` : minimum en ms entre les réponses d’erreur au même chat (par défaut : `60000`). Évite le spam d’erreurs pendant les pannes.
|
||||
- `channels.telegram.errorCooldownMs` : nombre minimal de ms entre deux réponses d’erreur dans le même chat (par défaut : `60000`). Empêche le spam d’erreurs 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)
|
||||
|
||||
@ -1,108 +1,144 @@
|
||||
---
|
||||
read_when:
|
||||
- Exécution de plusieurs passerelles sur la même machine
|
||||
- Vous avez besoin d’une config/d’un é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 d’une configuration, d’un é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 d’une isolation ou d’une 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 d’une 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 d’isolation (obligatoire)
|
||||
## Liste de contrôle d’isolation (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 d’espace 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 n’est 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 qu’il puisse déboguer ou appliquer des changements de configuration si le bot principal est hors service.
|
||||
Cela permet d’isoler le bot de secours du bot principal afin qu’il 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 n’entrent 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 n’entrent 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 l’installation du canal/de l’application 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 l’indépendance complète : compte de bot distinct, identifiants distincts, profil OpenClaw distinct, espace de travail distinct et port distinct.
|
||||
|
||||
### Flux d’installation 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)
|
||||
# S’exé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 l’intégration guidée est identique à la normale
|
||||
|
||||
# Pour installer le service (si cela n’a 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 l’espace de travail de secours par défaut, sauf si vous en gérez déjà un vous-même
|
||||
|
||||
Si l’onboarding a déjà installé le service de secours pour vous, le
|
||||
`gateway install` final n’est pas nécessaire.
|
||||
|
||||
### Ce que l’onboarding modifie
|
||||
|
||||
`openclaw --profile rescue onboard` utilise le flux d’onboarding 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)
|
||||
- l’hô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)
|
||||
- l’hô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 l’un de ces paramètres dans la config ou l’environnement, vous devez les garder uniques par instance.
|
||||
Si vous remplacez l’un de ces paramètres dans la configuration ou l’environnement, 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 d’environnement
|
||||
|
||||
```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 d’installations plus anciennes.
|
||||
- Un texte d’avertissement de `gateway probe` tel que `multiple reachable gateways detected` n’est 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 d’anciennes installations.
|
||||
- Le texte d’avertissement de `gateway probe`, tel que `multiple reachable gateways detected`, n’est attendu que lorsque vous exécutez intentionnellement plus d’un gateway isolé.
|
||||
|
||||
@ -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 à l’hô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, c’est la seule
|
||||
liste d’autorisation utilisée ; sinon, l’autorisation provient des listes d’autorisation/appairages du canal plus `commands.useAccessGroups`.
|
||||
liste d’autorisation utilisée ; sinon, l’autorisation provient des listes d’autorisation/d’association 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 s’exé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 d’autorisation uniquement) : `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
Ils s’exé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 s’exécutent immédiatement, sont retirés avant que le modèle ne voie le
|
||||
```
|
||||
|
||||
- `commands.text` (par défaut `true`) active l’analyse 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 l’application Slack et ne sont pas supprimées automatiquement.
|
||||
- `commands.nativeSkills` (par défaut `"auto"`) enregistre les commandes de **Skills** nativement lorsqu’elles sont prises en charge.
|
||||
- Auto : activé pour Discord/Telegram ; désactivé pour Slack (Slack exige la création d’une 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 l’hôte (`/bash <cmd>` est un alias ; nécessite les listes d’autorisation `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 d’activation/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 d’outil de redémarrage de la Gateway.
|
||||
- `commands.ownerAllowFrom` (facultatif) définit la liste d’autorisation 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 c’est pris en charge.
|
||||
- Auto : activé pour Discord/Telegram ; désactivé pour Slack (Slack exige la création d’une 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 l’hôte (`/bash <cmd>` est un alias ; nécessite les listes d’autorisation `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 d’installation + activation/désactivation).
|
||||
- `commands.debug` (par défaut `false`) active `/debug` (remplacements réservés à l’exécution).
|
||||
- `commands.restart` (par défaut `true`) active `/restart` ainsi que les actions d’outil de redémarrage de la gateway.
|
||||
- `commands.ownerAllowFrom` (facultatif) définit la liste d’autorisation explicite du propriétaire pour les surfaces de commande/d’outil 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 d’autorisation par fournisseur pour l’autorisation des commandes. Lorsqu’elle est configurée, c’est la
|
||||
seule source d’autorisation pour les commandes et directives (`commands.useAccessGroups` ainsi que les listes d’autorisation/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 d’autorisation/politiques pour les commandes lorsque `commands.allowFrom` n’est pas défini.
|
||||
seule source d’autorisation pour les commandes et directives (`commands.useAccessGroups` ainsi que les listes d’autorisation/l’association 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 d’autorisation/politiques aux commandes lorsque `commands.allowFrom` n’est 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 aujourd’hui :
|
||||
Commandes intégrées disponibles aujourd’hui :
|
||||
|
||||
- `/new [model]` démarre une nouvelle session ; `/reset` est l’alias de réinitialisation.
|
||||
- `/new [model]` démarre une nouvelle session ; `/reset` est l’alias 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 l’exécution en cours.
|
||||
- `/session idle <duration|off>` et `/session max-age <duration|off>` gèrent l’expiration 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 lorsqu’ils 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 l’expiration 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 lorsqu’ils 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 d’exé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 d’un 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é d’aide court.
|
||||
- `/commands` affiche le catalogue de commandes généré.
|
||||
- `/tools [compact|verbose]` affiche ce que l’agent actuel peut utiliser maintenant.
|
||||
- `/status` affiche l’état d’exécution, y compris l’usage/quota du fournisseur lorsqu’il est disponible.
|
||||
- `/tasks` liste les tâches d’arrière-plan actives/récentes pour la session en cours.
|
||||
- `/status` affiche l’état d’exécution, y compris l’utilisation/le quota du fournisseur lorsqu’ils sont disponibles.
|
||||
- `/tasks` liste les tâches d’arriè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 d’expé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 d’autorisation. Texte uniquement.
|
||||
- `/approve <id> <decision>` résout les demandes d’approbation d’exé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 d’approbation d’exé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 d’exé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 d’exécution.
|
||||
- `/steer <id|#> <message>` envoie une instruction à un sous-agent en cours d’exé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 d’usage 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 à l’exécution. Réservé au propriétaire. Nécessite `commands.debug: true`.
|
||||
- `/usage off|tokens|full|cost` contrôle le pied de page d’utilisation 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 lorsqu’il 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 d’activation de groupe.
|
||||
- `/send on|off|inherit` définit la politique d’envoi. Réservé au propriétaire.
|
||||
- `/bash <command>` exécute une commande shell sur l’hôte. Texte uniquement. Alias : `! <command>`. Nécessite `commands.bash: true` plus les listes d’autorisation `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 l’hôte. Texte uniquement. Alias : `! <command>`. Nécessite `commands.bash: true` ainsi que les listes d’autorisation `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 d’autres commandes slash. Commandes intégrées actuelles dans ce dépôt :
|
||||
Les plugins intégrés peuvent ajouter d’autres 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 d’appairage/configuration de l’appareil. 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 d’association/de configuration d’appareil. 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 d’autres commandes slash. Commandes int
|
||||
|
||||
### Commandes de Skills dynamiques
|
||||
|
||||
Les Skills invocables par l’utilisateur sont également exposées comme commandes slash :
|
||||
Les Skills invocables par l’utilisateur sont également exposées comme commandes slash :
|
||||
|
||||
- `/skill <name> [input]` fonctionne toujours comme point d’entré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.
|
||||
- l’enregistrement 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 l’usage 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) ; s’il n’y a aucune correspondance, le texte est traité comme corps du message.
|
||||
- Pour le détail complet de l’utilisation 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 d’usage 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 d’utilisation 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 d’exé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 l’option `inherit` de l’UI Sessions pour l’effacer 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 d’outil restent affichés lorsqu’ils sont pertinents, mais le texte d’échec détaillé n’est 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 d’outil ou des diagnostics de plugin que vous n’aviez pas l’intention d’exposer. 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 à l’exé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 l’option `inherit` de l’interface Sessions pour l’effacer 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 d’outil sont toujours affichés quand c’est pertinent, mais le texte détaillé de l’échec n’est 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 d’outil ou des diagnostics de plugin que vous n’aviez pas l’intention d’exposer. 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 l’agent est inactif, l’exécution suivante l’utilise 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 l’activité d’outil 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 d’expé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 d’expéditeurs autorisés contournent les exigences de mention.
|
||||
- **Raccourcis inline (expéditeurs autorisés uniquement) :** certaines commandes fonctionnent également lorsqu’elles 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 l’autocomplétion pour les options dynamiques (et des menus à boutons lorsque vous omettez des arguments requis). Telegram et Slack affichent un menu à boutons lorsqu’une commande prend en charge des choix et que vous omettez l’argument.
|
||||
- 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 l’activité 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 jusqu’au prochain tour utilisateur.
|
||||
- **Voie rapide :** les messages contenant uniquement une commande provenant d’expéditeurs sur liste d’autorisation sont traités immédiatement (contournent la file + le modèle).
|
||||
- **Contrôle par mention de groupe :** les messages contenant uniquement une commande provenant d’expéditeurs sur liste d’autorisation contournent les exigences de mention.
|
||||
- **Raccourcis en ligne (expéditeurs sur liste d’autorisation uniquement) :** certaines commandes fonctionnent aussi lorsqu’elles 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 d’expé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 l’autocomplétion pour les options dynamiques (et des menus à boutons lorsque vous omettez des arguments obligatoires). Telegram et Slack affichent un menu à boutons lorsqu’une commande prend en charge des choix et que vous omettez l’argument.
|
||||
|
||||
## `/tools`
|
||||
|
||||
`/tools` répond à une question d’exécution, pas à une question de configuration : **ce que cet agent peut utiliser maintenant dans
|
||||
`/tools` répond à une question d’exé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 l’agent, le canal, le fil, l’autorisation de l’expé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 d’agent, de canal, de fil, d’autorisation d’expéditeur ou de modèle peut donc
|
||||
modifier la sortie.
|
||||
- `/tools` inclut les outils réellement accessibles à l’exé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 à l’exé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 l’UI Control ou les surfaces de configuration/catalogue au lieu
|
||||
Pour l’édition du profil et des remplacements, utilisez le panneau Outils de l’interface Control ou les surfaces de configuration/catalogue au lieu
|
||||
de traiter `/tools` comme un catalogue statique.
|
||||
|
||||
## Surfaces d’usage (ce qui s’affiche où)
|
||||
## Surfaces d’utilisation (ce qui s’affiche où)
|
||||
|
||||
- **Usage/quota du fournisseur** (exemple : « Claude 80 % restants ») s’affiche dans `/status` pour le fournisseur du modèle actuel lorsque le suivi d’usage 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 l’entré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 d’usage de transcript lorsque l’instantané 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 d’exécution actif ainsi qu’un 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 l’usage.
|
||||
- **Utilisation/quota du fournisseur** (exemple : « Claude 80% left ») s’affiche dans `/status` pour le fournisseur du modèle actuel lorsque le suivi d’utilisation 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 l’entrée du modèle de chat ainsi qu’une étiquette de plan balisée par modèle.
|
||||
- Les **lignes jetons/cache** dans `/status` peuvent se rabattre sur la dernière entrée d’utilisation de la transcription lorsque l’instantané 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 à l’exécution ainsi qu’un 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/l’authentification/les endpoints**, pas l’utilisation.
|
||||
|
||||
## 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 qu’une étape Submit.
|
||||
- `/model <#>` sélectionne à partir de ce sélecteur (et préfère le fournisseur actuel lorsque c’est possible).
|
||||
- `/model status` affiche la vue détaillée, y compris le point de terminaison fournisseur configuré (`baseUrl`) et le mode API (`api`) lorsqu’ils sont disponibles.
|
||||
- `/model status` affiche la vue détaillée, y compris l’endpoint fournisseur configuré (`baseUrl`) et le mode API (`api`) lorsqu’ils 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 à l’exé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 s’appliquent immédiatement aux nouvelles lectures de configuration, mais n’écrivent **pas** dans `openclaw.json`.
|
||||
- Les remplacements s’appliquent 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 d’activer/désactiver les **lignes de trace/débogage Plugin limitées à la session** sans activer le mode verbose complet.
|
||||
`/trace` vous permet d’activer 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 l’assistant.
|
||||
- `/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 l’assistant.
|
||||
- `/trace` ne remplace pas `/debug` ; `/debug` continue de gérer les remplacements de configuration réservés à l’exé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 d’exécution décident quels transports sont réellement exécutables.
|
||||
|
||||
## Mises à jour des plugins
|
||||
## Mises à jour de plugins
|
||||
|
||||
`/plugins` permet aux opérateurs d’inspecter 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 d’inspecter les plugins découverts et d’activer/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 l’espace de travail actuel plus la configuration sur disque.
|
||||
- `/plugins enable|disable` met uniquement à jour la configuration du plugin ; cela n’installe ni ne désinstalle les plugins.
|
||||
- Après des changements d’activation/désactivation, redémarrez la Gateway pour les appliquer.
|
||||
- `/plugins list` et `/plugins show` utilisent la découverte réelle des plugins par rapport à l’espace de travail actuel ainsi qu’à la configuration sur disque.
|
||||
- `/plugins enable|disable` met uniquement à jour la configuration du plugin ; cela n’installe ni ne désinstalle les plugins.
|
||||
- Après des changements d’activation/désactivation, redémarrez la gateway pour les appliquer.
|
||||
|
||||
## Remarques sur les surfaces
|
||||
|
||||
- **Les commandes texte** s’exé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** s’exé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 l’exé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 d’arguments 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 d’arguments 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 d’arrière-plan,
|
||||
- il s’exécute comme un appel ponctuel séparé **sans outils**,
|
||||
- il utilise la session actuelle comme contexte d’arrière-plan,
|
||||
- il s’exécute comme un appel one-shot séparé **sans outils**,
|
||||
- il ne modifie pas le contexte futur de la session,
|
||||
- il n’est pas écrit dans l’historique du transcript,
|
||||
- il est livré comme résultat latéral en direct au lieu d’un message assistant normal.
|
||||
- il n’est pas écrit dans l’historique de transcription,
|
||||
- il est livré comme résultat annexe en direct au lieu d’un message normal de l’assistant.
|
||||
|
||||
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
|
||||
d’expérience utilisateur côté client.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user