@lansenger-pm/openclaw-lansenger-channel 2.5.1 → 2.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.fr.md CHANGED
@@ -17,10 +17,10 @@ Connecte OpenClaw à Lansenger — une plateforme de messagerie d'entreprise —
17
17
  - **Fichiers/Images/Vocaux** via le msgType `text` avec upload de médias
18
18
  - **Cartes d'approbation** — workflow d'approbation interactif avec mises à jour de statut en place (en attente → approuvé/refusé)
19
19
  - **Détection de langue** — détection automatique de la langue de l'utilisateur pour des réponses localisées
20
- - **Routage des messages de groupe** — détection automatique et routage vers les API groupe/privé
20
+ - **Auto-routage via msgTarget** — toutes les méthodes d'envoi routent automatiquement vers les API groupe ou DM (privé) ; pas de méthodes groupe/privé séparées
21
21
  - **@Mentions** — support @tout et @utilisateurs spécifiques dans les chats de groupe
22
22
  - **Traitement des médias entrants** — téléchargement d'images/fichiers/vocaux, détection d'extension, chemins de fichiers pour l'agent
23
- - **Révocation de messages** — révoquer les messages précédemment envoyés
23
+ - **Révocation de messages** — révoquer les messages précédemment envoyés (chatType : bot ou groupe uniquement)
24
24
  - **Démarrage automatique** — la passerelle connecte automatiquement tous les comptes de bots configurés au démarrage
25
25
  - **Zéro modification du core** — mode plugin pur, `git diff HEAD` reste INTACT
26
26
 
@@ -29,9 +29,23 @@ Connecte OpenClaw à Lansenger — une plateforme de messagerie d'entreprise —
29
29
  | msgType | Markdown | @mention | Pièces jointes |
30
30
  |-------------|----------|----------|-----------------|
31
31
  | `text` | ✗ | ✓ | ✓ |
32
- | `formatText`| ✓ | | ✗ |
32
+ | `formatText`| ✓ | ✓ (reminder)| ✗ |
33
33
 
34
- **Stratégie par défaut** : utiliser `formatText` en priorité pour les réponses Markdown. Revenir à `text` pour les pièces jointes.
34
+ **Stratégie par défaut** : utiliser `formatText` en priorité pour les réponses Markdown. Revenir à `text` pour les pièces jointes. Les deux types supportent @mention via le paramètre `reminder` — inclure « @姓名 » dans le texte pour les mentions.
35
+
36
+ ## Outils de l'agent (v2.5.1)
37
+
38
+ | Outil | Description |
39
+ |-------|-------------|
40
+ | `lansenger_send_text` | Envoyer un message text ou formatText (Markdown par défaut) |
41
+ | `lansenger_send_file` | Envoyer fichier/image/vidéo/audio (workspace ou chemin externe) |
42
+ | `lansenger_send_image_url` | Envoyer une image par URL |
43
+ | `lansenger_send_link_card` | Envoyer une carte de prévisualisation de lien |
44
+ | `lansenger_send_app_card` | Envoyer une carte interactive/approbation |
45
+ | `lansenger_send_app_articles` | Envoyer une carte multi-articles |
46
+ | `lansenger_update_dynamic_card` | Mettre à jour le statut d'une carte dynamique |
47
+ | `lansenger_revoke_message` | Révoquer un message précédemment envoyé |
48
+ | `lansenger_query_groups` | Interroger les groupes disponibles |
35
49
 
36
50
  ## Installation rapide
37
51
 
@@ -254,7 +268,7 @@ openclaw config set bindings '[{"agentId":"main","match":{"channel":"lansenger",
254
268
  | `linkCard` | Carte de prévisualisation de lien enrichi | `sendLinkCard()` | Sortant |
255
269
  | `i18nAppCard` | Réservé pour usage futur ; carte 5 langues | `sendI18nAppCard()` | Sortant |
256
270
  | `appCard` | Cartes d'approbation avec mises à jour de statut | `sendAppCard()` | Sortant |
257
- | `appArticles` | Carte multi-articles | `sendAppArticles()` | Sortant |
271
+ | `appArticles` | Carte multi-articles (champ : `summary`, pas `description`) | `sendAppArticles()` | Sortant |
258
272
  | `position` | Message de localisation/position | — | Entrant uniquement |
259
273
  | `card` | Message de carte générique | — | Entrant uniquement |
260
274
  | `sticker` | Message sticker/emoji | — | Entrant uniquement |
@@ -276,6 +290,20 @@ Le plugin supporte les cartes d'approbation :
276
290
  - La langue détectée automatiquement détermine la langue de la carte (chinois ou anglais)
277
291
  - **i18nAppCard** (5 langues) est réservé pour un usage futur et n'est pas utilisé pour l'approbation
278
292
 
293
+ ## Notes importantes
294
+
295
+ - **Pas de chat staff** — Lansenger n'a que les chats de groupe et DM (privé) ; il n'existe pas de concept de « chat staff ».
296
+ - **Révocation chatType** — uniquement `bot` ou `group` ; pas de chatType `staff`.
297
+ - **Pas de sysMsg sur révocation** — l'API accepte `sysMsg` mais ne l'affiche pas.
298
+ - **Pas de deleteMessage** — l'API retourne l'erreur 10000 ; la suppression n'est pas disponible.
299
+ - **appArticles** — utilise le champ `summary` (pas `description`).
300
+ - **linkCard** — `description`, `iconLink`, `fromName`, `fromIconLink` sont requis (chaînes vides comme valeurs par défaut).
301
+ - **Auto-routage msgTarget** — toutes les méthodes d'envoi routent automatiquement ; pas d'appels API groupe/privé séparés.
302
+ - **URL passerelle par environnement** — e.g. `https://apigw.lx.qianxin.com` pour 奇安信, `https://open.e.lanxin.cn/open/apigw` pour Lansenger standard.
303
+ - **reminder** — champ optionnel dans formatText ; recommandé dans les chats de groupe. Inclure « @姓名 » dans le texte pour les mentions.
304
+ - **Média** — les balises `<media>` fonctionnent pour les fichiers du workspace ; pour les chemins externes, utilisez `lansenger_send_file`.
305
+ - **openclaw skill/message lansenger** — ces commandes CLI n'existent PAS ; utilisez les outils de l'agent.
306
+
279
307
  ## Développement
280
308
 
281
309
  ### Compilation
@@ -335,13 +363,25 @@ Le plugin inclut une reconnexion automatique avec un backoff exponentiel (2s, 5s
335
363
  ### formatText vs text
336
364
 
337
365
  - Utilisez `formatText` pour les réponses Markdown (par défaut)
338
- - Utilisez `text` pour les @mentions ou pièces jointes
339
- - Pour les deux, envoyez deux messages distincts
366
+ - Utilisez `text` pour les pièces jointes (pas de Markdown)
367
+ - Les deux types supportent @mention via `reminder` — inclure « @姓名 » dans le texte pour les mentions
368
+ - Pour Markdown ET fichier, envoyez deux messages distincts
340
369
 
341
370
  ### Échec de mise à jour dynamique de carte
342
371
 
343
372
  Les mises à jour de statut d'approbation utilisent le format DynamicMsg appCard. La méthode `updateCardStatus()` gère cela automatiquement.
344
373
 
374
+ ## Journal des modifications
375
+
376
+ - **v2.5.1** — Retour sysMsg (non affiché) et deleteMessage (API 10000) ; revoke chatType bot/group uniquement
377
+ - **v2.5.0** — Ajout sysMsg pour revoke, outil deleteMessage (retiré en 2.5.1)
378
+ - **v2.4.0** — Correction assemblage message : wrap() exclut msgType de msgData ; appArticles msgType/summary/tableau plat ; linkCard champs requis
379
+ - **v2.3.0** — Suppression sendGroupText/sendGroupFormatText ; routage via msgTarget
380
+ - **v2.2.8** — Correction livraison MEDIA (delivery.deliver traite payload.mediaUrls) ; correction reconnect WS
381
+ - **v2.2.5** — Correction uploadMedia endpoint, stop key, validation statut, sendCard params dynamiques
382
+ - **v2.2.0** — Ajout 9 outils agent avec contracts.tools + toolMetadata
383
+ - **v2.0.0** — Migration kernel canal, version initiale
384
+
345
385
  ## Licence
346
386
 
347
387
  MIT — voir [LICENSE](LICENSE).
package/README.md CHANGED
@@ -15,10 +15,10 @@ Lansenger (蓝信) channel plugin for OpenClaw — WebSocket inbound, HTTP API o
15
15
  - **File/Image/Voice attachments** via `text` msgType with media upload
16
16
  - **Approval cards** — interactive approval workflow with in-place status updates (pending → approved/denied)
17
17
  - **Language detection** — auto-detect user language from messages for localized responses
18
- - **Group message routing** — auto-detect and route to group/private chat APIs
18
+ - **Auto-routing via msgTarget** — all send methods auto-route to group chat or DM (private chat); no separate group/private methods
19
19
  - **@Mentions** — support @all and @specific users in group chats
20
20
  - **Inbound media processing** — download images/files/voice, detect extension, provide file paths to agent
21
- - **Message revocation** — revoke previously sent messages
21
+ - **Message revocation** — revoke previously sent messages (chatType: bot or group only)
22
22
  - **Auto-start** — gateway automatically connects all configured bot accounts on boot
23
23
  - **Zero core modification** — pure plugin mode, `git diff HEAD` stays PRISTINE
24
24
 
@@ -27,9 +27,23 @@ Lansenger (蓝信) channel plugin for OpenClaw — WebSocket inbound, HTTP API o
27
27
  | msgType | Markdown | @mention | Attachments |
28
28
  |-------------|----------|----------|-------------|
29
29
  | `text` | ✗ | ✓ | ✓ |
30
- | `formatText`| ✓ | | ✗ |
30
+ | `formatText`| ✓ | ✓ (reminder) | ✗ |
31
31
 
32
- **Default strategy**: Use `formatText` first for Markdown replies. Fall back to `text` for attachments.
32
+ **Default strategy**: Use `formatText` first for Markdown replies. Fall back to `text` for attachments. Both `formatText` and `text` support @mention via `reminder` param — include "@姓名" in text content when mentioning.
33
+
34
+ ## Agent Tools (v2.5.1)
35
+
36
+ | Tool | Description |
37
+ |------|-------------|
38
+ | `lansenger_send_text` | Send text or formatText message (Markdown by default) |
39
+ | `lansenger_send_file` | Send file/image/video/voice from workspace or external path |
40
+ | `lansenger_send_image_url` | Send image by URL |
41
+ | `lansenger_send_link_card` | Send rich link preview card |
42
+ | `lansenger_send_app_card` | Send interactive/approval card |
43
+ | `lansenger_send_app_articles` | Send multi-article card |
44
+ | `lansenger_update_dynamic_card` | Update dynamic card status in-place |
45
+ | `lansenger_revoke_message` | Revoke a previously sent message |
46
+ | `lansenger_query_groups` | Query available groups |
33
47
 
34
48
  ## Quick Install
35
49
 
@@ -253,7 +267,7 @@ openclaw config set bindings '[{"agentId":"main","match":{"channel":"lansenger",
253
267
  | `linkCard` | Rich link preview card | `sendLinkCard()` | Outbound |
254
268
  | `i18nAppCard` | Reserved for future use; 5-language card | `sendI18nAppCard()` | Outbound |
255
269
  | `appCard` | Approval cards with status updates | `sendAppCard()` | Outbound |
256
- | `appArticles` | Multi-article card | `sendAppArticles()` | Outbound |
270
+ | `appArticles` | Multi-article card (field: `summary`, not `description`) | `sendAppArticles()` | Outbound |
257
271
  | `position` | Location/position message | — | Inbound-only |
258
272
  | `card` | Generic card message | — | Inbound-only |
259
273
  | `sticker` | Sticker/emoji message | — | Inbound-only |
@@ -275,6 +289,20 @@ The plugin supports approval workflow cards:
275
289
  - Language detection: the card is sent in the user's detected language (Chinese or English)
276
290
  - **i18nAppCard** (5-language) is reserved for future use but not currently used for approval
277
291
 
292
+ ## Important Notes
293
+
294
+ - **No staff chat** — Lansenger has group chat and DM (private chat) only; there is no "staff chat" concept.
295
+ - **Revoke chatType** — only `bot` or `group`; no `staff` chatType.
296
+ - **No sysMsg on revoke** — the API accepts `sysMsg` but does not display it.
297
+ - **No deleteMessage** — the API returns error 10000; deletion is unavailable.
298
+ - **appArticles** — uses `summary` field (not `description`).
299
+ - **linkCard** — `description`, `iconLink`, `fromName`, `fromIconLink` are required (empty strings as defaults).
300
+ - **msgTarget auto-routing** — all send methods route automatically; no separate group/private API calls.
301
+ - **Gateway URL per-environment** — e.g. `https://apigw.lx.qianxin.com` for 奇安信, `https://open.e.lanxin.cn/open/apigw` for standard Lansenger.
302
+ - **reminder** — optional in formatText; recommended in group chat. Include "@姓名" in text when mentioning.
303
+ - **Media** — `<media>` tags work for workspace files; for external paths use `lansenger_send_file`.
304
+ - **openclaw skill/message lansenger** — these CLI commands do NOT exist; use agent tools instead.
305
+
278
306
  ## Development
279
307
 
280
308
  ### Build
@@ -334,13 +362,25 @@ The plugin includes automatic reconnection with exponential backoff (2s, 5s, 10s
334
362
  ### formatText vs text
335
363
 
336
364
  - Use `formatText` for Markdown replies (default)
337
- - Use `text` for @mentions or attachments
338
- - For both, send two separate messages
365
+ - Use `text` for attachments (no Markdown)
366
+ - Both support @mention via `reminder` — include "@姓名" in text content when mentioning
367
+ - For both Markdown AND a file, send two separate messages
339
368
 
340
369
  ### Dynamic card update fails
341
370
 
342
371
  Approval status updates use the DynamicMsg appCard format. The `updateCardStatus()` method handles this automatically.
343
372
 
373
+ ## Changelog
374
+
375
+ - **v2.5.1** — Rollback sysMsg (not displayed) and deleteMessage (API 10000); revoke chatType bot/group only
376
+ - **v2.5.0** — Add sysMsg for revoke, deleteMessage tool (rolled back in 2.5.1)
377
+ - **v2.4.0** — Fix message body assembly: wrap() excludes msgType from msgData; appArticles correct msgType/summary/flat array; linkCard add missing required params
378
+ - **v2.3.0** — Remove legacy sendGroupText/sendGroupFormatText; all routing via msgTarget
379
+ - **v2.2.8** — Fix MEDIA tag delivery (delivery.deliver processes payload.mediaUrls); fix WS reconnect state
380
+ - **v2.2.5** — Fix uploadMedia endpoint, stop key, status validation, sendCard dynamic params
381
+ - **v2.2.0** — Add 9 agent tools with contracts.tools + toolMetadata in manifest
382
+ - **v2.0.0** — Channel kernel migration, initial release
383
+
344
384
  ## License
345
385
 
346
386
  MIT — see [LICENSE](LICENSE).
package/README.zhHans.md CHANGED
@@ -17,10 +17,10 @@
17
17
  - **文件/图片/语音附件** — 通过 `text` 消息类型上传媒体
18
18
  - **审批卡片** — 交互式审批流程,支持原地状态更新(待审批 → 已批准/已拒绝)
19
19
  - **语言检测** — 自动检测用户语言,提供本地化响应
20
- - **群消息路由**自动检测并路由到群聊/私聊 API
20
+ - **msgTarget 自动路由** 所有发送方法自动路由到群聊或私聊(DM)API;无需单独的群聊/私聊方法
21
21
  - **@提及** — 支持群聊中 @所有人 和 @指定用户
22
22
  - **入站媒体处理** — 下载图片/文件/语音,检测文件扩展名,向代理提供文件路径
23
- - **消息撤回** — 撤回已发送的消息
23
+ - **消息撤回** — 撤回已发送的消息(chatType 仅支持 bot 和 group)
24
24
  - **自动启动** — 网关启动时自动连接所有已配置的机器人账户
25
25
  - **零核心修改** — 纯插件模式,`git diff HEAD` 保持纯净
26
26
 
@@ -29,9 +29,23 @@
29
29
  | msgType | Markdown | @提及 | 附件 |
30
30
  |-------------|----------|-------|------|
31
31
  | `text` | ✗ | ✓ | ✓ |
32
- | `formatText`| ✓ | | ✗ |
32
+ | `formatText`| ✓ | ✓ (reminder) | ✗ |
33
33
 
34
- **默认策略**:优先使用 `formatText` 发送 Markdown 回复。附件使用 `text` 回退。
34
+ **默认策略**:优先使用 `formatText` 发送 Markdown 回复。附件使用 `text` 回退。两种类型均支持 @mention(通过 `reminder` 参数)—提及用户时在文本中包含"@姓名"。
35
+
36
+ ## 代理工具(v2.5.1)
37
+
38
+ | 工具 | 说明 |
39
+ |------|------|
40
+ | `lansenger_send_text` | 发送文本或 formatText 消息(默认 Markdown) |
41
+ | `lansenger_send_file` | 发送文件/图片/视频/语音(工作区或外部路径) |
42
+ | `lansenger_send_image_url` | 通过 URL 发送图片 |
43
+ | `lansenger_send_link_card` | 发送富链接预览卡片 |
44
+ | `lansenger_send_app_card` | 发送交互/审批卡片 |
45
+ | `lansenger_send_app_articles` | 发送多文章卡片 |
46
+ | `lansenger_update_dynamic_card` | 原地更新动态卡片状态 |
47
+ | `lansenger_revoke_message` | 撤回已发送的消息 |
48
+ | `lansenger_query_groups` | 查询可用群组 |
35
49
 
36
50
  ## 快速安装
37
51
 
@@ -253,7 +267,7 @@ openclaw config set bindings '[{"agentId":"main","match":{"channel":"lansenger",
253
267
  | `linkCard` | 富链接预览卡片 | `sendLinkCard()` | 出站 |
254
268
  | `i18nAppCard` | 保留供未来使用;5 语言卡片 | `sendI18nAppCard()` | 出站 |
255
269
  | `appCard` | 审批卡片(支持状态更新) | `sendAppCard()` | 出站 |
256
- | `appArticles` | 多文章卡片(图文卡片) | `sendAppArticles()` | 出站 |
270
+ | `appArticles` | 多文章卡片(字段为 `summary`,不是 `description`) | `sendAppArticles()` | 出站 |
257
271
  | `position` | 位置/定位消息 | — | 仅入站 |
258
272
  | `card` | 通用卡片消息 | — | 仅入站 |
259
273
  | `sticker` | 贴纸/表情消息 | — | 仅入站 |
@@ -275,6 +289,20 @@ openclaw config set bindings '[{"agentId":"main","match":{"channel":"lansenger",
275
289
  - 根据用户检测到的语言发送中文或英文卡片
276
290
  - **i18nAppCard**(5 语言)保留供未来使用,当前不用于审批
277
291
 
292
+ ## 重要说明
293
+
294
+ - **无员工聊天概念** — 蓝信只有群聊和私聊(DM),没有"员工聊天"类型。
295
+ - **撤回 chatType** — 仅支持 `bot` 和 `group`,没有 `staff` 类型。
296
+ - **撤回无 sysMsg** — API 接受 `sysMsg` 但不会显示。
297
+ - **无 deleteMessage** — API 返回错误码 10000,删除消息不可用。
298
+ - **appArticles** — 使用 `summary` 字段(不是 `description`)。
299
+ - **linkCard** — `description`、`iconLink`、`fromName`、`fromIconLink` 为必填字段(可用空字符串作为默认值)。
300
+ - **msgTarget 自动路由** — 所有发送方法自动路由,无需单独调用群聊/私聊 API。
301
+ - **网关 URL 因环境不同** — 如 `https://apigw.lx.qianxin.com` 用于奇安信部署,`https://open.e.lanxin.cn/open/apigw` 用于标准蓝信。
302
+ - **reminder** — formatText 中可选字段;群聊中建议使用。提及用户时在文本中包含"@姓名"。
303
+ - **媒体标签** — `<media>` 标签适用于工作区文件;外部路径请使用 `lansenger_send_file`。
304
+ - **openclaw skill/message lansenger** — 这些 CLI 命令不存在;请使用代理工具。
305
+
278
306
  ## 开发
279
307
 
280
308
  ### 构建
@@ -334,13 +362,25 @@ openclaw-lansenger-channel/
334
362
  ### formatText vs text
335
363
 
336
364
  - 使用 `formatText` 发送 Markdown 回复(默认)
337
- - 使用 `text` 发送 @提及或附件
338
- - 两者都需要时,发送两条独立消息
365
+ - 使用 `text` 发送附件(无 Markdown)
366
+ - 两种类型均支持 @mention(通过 `reminder`)—提及时在文本中包含"@姓名"
367
+ - 需要 Markdown 和附件时,发送两条独立消息
339
368
 
340
369
  ### 动态卡片更新失败
341
370
 
342
371
  审批状态更新使用 DynamicMsg appCard 格式,`updateCardStatus()` 方法自动处理。
343
372
 
373
+ ## 更新日志
374
+
375
+ - **v2.5.1** — 回滚 sysMsg(不显示)和 deleteMessage(API 10000);撤回 chatType 仅 bot/group
376
+ - **v2.5.0** — 添加撤回 sysMsg、deleteMessage 工具(2.5.1 已回滚)
377
+ - **v2.4.0** — 修复消息体组装:wrap() 从 msgData 中剥离 msgType;appArticles 正确 msgType/summary/平铺数组;linkCard 补全必须字段
378
+ - **v2.3.0** — 移除遗留 sendGroupText/sendGroupFormatText;全部通过 msgTarget 路由
379
+ - **v2.2.8** — 修复 MEDIA 标签投递(delivery.deliver 处理 payload.mediaUrls);修复 WS 重连状态
380
+ - **v2.2.5** — 修复 uploadMedia 端点、stop key、状态校验、sendCard 动态参数
381
+ - **v2.2.0** — 添加 9 个 agent 工具及 contracts.tools + toolMetadata
382
+ - **v2.0.0** — 渠道内核迁移,初始发布
383
+
344
384
  ## 许可证
345
385
 
346
386
  MIT — 详情见 [LICENSE](LICENSE)。
package/README.zhHant.md CHANGED
@@ -17,10 +17,10 @@
17
17
  - **檔案/圖片/語音附件**——透過 `text` msgType 上傳媒體
18
18
  - **審批卡片**——互動式審批流程,支援原地狀態更新(待審批 → 已通過/已拒絕)
19
19
  - **語言偵測**——自動偵測使用者語言,提供本地化回應
20
- - **群組訊息路由**——自動偵測並路由至群組/私聊 API
20
+ - **msgTarget 自動路由**——所有傳送方法自動路由至群組聊天或私聊(DM)API;無需分別的群組/私聊方法
21
21
  - **@提及**——支援群組聊天中 @所有人 和 @指定使用者
22
22
  - **入站媒體處理**——下載圖片/檔案/語音,偵測副檔名,向代理提供檔案路徑
23
- - **訊息撤回**——撤回已傳送的訊息
23
+ - **訊息撤回**——撤回已傳送的訊息(chatType 僅支援 bot 與 group)
24
24
  - **自動啟動**——閘道啟動時自動連接所有已設定的機器人帳戶
25
25
  - **零核心修改**——純插件模式,`git diff HEAD` 保持 PRISTINE
26
26
 
@@ -29,9 +29,23 @@
29
29
  | msgType | Markdown | @提及 | 附件 |
30
30
  |-------------|----------|-------|------|
31
31
  | `text` | ✗ | ✓ | ✓ |
32
- | `formatText`| ✓ | | ✗ |
32
+ | `formatText`| ✓ | ✓ (reminder) | ✗ |
33
33
 
34
- **預設策略**:優先使用 `formatText` 傳送 Markdown 回覆。附件使用 `text` 回退。
34
+ **預設策略**:優先使用 `formatText` 傳送 Markdown 回覆。附件使用 `text` 回退。兩種類型均支援 @mention(透過 `reminder` 參數)—提及使用者時在文字中包含「@姓名」。
35
+
36
+ ## 代理工具(v2.5.1)
37
+
38
+ | 工具 | 說明 |
39
+ |------|------|
40
+ | `lansenger_send_text` | 傳送文字或 formatText 訊息(預設 Markdown) |
41
+ | `lansenger_send_file` | 傳送檔案/圖片/影片/語音(工作區或外部路徑) |
42
+ | `lansenger_send_image_url` | 透過 URL 傳送圖片 |
43
+ | `lansenger_send_link_card` | 傳送富連結預覽卡片 |
44
+ | `lansenger_send_app_card` | 傳送互動/審批卡片 |
45
+ | `lansenger_send_app_articles` | 傳送多文章卡片 |
46
+ | `lansenger_update_dynamic_card` | 原地更新動態卡片狀態 |
47
+ | `lansenger_revoke_message` | 撤回已傳送的訊息 |
48
+ | `lansenger_query_groups` | 查詢可用群組 |
35
49
 
36
50
  ## 快速安裝
37
51
 
@@ -254,7 +268,7 @@ openclaw config set bindings '[{"agentId":"main","match":{"channel":"lansenger",
254
268
  | `linkCard` | 富連結預覽卡片 | `sendLinkCard()` | 出站 |
255
269
  | `i18nAppCard` | 保留供未來使用;5 語言卡片 | `sendI18nAppCard()` | 出站 |
256
270
  | `appCard` | 審批卡片(支援狀態更新) | `sendAppCard()` | 出站 |
257
- | `appArticles` | 多文章卡片 | `sendAppArticles()` | 出站 |
271
+ | `appArticles` | 多文章卡片(欄位為 `summary`,不是 `description`) | `sendAppArticles()` | 出站 |
258
272
  | `position` | 位置/定位訊息 | — | 僅入站 |
259
273
  | `card` | 通用卡片訊息 | — | 僅入站 |
260
274
  | `sticker` | 貼紙/表情訊息 | — | 僅入站 |
@@ -276,6 +290,20 @@ openclaw config set bindings '[{"agentId":"main","match":{"channel":"lansenger",
276
290
  - 根據使用者偵測到的語言傳送中文或英文卡片
277
291
  - **i18nAppCard**(5 語言)保留供未來使用,目前不用於審批
278
292
 
293
+ ## 重要說明
294
+
295
+ - **無員工聊天概念**——藍信僅有群組聊天與私聊(DM),沒有「員工聊天」類型。
296
+ - **撤回 chatType**——僅支援 `bot` 與 `group`,沒有 `staff` 類型。
297
+ - **撤回無 sysMsg**——API 接受 `sysMsg` 但不會顯示。
298
+ - **無 deleteMessage**——API 回傳錯誤碼 10000,刪除訊息不可用。
299
+ - **appArticles**——使用 `summary` 欄位(不是 `description`)。
300
+ - **linkCard**——`description`、`iconLink`、`fromName`、`fromIconLink` 為必填欄位(可用空字串作為預設值)。
301
+ - **msgTarget 自動路由**——所有傳送方法自動路由,無需分別呼叫群組/私聊 API。
302
+ - **閘道 URL 因環境不同**——如 `https://apigw.lx.qianxin.com` 用於奇安信部署,`https://open.e.lanxin.cn/open/apigw` 用於標準藍信。
303
+ - **reminder**——formatText 中可選欄位;群組聊天中建議使用。提及使用者時在文字中包含「@姓名」。
304
+ - **媒體標籤**——`<media>` 標籤適用於工作區檔案;外部路徑請使用 `lansenger_send_file`。
305
+ - **openclaw skill/message lansenger**——這些 CLI 命令不存在;請使用代理工具。
306
+
279
307
  ## 開發
280
308
 
281
309
  ### 建置
@@ -335,13 +363,25 @@ openclaw-lansenger-channel/
335
363
  ### formatText vs text
336
364
 
337
365
  - 使用 `formatText` 傳送 Markdown 回覆(預設)
338
- - 使用 `text` 傳送 @提及或附件
366
+ - 使用 `text` 傳送附件(無 Markdown)
367
+ - 兩種類型均支援 @mention(透過 `reminder`)—提及時在文字中包含「@姓名」
339
368
  - 兩者都需要時,傳送兩條獨立訊息
340
369
 
341
370
  ### 動態卡片更新失敗
342
371
 
343
372
  審批狀態更新使用 DynamicMsg appCard 格式,`updateCardStatus()` 方法自動處理。
344
373
 
374
+ ## 更新日誌
375
+
376
+ - **v2.5.1** — 回滾 sysMsg(不顯示)和 deleteMessage(API 10000);撤回 chatType 僅 bot/group
377
+ - **v2.5.0** — 新增撤回 sysMsg、deleteMessage 工具(2.5.1 已回滾)
378
+ - **v2.4.0** — 修復消息體組裝:wrap() 從 msgData 剝離 msgType;appArticles 正確 msgType/summary/平鋪數組;linkCard 補全必填字段
379
+ - **v2.3.0** — 移除遺留 sendGroupText/sendGroupFormatText;全部通過 msgTarget 路由
380
+ - **v2.2.8** — 修復 MEDIA 標籤投遞(delivery.deliver 處理 payload.mediaUrls);修復 WS 重連狀態
381
+ - **v2.2.5** — 修復 uploadMedia 端點、stop key、狀態校驗、sendCard 動態參數
382
+ - **v2.2.0** — 新增 9 個 agent 工具及 contracts.tools + toolMetadata
383
+ - **v2.0.0** — 渠道核心遷移,初始發佈
384
+
345
385
  ## 授權條款
346
386
 
347
387
  MIT——詳見 [LICENSE](LICENSE)。
@@ -17,10 +17,10 @@
17
17
  - **檔案/圖片/語音附件** — 透過 `text` msgType 上傳媒體
18
18
  - **審批卡片**——互動式審批流程,支援原地狀態更新(待審批 → 已通過/已拒絕)
19
19
  - **語言偵測** — 自動偵測使用者語言,提供本地化回應
20
- - **群組訊息路由**自動偵測並路由至群組/私聊 API
20
+ - **msgTarget 自動路由** 所有發送方法自動路由至群組聊天或私聊(DM)API;無需分別的群組/私聊方法
21
21
  - **@提及** — 支援群組聊天中 @所有人 和 @指定使用者
22
22
  - **入站媒體處理** — 下載圖片/檔案/語音,偵測副檔名,向代理提供檔案路徑
23
- - **訊息撤回** — 撤回已發送的訊息
23
+ - **訊息撤回** — 撤回已發送的訊息(chatType 僅支援 bot 與 group)
24
24
  - **自動啟動** — 網關啟動時自動連接所有已設定的機械人帳戶
25
25
  - **零核心修改** — 純插件模式,`git diff HEAD` 保持 PRISTINE
26
26
 
@@ -29,9 +29,23 @@
29
29
  | msgType | Markdown | @提及 | 附件 |
30
30
  |-------------|----------|-------|------|
31
31
  | `text` | ✗ | ✓ | ✓ |
32
- | `formatText`| ✓ | | ✗ |
32
+ | `formatText`| ✓ | ✓ (reminder) | ✗ |
33
33
 
34
- **預設策略**:優先使用 `formatText` 發送 Markdown 回覆。附件使用 `text` 回退。
34
+ **預設策略**:優先使用 `formatText` 發送 Markdown 回覆。附件使用 `text` 回退。兩種類型均支援 @mention(透過 `reminder` 參數)—提及使用者時在文字中包含「@姓名」。
35
+
36
+ ## 代理工具(v2.5.1)
37
+
38
+ | 工具 | 說明 |
39
+ |------|------|
40
+ | `lansenger_send_text` | 發送文字或 formatText 訊息(預設 Markdown) |
41
+ | `lansenger_send_file` | 發送檔案/圖片/影片/語音(工作區或外部路徑) |
42
+ | `lansenger_send_image_url` | 透過 URL 發送圖片 |
43
+ | `lansenger_send_link_card` | 發送富連結預覽卡片 |
44
+ | `lansenger_send_app_card` | 發送互動/審批卡片 |
45
+ | `lansenger_send_app_articles` | 發送多文章卡片 |
46
+ | `lansenger_update_dynamic_card` | 原地更新動態卡片狀態 |
47
+ | `lansenger_revoke_message` | 撤回已發送的訊息 |
48
+ | `lansenger_query_groups` | 查詢可用群組 |
35
49
 
36
50
  ## 快速安裝
37
51
 
@@ -254,7 +268,7 @@ openclaw config set bindings '[{"agentId":"main","match":{"channel":"lansenger",
254
268
  | `linkCard` | 富連結預覽卡片 | `sendLinkCard()` | 出站 |
255
269
  | `i18nAppCard` | 保留供未來使用;5 語言卡片 | `sendI18nAppCard()` | 出站 |
256
270
  | `appCard` | 審批卡片(支援狀態更新) | `sendAppCard()` | 出站 |
257
- | `appArticles` | 多文章卡片 | `sendAppArticles()` | 出站 |
271
+ | `appArticles` | 多文章卡片(欄位為 `summary`,不是 `description`) | `sendAppArticles()` | 出站 |
258
272
  | `position` | 位置/定位訊息 | — | 僅入站 |
259
273
  | `card` | 通用卡片訊息 | — | 僅入站 |
260
274
  | `sticker` | 貼紙/表情訊息 | — | 僅入站 |
@@ -276,6 +290,20 @@ openclaw config set bindings '[{"agentId":"main","match":{"channel":"lansenger",
276
290
  - 根據使用者偵測到的語言發送中文或英文卡片
277
291
  - **i18nAppCard**(5 語言)保留供未來使用,目前不用於審批
278
292
 
293
+ ## 重要說明
294
+
295
+ - **無員工聊天概念** — 藍信僅有群組聊天與私聊(DM),沒有「員工聊天」類型。
296
+ - **撤回 chatType** — 僅支援 `bot` 與 `group`,沒有 `staff` 類型。
297
+ - **撤回無 sysMsg** — API 接受 `sysMsg` 但不會顯示。
298
+ - **無 deleteMessage** — API 回傳錯誤碼 10000,刪除訊息不可用。
299
+ - **appArticles** — 使用 `summary` 欄位(不是 `description`)。
300
+ - **linkCard** — `description`、`iconLink`、`fromName`、`fromIconLink` 為必填欄位(可用空字串作為預設值)。
301
+ - **msgTarget 自動路由** — 所有發送方法自動路由,無需分別呼叫群組/私聊 API。
302
+ - **網關 URL 因環境不同** — 如 `https://apigw.lx.qianxin.com` 用於奇安信部署,`https://open.e.lanxin.cn/open/apigw` 用於標準藍信。
303
+ - **reminder** — formatText 中可選欄位;群組聊天中建議使用。提及使用者時在文字中包含「@姓名」。
304
+ - **媒體標籤** — `<media>` 標籤適用於工作區檔案;外部路徑請使用 `lansenger_send_file`。
305
+ - **openclaw skill/message lansenger** — 這些 CLI 命令不存在;請使用代理工具。
306
+
279
307
  ## 開發
280
308
 
281
309
  ### 建置
@@ -335,7 +363,8 @@ openclaw-lansenger-channel/
335
363
  ### formatText vs text
336
364
 
337
365
  - 使用 `formatText` 發送 Markdown 回覆(預設)
338
- - 使用 `text` 發送 @提及或附件
366
+ - 使用 `text` 發送附件(無 Markdown)
367
+ - 兩種類型均支援 @mention(透過 `reminder`)—提及時在文字中包含「@姓名」
339
368
  - 兩者都需要時,發送兩條獨立訊息
340
369
 
341
370
  ### 動態卡片更新失敗
package/dist/src/tools.js CHANGED
@@ -267,7 +267,7 @@ export function registerLansengerTools(api) {
267
267
  api.registerTool((ctx) => ({
268
268
  name: "lansenger_revoke_message",
269
269
  label: "Lansenger Revoke Message",
270
- description: "Revoke previously sent Lansenger (蓝信) messages. Shows a 'revoked' system message to the recipient. For group chat, senderId is required.",
270
+ description: "Revoke previously sent Lansenger (蓝信) messages. The recipient sees a 'message revoked' notification from the platform. For group chat, senderId is required.",
271
271
  parameters: RevokeMessageSchema,
272
272
  async execute(_toolCallId, params) {
273
273
  const messageIds = params.messageIds;
@@ -283,9 +283,6 @@ export function registerLansengerTools(api) {
283
283
  return jsonResult({ success: result.success });
284
284
  },
285
285
  }), { name: "lansenger_revoke_message" });
286
- api.registerTool((ctx) => ({
287
- name: "lansenger_send_link_card",
288
- }), { name: "lansenger_delete_message" });
289
286
  api.registerTool((ctx) => ({
290
287
  name: "lansenger_send_link_card",
291
288
  label: "Lansenger Send Link Card",
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lansenger-pm/openclaw-lansenger-channel",
3
- "version": "2.5.1",
3
+ "version": "2.5.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lansenger-messaging
3
- version: 2.3.0
3
+ version: 2.5.2
4
4
  category: communication
5
5
  description: How to communicate effectively on Lansenger (蓝信) — message types, formatting rules, media, cards, approvals, and pitfalls
6
6
  trigger: When the current session channel is lansenger, or when you need to send a message, file, image, card, or approval via Lansenger
@@ -34,15 +34,21 @@ Lansenger has two outbound text types that cannot be combined:
34
34
  ┌──────────────┬──────────────┬──────────────┬──────────────┐
35
35
  │ Type │ Markdown │ @mention │ Attachments │
36
36
  ├──────────────┼──────────────┼──────────────┤──────────────┤
37
- │ formatText │ ✓ (default) │ │ ✗ │
37
+ │ formatText │ ✓ (default) │ ✓ (reminder)│ ✗ │
38
38
  │ text │ ✗ │ ✓ │ ✓ │
39
39
  └──────────────┴──────────────┴──────────────┴──────────────┘
40
40
  ```
41
41
 
42
+ > **reminder** is the newer API parameter for @mention in formatText. It works on newer Lansenger versions; older versions silently accept it without showing a notification. The plugin auto-falls back: if the API rejects reminder, it retries without it. When using reminder, always include "@姓名" in the text content so the mention is visible regardless of API version.
43
+
42
44
  ### What this means for you
43
45
 
44
46
  - **Normal replies** → just write Markdown. It's automatically sent as formatText.
45
- - **@mention is optional, but recommended in group chat** → In group chat, @mention the person you're replying to so they know the message is directed at them. When using reminder, include "@姓名" in the text. Example: `"@张三 明天开会"` with `reminderUserIds: ["staffId-of-张三"]`. Old API silently accepts reminder but won't show notification — the "@姓名" in text ensures clarity regardless.
47
+ - **@mention in group chat is recommended** → When replying to someone in a group, @mention them so they know the message is directed at them. Both `formatText` and `text` support @mention via the `reminder` parameter:
48
+ - **formatText**: `sendFormatText` accepts optional `reminder` with `{ all: boolean, userIds: string[] }`. Always include "@姓名" in the text content. Example: `"@张三 明天开会"` with `reminder: { userIds: ["staffId-of-张三"] }`. If the API version doesn't support reminder, the plugin auto-retries without it.
49
+ - **text**: `sendText` / `lansenger_send_text` also supports `reminderAll` and `reminderUserIds` params. Same rule: include "@姓名" in text content.
50
+ - **Critical rule**: When using reminder, you MUST include "@姓名" in the message text. Without it, the mention notification may not be meaningful to the recipient. The API sends the push notification via `reminder`, but the visible "@姓名" in text ensures clarity regardless of API version.
51
+ - **reminder is optional** — you don't have to use it every time, but in group chat it's recommended so the mentioned person actually sees your reply.
46
52
  - **Need to attach a file/image/video** → Markdown won't work. Use `lansenger_send_file`. If you need both formatting AND a file, send the Markdown reply first, then call `lansenger_send_file` separately.
47
53
  - **Never put raw Markdown in a plain-text message** — it displays as ugly source code to the user.
48
54
 
@@ -114,7 +120,7 @@ Downloads the image first, then uploads and sends. For local files, use `lanseng
114
120
  A rich link preview card. Requires `title` + `link`. Optional: `description`, `iconLink`, `pcLink`, `fromName`, `fromIconLink`.
115
121
 
116
122
  ### AppArticles (`lansenger_send_app_articles`)
117
- Multi-article card (图文卡片). Each article needs `imgUrl`, `title`, `url`. Optional: `description` (article summary), `pcUrl` (PC link).
123
+ Multi-article card (图文卡片). Each article needs `imgUrl`, `title`, `url`. Optional: `summary` (article summary/摘要 — NOT `description`), `pcUrl` (PC link).
118
124
 
119
125
  ### AppCard (`lansenger_send_app_card`)
120
126
  Rich formatted card (应用卡片). Supports div-style HTML in body fields (color, font-size, text-align, text-indent).
@@ -195,9 +201,9 @@ openclaw pairing approve lansenger <code>
195
201
 
196
202
  - **Markdown is default** — write normally, it renders automatically
197
203
  - **Never put Markdown in a plain-text message** — displays as raw source code
198
- - **@mention in group chat is recommended** — when replying to someone in a group, @mention them so they know the message is for them; include "@姓名" in the text
204
+ - **@mention via `reminder` works in both formatText and text** — `sendFormatText` supports optional `reminder: { all, userIds }` (auto-fallback if API rejects). `sendText`/`lansenger_send_text` also has `reminderAll`/`reminderUserIds`. Always include "@姓名" in text content when mentioning — the reminder param sends the push, but "@姓名" ensures the mention is visible in the message itself.
199
205
  - **MEDIA: tags work for workspace files** — for non-workspace paths (Documents, /tmp, etc.), use `lansenger_send_file` instead
200
- - **AppArticles uses `description` not `summary`** — the article description field is called `description`, not `summary`
206
+ - **AppArticles uses `summary` not `description`** — the article summary field is called `summary`, not `description`. Using `description` will cause the field to be ignored by the API.
201
207
  - **`text-indent` MUST have units** — bare `0` causes empty API response; use `0em`
202
208
  - **Dynamic cards require `headStatusInfo`** — auto-filled if omitted, but explicit is better
203
209
  - **Gateway URL is per-environment** — the plugin uses whatever `apiGatewayUrl` is configured (e.g. `https://apigw.lx.qianxin.com` for 奇安信 environments, or `https://open.e.lanxin.cn/open/apigw` for standard Lansenger). All API endpoints are appended to this base URL. Do NOT assume the default gateway — always use the configured value.