LINE
ZeroClaw prend en charge LINE via la Messaging API, en recevant les messages par l’intermédiaire d’un serveur webhook intégré et en répondant via la Reply API (avec repli sur la Push API lorsque le jeton de réponse a expiré).
Qui peut parler à l’agent
Les expéditeurs entrants sont filtrés par rapport au peer set résolu pour l’agent lié, issu de la configuration peer_groups à laquelle l’agent appartient. La correspondance supprime le @ initial et est insensible à la casse par rapport à l’identifiant d’expéditeur natif du canal. Un ensemble vide refuse tout le monde ; un ensemble contenant "*" accepte n’importe qui ; sinon, seuls les pairs externes listés (et les agents pairs) sont acceptés. Ceci est distinct de l’appairage de la passerelle (gateway.require_pairing), qui authentifie les clients HTTP/WebSocket, et non les expéditeurs des canaux de discussion.
Un groupe de pairs pour line définit channel à line, liste les expéditeurs autorisés dans external_peers (pour line, l’identifiant utilisateur LINE ; ["*"] accepte tout le monde), nomme éventuellement des agents pairs pour la répartition inter-agents, une liste de blocage ignore, et un output_modality (mirror, voice ou text). Consultez Peer Groups pour la référence des champs.
Où définir ce paramètre :
Tableau de bord de la passerelle
Ouvrez /config/peer_groups dans le tableau de bord web.
zerocode
Dans le volet Config, sous Peer groups.
LINE superpose dm_policy et group_policy à l’ensemble des pairs, voir Politiques d’accès ci-dessous. Lorsqu’une politique est définie sur allowlist, l’ensemble des pairs constitue la liste d’autorisation.
Prérequis
- Un compte LINE Developers Console.
- Un point de terminaison HTTPS public accessible depuis les serveurs de LINE (ou ngrok pour le développement local).
- ZeroClaw construit avec le support du canal LINE activé (la fonctionnalité
channel-linedu cratezeroclaw-channels).
Créer un bot LINE
- Connectez-vous à la console LINE Developers.
- Créez un Provider (ou utilisez-en un existant).
- Créez un nouveau canal Messaging API sous ce Provider.
- Depuis les paramètres du canal, récupérer deux valeurs :
- Jeton d’accès au canal : onglet Messaging API → Issue pour émettre un jeton de longue durée.
- Secret du canal : onglet Paramètres de base.
2. Configurer ZeroClaw
channel_access_token 🔑
Jeton d’accès au canal de longue durée (depuis la LINE Developers Console). Utilisé à la fois pour la Reply API et le mécanisme de repli vers la Push API. Utilise par défaut la variable d’environnement LINE_CHANNEL_ACCESS_TOKEN si vide.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/line et définissez le champ channels.line.<alias>.channel_access_token.
zerocode
Dans le volet Config, définissez le champ channels.line.<alias>.channel_access_token.
zeroclaw config
zeroclaw config set channels.line.<alias>.channel_access_token # entrée masquée, stockée chiffrée
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__line__<alias>__channel_access_token=
channel_secret 🔑
Secret de canal (depuis la LINE Developers Console). Utilisé pour vérifier l’en-tête X-Line-Signature des webhooks entrants. Utilise par défaut la variable d’environnement LINE_CHANNEL_SECRET si vide.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/line et définissez le champ channels.line.<alias>.channel_secret.
zerocode
Dans le volet Config, définissez le champ channels.line.<alias>.channel_secret.
zeroclaw config
zeroclaw config set channels.line.<alias>.channel_secret # entrée masquée, stockée chiffrée
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__line__<alias>__channel_secret=
dm_policy
Politique d’accès aux DM (discussions en tête-à-tête). Valeur par défaut : pairing. - open : répondre à tout le monde - pairing : exiger une procédure d’appairage unique /bind <code> lors du premier contact - allowlist : répondre uniquement aux ID utilisateur listés dans allowed_users
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/line et définissez le champ channels.line.<alias>.dm_policy.
zerocode
Dans le volet Config, définissez le champ channels.line.<alias>.dm_policy.
zeroclaw config
zeroclaw config set channels.line.<alias>.dm_policy <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__line__<alias>__dm_policy=
excluded_tools
Outils exclus de la spécification d’outils de ce canal. Lorsque ce paramètre est défini, ces outils ne sont pas exposés au modèle lors des réponses via ce canal.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/line et définissez le champ channels.line.<alias>.excluded_tools.
zerocode
Dans le panneau Config, définissez le champ channels.line.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.line.<alias>.excluded_tools <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__line__<alias>__excluded_tools=
group_policy
Politique de discussion de groupe / à plusieurs personnes. Par défaut : mention. - open : répondre à chaque message - mention : répondre uniquement en cas de @mention - disabled : ignorer tous les messages de groupe
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/line et définissez le champ channels.line.<alias>.group_policy.
zerocode
Dans le panneau Config, définissez le champ channels.line.<alias>.group_policy.
zeroclaw config
zeroclaw config set channels.line.<alias>.group_policy <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__line__<alias>__group_policy=
proxy_url
URL de proxy par canal (http, https, socks5, socks5h). Remplace le paramètre global [proxy] pour ce canal uniquement.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/line et définissez le champ channels.line.<alias>.proxy_url.
zerocode
Dans le volet Config, définissez le champ channels.line.<alias>.proxy_url.
zeroclaw config
zeroclaw config set channels.line.<alias>.proxy_url <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__line__<alias>__proxy_url=
sender_name
Nom affiché comme expéditeur dans les bulles de chat LINE. Valeur par défaut : “AI” si non défini ou vide.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/line et définissez le champ channels.line.<alias>.sender_name.
zerocode
Dans le volet Config, définissez le champ channels.line.<alias>.sender_name.
zeroclaw config
zeroclaw config set channels.line.<alias>.sender_name <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__line__<alias>__sender_name=
webhook_port
Port TCP sur lequel le serveur webhook intégré écoute. Par défaut : 8443.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/line et définissez le champ channels.line.<alias>.webhook_port.
zerocode
Dans le volet Config, définissez le champ channels.line.<alias>.webhook_port.
zeroclaw config
zeroclaw config set channels.line.<alias>.webhook_port <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__line__<alias>__webhook_port=
Configurez le canal LINE sous [channels.line.<alias>] avec au minimum channel_access_token et channel_secret. La sémantique côté utilisateur de dm_policy / group_policy est traitée à la §6 ci-dessous.
Utiliser des variables d’environnement au lieu d’un fichier de configuration
Si vous préférez ne pas stocker les informations d’identification dans le fichier de configuration, omettez les champs de jeton et exportez-les en tant que variables d’environnement :
sh
export LINE_CHANNEL_ACCESS_TOKEN="votre-jeton-d'accès-à-la-chaîne"
export LINE_CHANNEL_SECRET="your-channel-secret"
Les variables d’environnement prennent le pas sur les champs de configuration vides.
3. Exposer le point de terminaison Webhook
LINE fournit des messages en POSTant à votre URL webhook. Le serveur intégré écoute sur le webhook_port configuré.
Pour le développement local (ngrok) :
sh
ngrok http 8443
Copiez l’URL https:// fournie par ngrok (par exemple https://abc123.ngrok.io).
Pour la production : exposez le port 8443 (ou le port que vous avez configuré) derrière un proxy inverse HTTPS (nginx, Caddy, etc.) ou déployez directement sur un serveur avec un certificat TLS.
4. Enregistrez le Webhook dans la console LINE Developers.
- Accédez à votre chaîne → onglet API de messagerie → Paramètres du webhook.
- Définissez Webhook URL sur
https://your-domain.com/line/webhook. - Basculez Utiliser un webhook sur on.
- Cliquez sur Verify, LINE enverra une requête de test. ZeroClaw doit être en cours d’exécution pour que la vérification réussisse.
5. Démarrer ZeroClaw
sh
zeroclaw daemon
Signal de démarrage du journal :LINE: l'écouteur du serveur webhook à l'adresse http://0.0.0.0:8443/line/webhook
6. Politiques d’accès
DM (discussion individuelle) : dm_policy
| Valeur | Comportement |
|---|---|
pairing (par défaut) | Le bot ignore tous les messages privés tant que l’utilisateur n’a pas envoyé /bind <code>. Un code d’appariement est affiché dans les journaux de ZeroClaw au démarrage. |
open | Le bot répond immédiatement à chaque message direct (DM). |
allowlist | Le bot répond uniquement aux identifiants utilisateur LINE figurant dans l’ensemble de pairs de l’agent (voir Qui peut parler à l’agent). |
- workflow d’appariement :
- ZeroClaw affiche un code d’appariement dans les logs au démarrage.
- L’utilisateur ouvre un DM LINE avec le bot et envoie
/bind <code>. - ZeroClaw confirme l’appariement ; les messages directs suivants sont acceptés.
Discussion de groupe / à plusieurs : group_policy
| Valeur | Comportement |
|---|---|
mention (par défaut) | Le bot répond uniquement lorsqu’il est explicitement @mentionné. |
open | Le bot répond à chaque message du groupe. |
disabled | Le bot ignore complètement tous les messages de groupe. |
7. Transcription audio / messages vocaux (optionnel)
Lorsque la transcription est activée (via la configuration globale [transcription], voir la Référence de configuration), les événements de message audio de LINE sont automatiquement téléchargés depuis l’API LINE Content et transcrits avant d’être transmis au modèle.
La taille maximale d’un fichier audio est de 25 Mo. Les fichiers plus volumineux sont silencieusement ignorés avec un avertissement de journal.
8. Dépannage
| Symptôme | Cause probable | Action |
|---|---|---|
| La vérification de la ligne LINE échoue | ZeroClaw ne s’exécute pas, ou le port n’est pas accessible | Confirmez que le processus est en cours et que le port est accessible depuis Internet |
| Le bot ne répond pas aux messages directs | dm_policy = pairing et l’utilisateur n’a pas exécuté /bind | L’utilisateur doit d’abord envoyer /bind <code>, ou passer à dm_policy = open |
| Le bot ne répond pas dans les groupes | group_policy = mention et le message ne comporte pas de @mention | @mentionner le bot, ou passer à group_policy = open |
| La réponse arrive sous forme de message push | Le jeton de réponse a expiré (fenêtre d’environ 30 s) | Comportement de repli attendu, aucune action requise |
| Les messages audio sont ignorés | [transcription] non configuré | Ajouter le bloc [transcription] avec enabled = true |
Mots-clés de journal
| Condition | Log message → message de journal |
|---|---|
| Démarrage sain | LINE: serveur webhook en écoute sur http://0.0.0.0:<port>/line/webhook |
| Signature rejetée | LINE: signature X-Line-Signature invalide |
| -message direct non autorisé | LINE: Message de <userId> rejetée par la politique |
| Appairage requis | LINE: utilisateur non apparié <userId> ; ignore jusqu'à /bind |
| Audio ignoré (pas de transcription) | LINE: audio message ignored (transcription not configured) |
| La transcription audio a échoué | LINE: la transcription a échoué pour <messageId> : |
Voir aussi
- Référence de configuration : index complet des champs de configuration
- Documentation des développeurs LINE