@lansenger-pm/openclaw-lansenger-channel 3.2.12 → 3.3.1
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 +12 -19
- package/README.md +13 -20
- package/README.zhHans.md +12 -20
- package/README.zhHant.md +14 -22
- package/README.zhHantHK.md +14 -22
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/src/runtime.js +1 -1
- package/dist/src/runtime.js.map +1 -1
- package/dist/src/setup-wizard.js +7 -11
- package/dist/src/setup-wizard.js.map +1 -1
- package/dist/src/tools.js +408 -0
- package/dist/src/tools.js.map +1 -0
- package/openclaw.plugin.json +47 -1
- package/package.json +16 -10
- package/skills/lansenger-messaging/SKILL.md +8 -9
package/README.fr.md
CHANGED
|
@@ -35,45 +35,36 @@ Connecte OpenClaw à Lansenger — une plateforme de messagerie d'entreprise —
|
|
|
35
35
|
|
|
36
36
|
## Outils de l'agent & CLI
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Les outils agent sont **intégrés dans ce plugin** — ils sont toujours disponibles lorsque le canal est configuré et en cours d'exécution. La CLI est une alternative optionnelle via bash.
|
|
39
39
|
|
|
40
|
-
Les messages peuvent être envoyés via les **
|
|
40
|
+
Les messages peuvent être envoyés via les **outils agent** (intégrés) ou les **commandes CLI** (alternative optionnelle) :
|
|
41
41
|
|
|
42
42
|
| Méthode | Installation | Utilisation |
|
|
43
43
|
|---------|-------------|-------------|
|
|
44
|
-
| **
|
|
45
|
-
|
|
|
44
|
+
| **Outils agent** (intégrés) | Inclus dans `@lansenger-pm/openclaw-lansenger-channel` | `lansenger_send_file`, `lansenger_send_text`, etc. |
|
|
45
|
+
| Commandes CLI (optionnel) | `pipx install lansenger-cli` (`pip install lansenger-cli` comme alternative) | `lansenger message send-file`, `lansenger message send-text`, etc. |
|
|
46
46
|
|
|
47
|
-
>
|
|
47
|
+
> **Les outils agent sont toujours disponibles** lorsque le canal est configuré et la passerelle en cours d'exécution — aucun plugin séparé nécessaire. Les commandes CLI sont une alternative optionnelle pour les environnements où l'accès bash est préféré ; elles nécessitent `lansenger-cli` (Python).
|
|
48
48
|
|
|
49
49
|
## Installation et Configuration
|
|
50
50
|
|
|
51
51
|
### Installation recommandée
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
# 1. Installer le plugin de canal
|
|
54
|
+
# 1. Installer le plugin de canal (inclut les outils agent)
|
|
55
55
|
openclaw plugins install @lansenger-pm/openclaw-lansenger-channel
|
|
56
56
|
|
|
57
|
-
# 2.
|
|
58
|
-
# Option A : CLI Python (principal — fonctionne toujours via bash)
|
|
59
|
-
pipx install lansenger-cli # ou : pip install lansenger-cli
|
|
60
|
-
# Option B : Plugin outils agent OpenClaw (repli — nécessite injection passerelle)
|
|
61
|
-
openclaw plugins install @lansenger-pm/openclaw-lansenger-tools
|
|
62
|
-
|
|
63
|
-
# 3. Activer les plugins (si non auto-activés)
|
|
57
|
+
# 2. Activer le plugin (si non auto-activé)
|
|
64
58
|
openclaw config set plugins.entries.lansenger.enabled true
|
|
65
|
-
openclaw config set plugins.entries.lansenger-tools.enabled true # si Option B
|
|
66
59
|
|
|
67
|
-
#
|
|
60
|
+
# 3. Configurer le canal (assistant interactif)
|
|
68
61
|
openclaw channels add
|
|
69
62
|
|
|
70
|
-
#
|
|
63
|
+
# 4. Redémarrer la passerelle
|
|
71
64
|
openclaw gateway restart
|
|
72
65
|
```
|
|
73
66
|
|
|
74
|
-
> **
|
|
75
|
-
|
|
76
|
-
Les `peerDependencies` de `package.json` avertiront lors de npm install si le plugin tools est absent. L'assistant de configuration vous rappelle également de l'installer.
|
|
67
|
+
> **Optionnel** : Installer `lansenger-cli` pour une alternative CLI : `pipx install lansenger-cli`.
|
|
77
68
|
|
|
78
69
|
> **Passerelle personnalisée** : pour les déploiements entreprise (ex. 奇安信), configurez `apiGatewayUrl` dans `openclaw.json` ou via les variables d'environnement après la configuration — voir [Configuration optionnelle](#configuration-optionnelle).
|
|
79
70
|
|
|
@@ -340,6 +331,7 @@ openclaw-lansenger-channel/
|
|
|
340
331
|
│ ├── client.ts # Client API Lansenger (WS, HTTP, médias)
|
|
341
332
|
│ ├── channel.ts # Plugin de canal OpenClaw
|
|
342
333
|
│ ├── channel.test.ts # Tests du plugin de canal
|
|
334
|
+
│ ├── tools.ts # Définitions des outils agent (10 outils intégrés)
|
|
343
335
|
│ └── runtime.ts # Runtime passerelle (méthodes, handler entrant)
|
|
344
336
|
├── skills/
|
|
345
337
|
│ └── lansenger-messaging/
|
|
@@ -379,6 +371,7 @@ Les mises à jour de statut d'approbation utilisent le format DynamicMsg appCard
|
|
|
379
371
|
|
|
380
372
|
## Journal des modifications
|
|
381
373
|
|
|
374
|
+
- **v3.3.0** — Fusion du plugin tools dans le plugin canal ; outils agent désormais intégrés (pas d'installation séparée) ; suppression des peerDependencies sur `@lansenger-pm/openclaw-lansenger-tools`
|
|
382
375
|
- **v3.2.10** — Alerte au démarrage si `group:plugins` absent de l'allowlist ; `configWrites` dans le schema de config canal ; plugin compagnon via `globalThis.__lansenger_channel`
|
|
383
376
|
- **v3.1** — Wizard multi-compte ; alignement dmPolicy (dmSecurity→dmPolicy + paired→pairing) ; prompts bilingues ; shouldPrompt skip steps configurés ; migration config multi-compte
|
|
384
377
|
- **v3.0** — Ajout `lansenger_send_format_text` (Markdown + @mention) ; réécriture SKILL.md ; correction headStatusInfo description+colour
|
package/README.md
CHANGED
|
@@ -33,16 +33,16 @@ Lansenger (蓝信) channel plugin for OpenClaw — WebSocket inbound, HTTP API o
|
|
|
33
33
|
|
|
34
34
|
## Agent Tools & CLI
|
|
35
35
|
|
|
36
|
-
**
|
|
36
|
+
Agent tools are **built into this plugin** — they are always available when the channel is configured and running. CLI is an optional alternative that works via bash.
|
|
37
37
|
|
|
38
|
-
Messages can be sent via **
|
|
38
|
+
Messages can be sent via **agent tools** (built-in) or **CLI commands** (optional alternative):
|
|
39
39
|
|
|
40
40
|
| Method | How to install | Usage |
|
|
41
41
|
|--------|---------------|-------|
|
|
42
|
-
| **
|
|
43
|
-
|
|
|
42
|
+
| **Agent tools** (built-in) | Included in `@lansenger-pm/openclaw-lansenger-channel` | `lansenger_send_file`, `lansenger_send_text`, etc. |
|
|
43
|
+
| CLI commands (optional) | `pipx install lansenger-cli` (`pip install lansenger-cli` as alternative) | `lansenger message send-file`, `lansenger message send-text`, etc. |
|
|
44
44
|
|
|
45
|
-
>
|
|
45
|
+
> **Agent tools are always available** when the channel is configured and the gateway is running — no separate plugin needed. CLI commands are an optional alternative for environments where bash access is preferred; they require `lansenger-cli` (Python).
|
|
46
46
|
|
|
47
47
|
| Tool | Description |
|
|
48
48
|
|------|-------------|
|
|
@@ -63,29 +63,20 @@ Tools are also available via CLI: `lansenger message send-text`, `lansenger mess
|
|
|
63
63
|
### Recommended setup
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
# 1. Install the channel plugin
|
|
66
|
+
# 1. Install the channel plugin (includes agent tools)
|
|
67
67
|
openclaw plugins install @lansenger-pm/openclaw-lansenger-channel
|
|
68
68
|
|
|
69
|
-
# 2.
|
|
70
|
-
# Option A: Python CLI (primary — always works via bash)
|
|
71
|
-
pipx install lansenger-cli # or: pip install lansenger-cli
|
|
72
|
-
# Option B: OpenClaw agent tools plugin (fallback — requires Gateway injection)
|
|
73
|
-
openclaw plugins install @lansenger-pm/openclaw-lansenger-tools
|
|
74
|
-
|
|
75
|
-
# 3. Enable the plugins (if not auto-enabled)
|
|
69
|
+
# 2. Enable the plugin (if not auto-enabled)
|
|
76
70
|
openclaw config set plugins.entries.lansenger.enabled true
|
|
77
|
-
openclaw config set plugins.entries.lansenger-tools.enabled true # if using Option B
|
|
78
71
|
|
|
79
|
-
#
|
|
72
|
+
# 3. Configure the channel (interactive wizard)
|
|
80
73
|
openclaw channels add
|
|
81
74
|
|
|
82
|
-
#
|
|
75
|
+
# 4. Restart the gateway
|
|
83
76
|
openclaw gateway restart
|
|
84
77
|
```
|
|
85
78
|
|
|
86
|
-
> **
|
|
87
|
-
|
|
88
|
-
The `package.json` `peerDependencies` will warn during npm install if the tools plugin is missing. The setup wizard also reminds you to install it.
|
|
79
|
+
> **Optional**: Install `lansenger-cli` for an alternative CLI-based messaging path: `pipx install lansenger-cli`.
|
|
89
80
|
|
|
90
81
|
> **Custom gateway**: For enterprise deployments (e.g. 奇安信), set `apiGatewayUrl` in `openclaw.json` or environment after configuration — see [Optional Configuration](#optional-configuration).
|
|
91
82
|
|
|
@@ -315,7 +306,7 @@ The plugin supports approval workflow cards:
|
|
|
315
306
|
- **reminder** — optional in formatText; recommended in group chat. Include "@姓名" in text when mentioning.
|
|
316
307
|
- **Media** — `<media>` tags work for workspace files; for external paths use `lansenger_send_file`.
|
|
317
308
|
- **openclaw skill/message lansenger** — these CLI commands do NOT exist; use agent tools instead.
|
|
318
|
-
- **Agent tools** — agent tools (`lansenger_send_*`)
|
|
309
|
+
- **Agent tools** — agent tools (`lansenger_send_*`) are built into the channel plugin — always available when the channel is configured and running. CLI commands (`lansenger message send-*`) require `pipx install lansenger-cli` and are an optional alternative.
|
|
319
310
|
|
|
320
311
|
## Development
|
|
321
312
|
|
|
@@ -346,6 +337,7 @@ openclaw-lansenger-channel/
|
|
|
346
337
|
│ ├── client.ts # Lansenger API client (WS, HTTP, media)
|
|
347
338
|
│ ├── channel.ts # OpenClaw channel plugin
|
|
348
339
|
│ ├── channel.test.ts # Channel plugin tests
|
|
340
|
+
│ ├── tools.ts # Agent tool definitions (10 built-in tools)
|
|
349
341
|
│ └── runtime.ts # Gateway runtime (methods, inbound handler)
|
|
350
342
|
├── skills/
|
|
351
343
|
│ └── lansenger-messaging/
|
|
@@ -385,6 +377,7 @@ Approval status updates use the DynamicMsg appCard format. The `updateCardStatus
|
|
|
385
377
|
|
|
386
378
|
## Changelog
|
|
387
379
|
|
|
380
|
+
- **v3.3.0** — Merge tools plugin into channel plugin; agent tools now built-in (no separate install); remove peerDependencies on `@lansenger-pm/openclaw-lansenger-tools`
|
|
388
381
|
- **v3.2.10** — Startup warning for missing `group:plugins` in tool allowlist; `configWrites` in channel config schema; companion plugin cross-runtime state via `globalThis.__lansenger_channel`
|
|
389
382
|
- **v3.1** — Multi-account setup wizard; dmPolicy/dmSecurity→dmPolicy+pairing (OpenClaw standard); bilingual prompts; credential shouldPrompt skips configured steps; clean multi-account config migration
|
|
390
383
|
- **v3.0** — Add `lansenger_send_format_text` tool (Markdown + @mention); rewrite SKILL.md; fix headStatusInfo description+colour semantics
|
package/README.zhHans.md
CHANGED
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
|
|
36
36
|
## 代理工具 & CLI
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
代理工具**已内置于此插件** — 频道配置并运行时始终可用。CLI 为可选替代方案,通过 bash 调用。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
消息可以通过**代理工具**(内置)或**CLI 命令**(可选替代)发送:
|
|
41
41
|
|
|
42
42
|
| 方式 | 安装方法 | 使用 |
|
|
43
43
|
|------|----------|------|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
44
|
+
| **代理工具**(内置) | 已包含在 `@lansenger-pm/openclaw-lansenger-channel` | `lansenger_send_file`、`lansenger_send_text` 等 |
|
|
45
|
+
| CLI 命令(可选) | `pipx install lansenger-cli`(`pip install lansenger-cli` 为替代) | `lansenger message send-file`、`lansenger message send-text` 等 |
|
|
46
46
|
|
|
47
|
-
>
|
|
47
|
+
> **代理工具始终可用** — 频道配置且网关运行时即可使用,无需单独安装插件。CLI 命令为可选替代方案,适合偏好 bash 调用的场景;需安装 `lansenger-cli`(Python)。
|
|
48
48
|
|
|
49
49
|
| 工具 | 说明 |
|
|
50
50
|
|------|------|
|
|
@@ -65,29 +65,20 @@
|
|
|
65
65
|
### 推荐安装流程
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
# 1.
|
|
68
|
+
# 1. 安装频道插件(包含代理工具)
|
|
69
69
|
openclaw plugins install @lansenger-pm/openclaw-lansenger-channel
|
|
70
70
|
|
|
71
|
-
# 2.
|
|
72
|
-
# 方案 A:Python CLI(主要 — 始终可通过 bash 调用)
|
|
73
|
-
pipx install lansenger-cli # 或:pip install lansenger-cli
|
|
74
|
-
# 方案 B:OpenClaw 代理工具插件(备选 — 需网关注入)
|
|
75
|
-
openclaw plugins install @lansenger-pm/openclaw-lansenger-tools
|
|
76
|
-
|
|
77
|
-
# 3. 启用插件(如未自动启用)
|
|
71
|
+
# 2. 启用插件(如未自动启用)
|
|
78
72
|
openclaw config set plugins.entries.lansenger.enabled true
|
|
79
|
-
openclaw config set plugins.entries.lansenger-tools.enabled true # 使用方案 B 时
|
|
80
73
|
|
|
81
|
-
#
|
|
74
|
+
# 3. 配置频道(交互式向导)
|
|
82
75
|
openclaw channels add
|
|
83
76
|
|
|
84
|
-
#
|
|
77
|
+
# 4. 重启网关
|
|
85
78
|
openclaw gateway restart
|
|
86
79
|
```
|
|
87
80
|
|
|
88
|
-
>
|
|
89
|
-
|
|
90
|
-
`package.json` 的 `peerDependencies` 在 npm install 时会警告缺失 tools 插件。设置向导也会提醒安装。
|
|
81
|
+
> **可选**:安装 `lansenger-cli` 作为 CLI 替代方案:`pipx install lansenger-cli`。
|
|
91
82
|
|
|
92
83
|
> **自定义网关**:企业私有化部署(如奇安信)需在配置后通过 `openclaw.json` 或环境变量设置 `apiGatewayUrl` — 见[可选配置](#可选配置)。
|
|
93
84
|
|
|
@@ -354,6 +345,7 @@ openclaw-lansenger-channel/
|
|
|
354
345
|
│ ├── client.ts # 蓝信 API 客户端(WS、HTTP、媒体)
|
|
355
346
|
│ ├── channel.ts # OpenClaw 频道插件
|
|
356
347
|
│ ├── channel.test.ts # 频道插件测试
|
|
348
|
+
│ ├── tools.ts # 代理工具定义(10 个内置工具)
|
|
357
349
|
│ └── runtime.ts # 网关运行时(方法、入站处理器)
|
|
358
350
|
├── skills/
|
|
359
351
|
│ └── lansenger-messaging/
|
|
@@ -393,7 +385,7 @@ Agent 路由由 OpenClaw 的 `bindings[]` 配置管理——见[多 Agent 路由
|
|
|
393
385
|
|
|
394
386
|
## 更新日志
|
|
395
387
|
|
|
396
|
-
- **v3.
|
|
388
|
+
- **v3.3.0** — 合并 tools 插件至频道插件;代理工具现已内置(无需单独安装);移除 `@lansenger-pm/openclaw-lansenger-tools` 的 peerDependencies
|
|
397
389
|
- **v3.1** — 多账号设置向导;dmPolicy 对齐 OpenClaw 标准(dmSecurity→dmPolicy + paired→pairing);中英双语提示文案;凭证 shouldPrompt 跳过已配置步骤;多账号配置迁移清理
|
|
398
390
|
- **v3.0** — 新增 `lansenger_send_format_text` 工具(Markdown + @提及);重写 SKILL.md;修正 headStatusInfo description+colour 语义
|
|
399
391
|
- **v2.10** — appCard font-size px→pt 自动转换;sendImageUrl 错误分类;工具注册日志
|
package/README.zhHant.md
CHANGED
|
@@ -35,45 +35,36 @@
|
|
|
35
35
|
|
|
36
36
|
## 代理工具 & CLI
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
代理工具**已內建於此插件** — 頻道設定並執行時始終可用。CLI 為可選替代方案,透過 bash 呼叫。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
訊息可以透過**代理工具**(內建)或**CLI 命令**(可選替代)傳送:
|
|
41
41
|
|
|
42
42
|
| 方式 | 安裝方法 | 使用 |
|
|
43
43
|
|------|----------|------|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
44
|
+
| **代理工具**(內建) | 已包含在 `@lansenger-pm/openclaw-lansenger-channel` | `lansenger_send_file`、`lansenger_send_text` 等 |
|
|
45
|
+
| CLI 命令(可選) | `pipx install lansenger-cli`(`pip install lansenger-cli` 為替代) | `lansenger message send-file`、`lansenger message send-text` 等 |
|
|
46
46
|
|
|
47
|
-
>
|
|
47
|
+
> **代理工具始終可用** — 頻道設定且閘道執行時即可使用,無需單獨安裝插件。CLI 命令為可選替代方案,適合偏好 bash 呼叫的場景;需安裝 `lansenger-cli`(Python)。
|
|
48
48
|
|
|
49
49
|
## 安裝與設定
|
|
50
50
|
|
|
51
51
|
### 建議安裝流程
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
# 1.
|
|
54
|
+
# 1. 安裝頻道插件(包含代理工具)
|
|
55
55
|
openclaw plugins install @lansenger-pm/openclaw-lansenger-channel
|
|
56
56
|
|
|
57
|
-
# 2.
|
|
58
|
-
# 方案 A:Python CLI(主要 — 始終可透過 bash 呼叫)
|
|
59
|
-
pipx install lansenger-cli # 或:pip install lansenger-cli
|
|
60
|
-
# 方案 B:OpenClaw 代理工具插件(備選 — 需閘道注入)
|
|
61
|
-
openclaw plugins install @lansenger-pm/openclaw-lansenger-tools
|
|
62
|
-
|
|
63
|
-
# 3. 啟用插件(如未自動啟用)
|
|
57
|
+
# 2. 啟用插件(如未自動啟用)
|
|
64
58
|
openclaw config set plugins.entries.lansenger.enabled true
|
|
65
|
-
openclaw config set plugins.entries.lansenger-tools.enabled true # 使用方案 B 時
|
|
66
59
|
|
|
67
|
-
#
|
|
60
|
+
# 3. 配置頻道(互動式精靈)
|
|
68
61
|
openclaw channels add
|
|
69
62
|
|
|
70
|
-
#
|
|
63
|
+
# 4. 重啟閘道
|
|
71
64
|
openclaw gateway restart
|
|
72
65
|
```
|
|
73
66
|
|
|
74
|
-
>
|
|
75
|
-
|
|
76
|
-
`package.json` 的 `peerDependencies` 在 npm install 時會警告缺少 tools 插件。設定精靈也會提醒安裝。
|
|
67
|
+
> **可選**:安裝 `lansenger-cli` 作為 CLI 替代方案:`pipx install lansenger-cli`。
|
|
77
68
|
|
|
78
69
|
> **自訂閘道**:企業私有化部署(如奇安信)需在設定後透過 `openclaw.json` 或環境變數設定 `apiGatewayUrl` — 見[可選設定](#可選設定)。
|
|
79
70
|
|
|
@@ -338,8 +329,9 @@ npx tsc --noEmit
|
|
|
338
329
|
openclaw-lansenger-channel/
|
|
339
330
|
├── src/
|
|
340
331
|
│ ├── client.ts # 藍信 API 客戶端(WS、HTTP、媒體)
|
|
341
|
-
│ ├── channel.ts # OpenClaw
|
|
342
|
-
│ ├── channel.test.ts #
|
|
332
|
+
│ ├── channel.ts # OpenClaw 频道插件
|
|
333
|
+
│ ├── channel.test.ts # 频道插件測試
|
|
334
|
+
│ ├── tools.ts # 代理工具定義(10 個內建工具)
|
|
343
335
|
│ └── runtime.ts # 閘道運行時(方法、入站處理器)
|
|
344
336
|
├── skills/
|
|
345
337
|
│ └── lansenger-messaging/
|
|
@@ -379,7 +371,7 @@ Agent 路由由 OpenClaw 的 `bindings[]` 設定管理——見[多 Agent 路由
|
|
|
379
371
|
|
|
380
372
|
## 更新日誌
|
|
381
373
|
|
|
382
|
-
- **v3.
|
|
374
|
+
- **v3.3.0** — 合併 tools 插件至頻道插件;代理工具現已內建(無需單獨安裝);移除 `@lansenger-pm/openclaw-lansenger-tools` 的 peerDependencies
|
|
383
375
|
- **v3.1** — 多帳號設定精靈;dmPolicy 對齊 OpenClaw 標準(dmSecurity→dmPolicy + paired→pairing);中英雙語提示文案;憑證 shouldPrompt 跳過已設定步驟;多帳號設定遷移清理
|
|
384
376
|
- **v3.0** — 新增 `lansenger_send_format_text` 工具(Markdown + @提及);重寫 SKILL.md;修正 headStatusInfo description+colour 語義
|
|
385
377
|
- **v2.10** — appCard font-size px→pt 自動轉換;sendImageUrl 錯誤分類;工具註冊日誌
|
package/README.zhHantHK.md
CHANGED
|
@@ -35,45 +35,36 @@
|
|
|
35
35
|
|
|
36
36
|
## 代理工具 & CLI
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
代理工具**已內建於此插件** — 頻道設定並執行時始終可用。CLI 為可選替代方案,透過 bash 呼叫。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
訊息可以透過**代理工具**(內建)或**CLI 命令**(可選替代)發送:
|
|
41
41
|
|
|
42
42
|
| 方式 | 安裝方法 | 使用 |
|
|
43
43
|
|------|----------|------|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
44
|
+
| **代理工具**(內建) | 已包含在 `@lansenger-pm/openclaw-lansenger-channel` | `lansenger_send_file`、`lansenger_send_text` 等 |
|
|
45
|
+
| CLI 命令(可選) | `pipx install lansenger-cli`(`pip install lansenger-cli` 為替代) | `lansenger message send-file`、`lansenger message send-text` 等 |
|
|
46
46
|
|
|
47
|
-
>
|
|
47
|
+
> **代理工具始終可用** — 頻道設定且網關執行時即可使用,無需單獨安裝插件。CLI 命令為可選替代方案,適合偏好 bash 呼叫的場景;需安裝 `lansenger-cli`(Python)。
|
|
48
48
|
|
|
49
49
|
## 安裝與設定
|
|
50
50
|
|
|
51
51
|
### 建議安裝流程
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
# 1.
|
|
54
|
+
# 1. 安裝頻道插件(包含代理工具)
|
|
55
55
|
openclaw plugins install @lansenger-pm/openclaw-lansenger-channel
|
|
56
56
|
|
|
57
|
-
# 2.
|
|
58
|
-
# 方案 A:Python CLI(主要 — 始終可透過 bash 呼叫)
|
|
59
|
-
pipx install lansenger-cli # 或:pip install lansenger-cli
|
|
60
|
-
# 方案 B:OpenClaw 代理工具插件(備選 — 需網關注入)
|
|
61
|
-
openclaw plugins install @lansenger-pm/openclaw-lansenger-tools
|
|
62
|
-
|
|
63
|
-
# 3. 啟用插件(如未自動啟用)
|
|
57
|
+
# 2. 啟用插件(如未自動啟用)
|
|
64
58
|
openclaw config set plugins.entries.lansenger.enabled true
|
|
65
|
-
openclaw config set plugins.entries.lansenger-tools.enabled true # 使用方案 B 時
|
|
66
59
|
|
|
67
|
-
#
|
|
60
|
+
# 3. 配置頻道(互動式精靈)
|
|
68
61
|
openclaw channels add
|
|
69
62
|
|
|
70
|
-
#
|
|
63
|
+
# 4. 重啟網關
|
|
71
64
|
openclaw gateway restart
|
|
72
65
|
```
|
|
73
66
|
|
|
74
|
-
>
|
|
75
|
-
|
|
76
|
-
`package.json` 的 `peerDependencies` 在 npm install 時會警告缺少 tools 插件。設定精靈也會提醒安裝。
|
|
67
|
+
> **可選**:安裝 `lansenger-cli` 作為 CLI 替代方案:`pipx install lansenger-cli`。
|
|
77
68
|
|
|
78
69
|
> **自訂閘道**:企業私有化部署(如奇安信)需在設定後透過 `openclaw.json` 或環境變數設定 `apiGatewayUrl` — 見[可選設定](#可選設定)。
|
|
79
70
|
|
|
@@ -340,8 +331,9 @@ npx tsc --noEmit
|
|
|
340
331
|
openclaw-lansenger-channel/
|
|
341
332
|
├── src/
|
|
342
333
|
│ ├── client.ts # 藍信 API 客戶端(WS、HTTP、媒體)
|
|
343
|
-
│ ├── channel.ts # OpenClaw
|
|
344
|
-
│ ├── channel.test.ts #
|
|
334
|
+
│ ├── channel.ts # OpenClaw 频道插件
|
|
335
|
+
│ ├── channel.test.ts # 频道插件測試
|
|
336
|
+
│ ├── tools.ts # 代理工具定義(10 個內建工具)
|
|
345
337
|
│ └── runtime.ts # 網關運行時(方法、入站處理器)
|
|
346
338
|
├── skills/
|
|
347
339
|
│ └── lansenger-messaging/
|
|
@@ -381,7 +373,7 @@ Agent 路由由 OpenClaw 的 `bindings[]` 設定管理——見[多 Agent 路由
|
|
|
381
373
|
|
|
382
374
|
## 更新日誌
|
|
383
375
|
|
|
384
|
-
- **v3.
|
|
376
|
+
- **v3.3.0** — 合併 tools 插件至頻道插件;代理工具現已內建(無需單獨安裝);移除 `@lansenger-pm/openclaw-lansenger-tools` 的 peerDependencies
|
|
385
377
|
- **v3.1** — 多帳號設定精靈;dmPolicy 對齊 OpenClaw 標準(dmSecurity→dmPolicy + paired→pairing);中英雙語提示文案;憑證 shouldPrompt 跳過已設定步驟;多帳號設定遷移清理
|
|
386
378
|
- **v3.0** — 新增 `lansenger_send_format_text` 工具(Markdown + @提及);重寫 SKILL.md;修正 headStatusInfo description+colour 語義
|
|
387
379
|
- **v2.10** — appCard font-size px→pt 自動轉換;sendImageUrl 錯誤分類;工具註冊日誌
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
|
|
2
2
|
import { lansengerPlugin } from "./src/channel.js";
|
|
3
3
|
import { startLansengerGateway } from "./src/runtime.js";
|
|
4
|
+
import { registerLansengerTools } from "./src/tools.js";
|
|
4
5
|
export { resolveAccount, makeClient } from "./src/channel.js";
|
|
5
6
|
export { getRunningClient, getRunningAccount, getLastInboundChatId } from "./src/runtime.js";
|
|
6
7
|
export { LansengerClient } from "./src/client.js";
|
|
@@ -11,6 +12,7 @@ export default defineChannelPluginEntry({
|
|
|
11
12
|
plugin: lansengerPlugin,
|
|
12
13
|
registerFull(api) {
|
|
13
14
|
startLansengerGateway(api);
|
|
15
|
+
registerLansengerTools(api);
|
|
14
16
|
},
|
|
15
17
|
});
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,eAAe,wBAAwB,CAAC;IACtC,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,4DAA4D;IACzE,MAAM,EAAE,eAAe;IACvB,YAAY,CAAC,GAAG;QACd,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC"}
|
package/dist/src/runtime.js
CHANGED
|
@@ -78,7 +78,7 @@ export function startLansengerGateway(api) {
|
|
|
78
78
|
const toolsConfig = api.config.tools;
|
|
79
79
|
const alsoAllow = (toolsConfig?.alsoAllow ?? []);
|
|
80
80
|
if (!alsoAllow.some((e) => e === "group:plugins" || e === "__openclaw_default_plugin_tools__")) {
|
|
81
|
-
log.warn(`
|
|
81
|
+
log.warn(`Agent tools (lansenger_send_file, etc.) are registered by this channel plugin but may be INVISIBLE under the current tool profile.` +
|
|
82
82
|
` Add to openclaw.json: "tools": { "alsoAllow": ["group:plugins"] }` +
|
|
83
83
|
` — see https://openclaw.ai/docs/tool-policy for details.`);
|
|
84
84
|
}
|
package/dist/src/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/src/setup-wizard.js
CHANGED
|
@@ -32,9 +32,8 @@ const HELP_LINES = [
|
|
|
32
32
|
"Mobile client does NOT support viewing credentials / 移动端不支持查看凭证",
|
|
33
33
|
`Docs: ${formatDocsLink("https://open.e.lanxin.cn/docs", "lansenger")}`,
|
|
34
34
|
"",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
" Option B: pip install lansenger-cli",
|
|
35
|
+
"✅ Agent tools are included in this plugin (no separate install needed). / 代理工具已内置于此插件,无需单独安装。",
|
|
36
|
+
"CLI is an optional alternative: pip install lansenger-cli / CLI 为可选替代方案:pip install lansenger-cli",
|
|
38
37
|
];
|
|
39
38
|
function makeInspect(field, envVar) {
|
|
40
39
|
return ({ cfg, accountId }) => {
|
|
@@ -231,17 +230,14 @@ export const lansengerSetupWizard = {
|
|
|
231
230
|
}),
|
|
232
231
|
disable: (cfg) => setSetupChannelEnabled(cfg, CHANNEL, false),
|
|
233
232
|
companionNote: {
|
|
234
|
-
title: "
|
|
233
|
+
title: "Messaging Tools / 消息工具",
|
|
235
234
|
lines: [
|
|
236
|
-
"
|
|
235
|
+
"Agent tools (lansenger_send_file, etc.) are included in this plugin — no separate install needed. / 代理工具(lansenger_send_file 等)已内置于此插件,无需单独安装。",
|
|
237
236
|
"",
|
|
238
|
-
"
|
|
239
|
-
"
|
|
237
|
+
"CLI is an optional alternative (works via bash): / CLI 为可选替代方案(通过 bash 调用):",
|
|
238
|
+
" pip install lansenger-cli",
|
|
240
239
|
"",
|
|
241
|
-
"
|
|
242
|
-
" pip install lansenger-cli",
|
|
243
|
-
"",
|
|
244
|
-
"Without either, the agent can only reply via normal Markdown text. / 未安装任一时,代理只能通过普通 Markdown 文本回复。",
|
|
240
|
+
"Without CLI, the agent can still use built-in tools for files, cards, and formatted messages. / 未安装 CLI 时,代理仍可使用内置工具发送文件、卡片和格式化消息。",
|
|
245
241
|
],
|
|
246
242
|
shouldShow: () => true,
|
|
247
243
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/setup-wizard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EACL,gCAAgC,EAChC,sBAAsB,EACtB,4BAA4B,EAC5B,mCAAmC,EACnC,iBAAiB,GAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,6BAA6B,EAC7B,cAAc,GACf,MAAM,mCAAmC,CAAC;AAE3C,MAAM,OAAO,GAAG,WAAW,CAAC;AAE5B,SAAS,UAAU,CAAC,GAAmB;IACrC,OAAQ,GAAG,CAAC,QAAgC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAmB,EAAE,SAAkB;IACpE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAA2C,CAAC;IACrE,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;QAC9E,OAAO,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,EAAE,KAAK,KAAK,SAAS;gBAAE,OAAO,GAAG,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,mFAAmF;IACnF,gEAAgE;IAChE,iEAAiE;IACjE,iEAAiE;IACjE,SAAS,cAAc,CAAC,+BAA+B,EAAE,WAAW,CAAC,EAAE;IACvE,EAAE;IACF
|
|
1
|
+
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/setup-wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import * as fs from "node:fs/promises";
|
|
3
|
+
import { getRunningClient, getRunningAccount, getLastInboundChatId } from "./runtime.js";
|
|
4
|
+
function resolveTarget(to) {
|
|
5
|
+
if (to)
|
|
6
|
+
return to;
|
|
7
|
+
return getLastInboundChatId() ?? "";
|
|
8
|
+
}
|
|
9
|
+
function jsonResult(data) {
|
|
10
|
+
return { content: [{ type: "text", text: JSON.stringify(data) }] };
|
|
11
|
+
}
|
|
12
|
+
function makeToolClient() {
|
|
13
|
+
const account = getRunningAccount();
|
|
14
|
+
if (!account)
|
|
15
|
+
return null;
|
|
16
|
+
const client = getRunningClient();
|
|
17
|
+
if (!client)
|
|
18
|
+
return null;
|
|
19
|
+
return { client, account };
|
|
20
|
+
}
|
|
21
|
+
const SendFileSchema = {
|
|
22
|
+
type: "object",
|
|
23
|
+
properties: {
|
|
24
|
+
filePath: { type: "string", description: "Absolute local path to the file to send. Any path works — Documents, Desktop, workspace, /tmp, etc." },
|
|
25
|
+
caption: { type: "string", description: "Plain-text caption for the file (Markdown will NOT render on Lansenger). Optional." },
|
|
26
|
+
to: { type: "string", description: "Chat ID to send to. Leave empty to auto-detect from current session." },
|
|
27
|
+
},
|
|
28
|
+
required: ["filePath"],
|
|
29
|
+
};
|
|
30
|
+
const SendTextSchema = {
|
|
31
|
+
type: "object",
|
|
32
|
+
properties: {
|
|
33
|
+
content: { type: "string", description: "Plain text content. No Markdown support — Markdown renders automatically in normal replies. Use this for text + file attachment or text + @mentions." },
|
|
34
|
+
filePath: { type: "string", description: "Optional local file/image/video to attach. If provided, content becomes the caption." },
|
|
35
|
+
to: { type: "string", description: "Chat ID to send to. Leave empty to auto-detect from current session." },
|
|
36
|
+
reminderAll: { type: "boolean", description: "@mention all members in a group (only works in group chat, not DMs)." },
|
|
37
|
+
reminderUserIds: { type: "array", items: { type: "string" }, description: "List of user IDs to @mention (group chat only). Include '@姓名' in the message text so users can see who was mentioned." },
|
|
38
|
+
},
|
|
39
|
+
required: ["content"],
|
|
40
|
+
};
|
|
41
|
+
const SendFormatTextSchema = {
|
|
42
|
+
type: "object",
|
|
43
|
+
properties: {
|
|
44
|
+
content: { type: "string", description: "Markdown-formatted text. Renders as rich text on Lansenger. Use this when you need Markdown + @mention. Does NOT support file attachments." },
|
|
45
|
+
to: { type: "string", description: "Chat ID to send to. Leave empty to auto-detect from current session." },
|
|
46
|
+
reminderAll: { type: "boolean", description: "@mention all members in a group (group chat only)." },
|
|
47
|
+
reminderUserIds: { type: "array", items: { type: "string" }, description: "List of user IDs to @mention (group chat only). Include '@姓名' in text so the mention is visible." },
|
|
48
|
+
},
|
|
49
|
+
required: ["content"],
|
|
50
|
+
};
|
|
51
|
+
const SendImageUrlSchema = {
|
|
52
|
+
type: "object",
|
|
53
|
+
properties: {
|
|
54
|
+
imageUrl: { type: "string", description: "URL of the image to download and send. Must be directly reachable from the gateway host." },
|
|
55
|
+
caption: { type: "string", description: "Optional plain-text caption (no Markdown)." },
|
|
56
|
+
to: { type: "string", description: "Chat ID to send to. Leave empty to auto-detect from current session." },
|
|
57
|
+
},
|
|
58
|
+
required: ["imageUrl"],
|
|
59
|
+
};
|
|
60
|
+
const RevokeMessageSchema = {
|
|
61
|
+
type: "object",
|
|
62
|
+
properties: {
|
|
63
|
+
messageIds: { type: "array", items: { type: "string" }, description: "List of message IDs to revoke." },
|
|
64
|
+
chatType: { type: "string", description: "Chat type: bot (default) or group. For group, senderId is required.", default: "bot" },
|
|
65
|
+
senderId: { type: "string", description: "Sender ID (required for group chat type)." },
|
|
66
|
+
},
|
|
67
|
+
required: ["messageIds"],
|
|
68
|
+
};
|
|
69
|
+
const SendLinkCardSchema = {
|
|
70
|
+
type: "object",
|
|
71
|
+
properties: {
|
|
72
|
+
title: { type: "string", description: "Card title." },
|
|
73
|
+
link: { type: "string", description: "Card click-through link URL." },
|
|
74
|
+
description: { type: "string", description: "Card description text (API-required, defaults to empty)." },
|
|
75
|
+
iconLink: { type: "string", description: "Card icon image URL (API-required, defaults to empty)." },
|
|
76
|
+
pcLink: { type: "string", description: "PC client link URL." },
|
|
77
|
+
fromName: { type: "string", description: "Card source name (API-required, defaults to empty)." },
|
|
78
|
+
fromIconLink: { type: "string", description: "Card source icon URL (API-required, defaults to empty)." },
|
|
79
|
+
to: { type: "string", description: "Chat ID to send to. Leave empty to auto-detect from current session." },
|
|
80
|
+
},
|
|
81
|
+
required: ["title", "link"],
|
|
82
|
+
};
|
|
83
|
+
const SendAppArticlesSchema = {
|
|
84
|
+
type: "object",
|
|
85
|
+
properties: {
|
|
86
|
+
articles: {
|
|
87
|
+
type: "array",
|
|
88
|
+
items: {
|
|
89
|
+
type: "object",
|
|
90
|
+
properties: {
|
|
91
|
+
imgUrl: { type: "string", description: "Article image URL." },
|
|
92
|
+
title: { type: "string", description: "Article title." },
|
|
93
|
+
url: { type: "string", description: "Article content link URL." },
|
|
94
|
+
pcUrl: { type: "string", description: "PC client content link URL." },
|
|
95
|
+
summary: { type: "string", description: "Optional article summary (摘要). NOT 'description' — that field is ignored by the API." },
|
|
96
|
+
},
|
|
97
|
+
required: ["imgUrl", "title", "url"],
|
|
98
|
+
},
|
|
99
|
+
description: "List of article entries. Each must have imgUrl, title, url.",
|
|
100
|
+
},
|
|
101
|
+
to: { type: "string", description: "Chat ID to send to. Leave empty to auto-detect from current session." },
|
|
102
|
+
},
|
|
103
|
+
required: ["articles"],
|
|
104
|
+
};
|
|
105
|
+
const SendAppCardSchema = {
|
|
106
|
+
type: "object",
|
|
107
|
+
properties: {
|
|
108
|
+
bodyTitle: { type: "string", description: "Card body title. Supports div-style: color, font-size, text-align." },
|
|
109
|
+
headTitle: { type: "string", description: "Card header title." },
|
|
110
|
+
bodySubTitle: { type: "string", description: "Card body subtitle. Supports div-style formatting." },
|
|
111
|
+
bodyContent: { type: "string", description: "Card body content. Supports div-style formatting. Always use text-indent:0em — bare 0 causes API failure." },
|
|
112
|
+
signature: { type: "string", description: "Card signature line. Supports color." },
|
|
113
|
+
isDynamic: { type: "boolean", description: "Enable dynamic card updates (default: false). When true, card can be updated via lansenger_update_dynamic_card.", default: false },
|
|
114
|
+
headStatusInfo: {
|
|
115
|
+
type: "object",
|
|
116
|
+
properties: {
|
|
117
|
+
description: { type: "string", description: "Status text (max 30 bytes). Supports div-style for color: e.g. '<div style=\"color:#FFB116\">待审批</div>'. Plain text also works." },
|
|
118
|
+
colour: { type: "string", description: "Status color (e.g. #FFB116 amber, #198754 green, #dc3545 red)." },
|
|
119
|
+
},
|
|
120
|
+
description: "Dynamic card status info. Required when isDynamic=true. description = text supporting div-style color (max 30 bytes). colour = status dot color (hex). These are TWO different things: description text color vs dot color.",
|
|
121
|
+
},
|
|
122
|
+
fields: {
|
|
123
|
+
type: "array",
|
|
124
|
+
items: { type: "object", properties: { key: { type: "string" }, value: { type: "string" } } },
|
|
125
|
+
description: "Key-value pairs (max 10). Both support color div-style.",
|
|
126
|
+
},
|
|
127
|
+
links: {
|
|
128
|
+
type: "array",
|
|
129
|
+
items: { type: "object", properties: { title: { type: "string" }, url: { type: "string" } } },
|
|
130
|
+
description: "Link entries (max 3). Title supports color and text-align.",
|
|
131
|
+
},
|
|
132
|
+
cardLink: { type: "string", description: "Card click-through link." },
|
|
133
|
+
staffId: { type: "string", description: "Staff openId for showing sender avatar." },
|
|
134
|
+
headIconUrl: { type: "string", description: "Header icon URL." },
|
|
135
|
+
to: { type: "string", description: "Chat ID to send to. Leave empty to auto-detect from current session." },
|
|
136
|
+
},
|
|
137
|
+
required: ["bodyTitle"],
|
|
138
|
+
};
|
|
139
|
+
const UpdateDynamicCardSchema = {
|
|
140
|
+
type: "object",
|
|
141
|
+
properties: {
|
|
142
|
+
msgId: { type: "string", description: "Message ID from original lansenger_send_app_card response (required)." },
|
|
143
|
+
headStatusInfo: {
|
|
144
|
+
type: "object",
|
|
145
|
+
properties: {
|
|
146
|
+
description: { type: "string", description: "Updated status text. Supports div-style for color." },
|
|
147
|
+
colour: { type: "string", description: "Updated status color (e.g. #198754 green, #dc3545 red)." },
|
|
148
|
+
},
|
|
149
|
+
description: "Updated status info for the card header.",
|
|
150
|
+
},
|
|
151
|
+
links: {
|
|
152
|
+
type: "array",
|
|
153
|
+
items: { type: "object", properties: { title: { type: "string" }, url: { type: "string" } } },
|
|
154
|
+
description: "Updated link entries (max 3).",
|
|
155
|
+
},
|
|
156
|
+
isLastUpdate: { type: "boolean", description: "True = final state, card becomes static (default: false).", default: false },
|
|
157
|
+
},
|
|
158
|
+
required: ["msgId"],
|
|
159
|
+
};
|
|
160
|
+
const QueryGroupsSchema = {
|
|
161
|
+
type: "object",
|
|
162
|
+
properties: {
|
|
163
|
+
pageOffset: { type: "integer", description: "Page number (default: 1).", default: 1 },
|
|
164
|
+
pageSize: { type: "integer", description: "Groups per page (max 100, default: 100).", default: 100 },
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
export function registerLansengerTools(api) {
|
|
168
|
+
api.registerTool({
|
|
169
|
+
name: "lansenger_send_file",
|
|
170
|
+
description: "Send a local file as an attachment on Lansenger (蓝信). Any local file works — workspace, Documents, /tmp, etc. Do NOT use MEDIA: tags for files outside the workspace; they silently fail. Always use this tool instead.",
|
|
171
|
+
parameters: SendFileSchema,
|
|
172
|
+
async execute(_toolCallId, params) {
|
|
173
|
+
const tc = makeToolClient();
|
|
174
|
+
if (!tc)
|
|
175
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
176
|
+
const filePath = params.filePath;
|
|
177
|
+
const caption = params.caption ?? "";
|
|
178
|
+
const to = resolveTarget(params.to);
|
|
179
|
+
if (!filePath)
|
|
180
|
+
return jsonResult({ error: "filePath is required" });
|
|
181
|
+
if (!to)
|
|
182
|
+
return jsonResult({ error: "No target specified. Provide a 'to' parameter (chat ID)." });
|
|
183
|
+
const resolved = path.resolve(filePath);
|
|
184
|
+
try {
|
|
185
|
+
const stat = await fs.stat(resolved);
|
|
186
|
+
if (!stat.isFile())
|
|
187
|
+
return jsonResult({ error: `Not a file: ${filePath}` });
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return jsonResult({ error: `File not found: ${filePath}` });
|
|
191
|
+
}
|
|
192
|
+
const result = await tc.client.sendFile(to, resolved, caption);
|
|
193
|
+
return jsonResult({ success: result.success, messageId: result.messageId ?? null });
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
api.registerTool({
|
|
197
|
+
name: "lansenger_send_text",
|
|
198
|
+
description: "Send plain text on Lansenger (蓝信) with optional file attachment and @mentions. Uses msgType=text: plain text ONLY (NO Markdown). For Markdown, just write normally — it renders automatically in replies. If you need both Markdown AND a file, send Markdown first, then call this tool for the file.",
|
|
199
|
+
parameters: SendTextSchema,
|
|
200
|
+
async execute(_toolCallId, params) {
|
|
201
|
+
const tc = makeToolClient();
|
|
202
|
+
if (!tc)
|
|
203
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
204
|
+
const content = params.content ?? "";
|
|
205
|
+
const filePath = params.filePath ?? "";
|
|
206
|
+
const to = resolveTarget(params.to);
|
|
207
|
+
if (!to)
|
|
208
|
+
return jsonResult({ error: "No target specified. Provide a 'to' parameter (chat ID)." });
|
|
209
|
+
const client = tc.client;
|
|
210
|
+
if (filePath) {
|
|
211
|
+
const resolved = path.resolve(filePath);
|
|
212
|
+
try {
|
|
213
|
+
const stat = await fs.stat(resolved);
|
|
214
|
+
if (!stat.isFile())
|
|
215
|
+
return jsonResult({ error: `Not a file: ${filePath}` });
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return jsonResult({ error: `File not found: ${filePath}` });
|
|
219
|
+
}
|
|
220
|
+
const uploadResult = await client.uploadMedia(resolved);
|
|
221
|
+
if ("error" in uploadResult)
|
|
222
|
+
return jsonResult({ error: uploadResult.error });
|
|
223
|
+
const reminder = (params.reminderAll || (params.reminderUserIds && params.reminderUserIds.length > 0))
|
|
224
|
+
? { all: Boolean(params.reminderAll), userIds: params.reminderUserIds ?? [] }
|
|
225
|
+
: undefined;
|
|
226
|
+
const result = await client.sendTextWithMedia(to, content, 3, [uploadResult.mediaId], reminder);
|
|
227
|
+
return jsonResult({ success: result.success, messageId: result.messageId ?? null });
|
|
228
|
+
}
|
|
229
|
+
const reminder = (params.reminderAll || (params.reminderUserIds && params.reminderUserIds.length > 0))
|
|
230
|
+
? { all: Boolean(params.reminderAll), userIds: params.reminderUserIds ?? [] }
|
|
231
|
+
: undefined;
|
|
232
|
+
const result = await client.sendText(to, content, reminder);
|
|
233
|
+
return jsonResult({ success: result.success, messageId: result.messageId ?? null });
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
api.registerTool({
|
|
237
|
+
name: "lansenger_send_format_text",
|
|
238
|
+
description: "Send Markdown-formatted text on Lansenger (蓝信) with optional @mentions. Uses msgType=formatText: Markdown renders as rich text. Supports @mentions via reminder params. Does NOT support file attachments — for Markdown + file, write the Markdown reply normally first, then use lansenger_send_file separately.",
|
|
239
|
+
parameters: SendFormatTextSchema,
|
|
240
|
+
async execute(_toolCallId, params) {
|
|
241
|
+
const tc = makeToolClient();
|
|
242
|
+
if (!tc)
|
|
243
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
244
|
+
const content = params.content ?? "";
|
|
245
|
+
const to = resolveTarget(params.to);
|
|
246
|
+
if (!to)
|
|
247
|
+
return jsonResult({ error: "No target specified. Provide a 'to' parameter (chat ID)." });
|
|
248
|
+
const reminder = (params.reminderAll || (params.reminderUserIds && params.reminderUserIds.length > 0))
|
|
249
|
+
? { all: Boolean(params.reminderAll), userIds: params.reminderUserIds ?? [] }
|
|
250
|
+
: undefined;
|
|
251
|
+
const result = await tc.client.sendFormatText(to, content, reminder);
|
|
252
|
+
return jsonResult({ success: result.success, messageId: result.messageId ?? null });
|
|
253
|
+
},
|
|
254
|
+
});
|
|
255
|
+
api.registerTool({
|
|
256
|
+
name: "lansenger_send_image_url",
|
|
257
|
+
description: "Send an image from a URL to a Lansenger (蓝信) user or group. Downloads the image first, then uploads and sends. URL must be directly reachable from the gateway host. For local files, use lansenger_send_file instead.",
|
|
258
|
+
parameters: SendImageUrlSchema,
|
|
259
|
+
async execute(_toolCallId, params) {
|
|
260
|
+
const tc = makeToolClient();
|
|
261
|
+
if (!tc)
|
|
262
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
263
|
+
const imageUrl = params.imageUrl;
|
|
264
|
+
const caption = params.caption ?? "";
|
|
265
|
+
const to = resolveTarget(params.to);
|
|
266
|
+
if (!imageUrl)
|
|
267
|
+
return jsonResult({ error: "imageUrl is required" });
|
|
268
|
+
if (!to)
|
|
269
|
+
return jsonResult({ error: "No target specified. Provide a 'to' parameter (chat ID)." });
|
|
270
|
+
const result = await tc.client.sendImageUrl(to, imageUrl, caption);
|
|
271
|
+
return jsonResult({ success: result.success, messageId: result.messageId ?? null });
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
api.registerTool({
|
|
275
|
+
name: "lansenger_revoke_message",
|
|
276
|
+
description: "Revoke previously sent Lansenger (蓝信) messages. The recipient sees a 'message revoked' notification. For group chat, senderId is required.",
|
|
277
|
+
parameters: RevokeMessageSchema,
|
|
278
|
+
async execute(_toolCallId, params) {
|
|
279
|
+
const tc = makeToolClient();
|
|
280
|
+
if (!tc)
|
|
281
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
282
|
+
const messageIds = params.messageIds;
|
|
283
|
+
if (!messageIds || messageIds.length === 0)
|
|
284
|
+
return jsonResult({ error: "messageIds is required" });
|
|
285
|
+
const chatType = params.chatType ?? "bot";
|
|
286
|
+
const senderId = params.senderId;
|
|
287
|
+
if (chatType === "group" && !senderId) {
|
|
288
|
+
return jsonResult({ error: "chatType='group' requires senderId" });
|
|
289
|
+
}
|
|
290
|
+
const result = await tc.client.revokeMessage(messageIds, chatType, senderId);
|
|
291
|
+
return jsonResult({ success: result.success });
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
api.registerTool({
|
|
295
|
+
name: "lansenger_send_link_card",
|
|
296
|
+
description: "Send a link preview card on Lansenger (蓝信). Displays title, description, icon, and clickable link. API requires description, iconLink, fromName, fromIconLink (defaults to empty string if omitted).",
|
|
297
|
+
parameters: SendLinkCardSchema,
|
|
298
|
+
async execute(_toolCallId, params) {
|
|
299
|
+
const tc = makeToolClient();
|
|
300
|
+
if (!tc)
|
|
301
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
302
|
+
const title = params.title;
|
|
303
|
+
const link = params.link;
|
|
304
|
+
const to = resolveTarget(params.to);
|
|
305
|
+
if (!title || !link)
|
|
306
|
+
return jsonResult({ error: "title and link are required" });
|
|
307
|
+
if (!to)
|
|
308
|
+
return jsonResult({ error: "No target specified. Provide a 'to' parameter (chat ID)." });
|
|
309
|
+
const result = await tc.client.sendLinkCard(to, title, link, {
|
|
310
|
+
description: params.description ?? "",
|
|
311
|
+
iconLink: params.iconLink ?? "",
|
|
312
|
+
pcLink: params.pcLink ?? "",
|
|
313
|
+
fromName: params.fromName ?? "",
|
|
314
|
+
fromIconLink: params.fromIconLink ?? "",
|
|
315
|
+
});
|
|
316
|
+
return jsonResult({ success: result.success, messageId: result.messageId ?? null });
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
api.registerTool({
|
|
320
|
+
name: "lansenger_send_app_articles",
|
|
321
|
+
description: "Send a multi-article card (图文卡片) on Lansenger (蓝信). Each article has an image, title, and link. Article summary field is 'summary' (NOT 'description' — that field is silently ignored by the API). For a single link card, use lansenger_send_link_card instead.",
|
|
322
|
+
parameters: SendAppArticlesSchema,
|
|
323
|
+
async execute(_toolCallId, params) {
|
|
324
|
+
const tc = makeToolClient();
|
|
325
|
+
if (!tc)
|
|
326
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
327
|
+
const articles = params.articles;
|
|
328
|
+
const to = resolveTarget(params.to);
|
|
329
|
+
if (!articles || articles.length === 0)
|
|
330
|
+
return jsonResult({ error: "articles is required" });
|
|
331
|
+
if (!to)
|
|
332
|
+
return jsonResult({ error: "No target specified. Provide a 'to' parameter (chat ID)." });
|
|
333
|
+
const result = await tc.client.sendAppArticles(to, articles);
|
|
334
|
+
return jsonResult({ success: result.success, messageId: result.messageId ?? null });
|
|
335
|
+
},
|
|
336
|
+
});
|
|
337
|
+
api.registerTool({
|
|
338
|
+
name: "lansenger_send_app_card",
|
|
339
|
+
description: "Send a rich formatted card (应用卡片) on Lansenger (蓝信). Supports div-style formatting (color, font-size, text-align, text-indent). Set isDynamic=true for approval workflows. ⚠️ font-size MUST use pt units (12pt–36pt) — px causes 'invalid bodyContent'. ⚠️ text-indent MUST have units — bare 0 causes silent failure, use 0em. ⚠️ headStatusInfo: description is status TEXT (supports div-style for color, max 30 bytes), colour is the DOT/圆点 color (hex like #FFB116). These are TWO different things — text color vs dot color. ⚠️ Group chat does NOT support appCard msgType — falls back to plain text.",
|
|
340
|
+
parameters: SendAppCardSchema,
|
|
341
|
+
async execute(_toolCallId, params) {
|
|
342
|
+
const tc = makeToolClient();
|
|
343
|
+
if (!tc)
|
|
344
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
345
|
+
const bodyTitle = params.bodyTitle;
|
|
346
|
+
const to = resolveTarget(params.to);
|
|
347
|
+
if (!bodyTitle)
|
|
348
|
+
return jsonResult({ error: "bodyTitle is required" });
|
|
349
|
+
if (!to)
|
|
350
|
+
return jsonResult({ error: "No target specified. Provide a 'to' parameter (chat ID)." });
|
|
351
|
+
const cardData = {
|
|
352
|
+
bodyTitle,
|
|
353
|
+
headTitle: params.headTitle ?? "",
|
|
354
|
+
bodySubTitle: params.bodySubTitle ?? "",
|
|
355
|
+
bodyContent: params.bodyContent ?? "",
|
|
356
|
+
signature: params.signature ?? "",
|
|
357
|
+
isDynamic: params.isDynamic ?? false,
|
|
358
|
+
cardLink: params.cardLink ?? "",
|
|
359
|
+
staffId: params.staffId ?? "",
|
|
360
|
+
headIconUrl: params.headIconUrl ?? "",
|
|
361
|
+
};
|
|
362
|
+
if (params.fields)
|
|
363
|
+
cardData.fields = params.fields;
|
|
364
|
+
if (params.links)
|
|
365
|
+
cardData.links = params.links;
|
|
366
|
+
if (params.headStatusInfo)
|
|
367
|
+
cardData.headStatusInfo = params.headStatusInfo;
|
|
368
|
+
if (params.isDynamic && !params.headStatusInfo) {
|
|
369
|
+
cardData.headStatusInfo = {
|
|
370
|
+
description: '<div style="color:rgba(0,0,0,.47);text-align:left">Active</div>',
|
|
371
|
+
colour: "rgba(0,0,0,.47)",
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
const result = await tc.client.sendAppCard(to, cardData);
|
|
375
|
+
return jsonResult({ success: result.success, messageId: result.messageId ?? null });
|
|
376
|
+
},
|
|
377
|
+
});
|
|
378
|
+
api.registerTool({
|
|
379
|
+
name: "lansenger_update_dynamic_card",
|
|
380
|
+
description: "Update a dynamic appCard's status in-place on Lansenger (蓝信). The card must have been sent with isDynamic=true via lansenger_send_app_card. Use this for approval workflows: pending → approved/rejected. headStatusInfo: description supports div-style for color, colour is the status dot color.",
|
|
381
|
+
parameters: UpdateDynamicCardSchema,
|
|
382
|
+
async execute(_toolCallId, params) {
|
|
383
|
+
const tc = makeToolClient();
|
|
384
|
+
if (!tc)
|
|
385
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
386
|
+
const msgId = params.msgId;
|
|
387
|
+
if (!msgId)
|
|
388
|
+
return jsonResult({ error: "msgId is required" });
|
|
389
|
+
const result = await tc.client.updateDynamicCard(msgId, params.headStatusInfo, params.links, params.isLastUpdate ?? false);
|
|
390
|
+
return jsonResult({ success: result.success });
|
|
391
|
+
},
|
|
392
|
+
});
|
|
393
|
+
api.registerTool({
|
|
394
|
+
name: "lansenger_query_groups",
|
|
395
|
+
description: "Query the bot's group list on Lansenger (蓝信). Returns total count and group IDs. ⚠️ May return errCode=10005 'API服务无权限' on enterprise deployments where /v2/groups/fetch is not authorized. If permission denied, ask the user for group chatIds manually.",
|
|
396
|
+
parameters: QueryGroupsSchema,
|
|
397
|
+
async execute(_toolCallId, params) {
|
|
398
|
+
const tc = makeToolClient();
|
|
399
|
+
if (!tc)
|
|
400
|
+
return jsonResult({ error: "Lansenger account not configured or not running." });
|
|
401
|
+
const result = await tc.client.queryGroups(params.pageOffset ?? 1, params.pageSize ?? 100);
|
|
402
|
+
if ("error" in result)
|
|
403
|
+
return jsonResult({ error: result.error });
|
|
404
|
+
return jsonResult({ success: true, totalGroupIds: result.totalGroupIds, groupIds: result.groupIds });
|
|
405
|
+
},
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -11,11 +11,57 @@
|
|
|
11
11
|
"channelEnvVars": {
|
|
12
12
|
"lansenger": ["LANSENGER_APP_ID", "LANSENGER_APP_SECRET", "LANSENGER_API_GATEWAY_URL"]
|
|
13
13
|
},
|
|
14
|
-
|
|
14
|
+
"activation": {
|
|
15
15
|
"onStartup": true,
|
|
16
16
|
"onChannels": ["lansenger"],
|
|
17
17
|
"onConfigPaths": ["channels.lansenger"]
|
|
18
18
|
},
|
|
19
|
+
"contracts": {
|
|
20
|
+
"tools": [
|
|
21
|
+
"lansenger_send_file",
|
|
22
|
+
"lansenger_send_text",
|
|
23
|
+
"lansenger_send_format_text",
|
|
24
|
+
"lansenger_send_image_url",
|
|
25
|
+
"lansenger_revoke_message",
|
|
26
|
+
"lansenger_send_link_card",
|
|
27
|
+
"lansenger_send_app_articles",
|
|
28
|
+
"lansenger_send_app_card",
|
|
29
|
+
"lansenger_update_dynamic_card",
|
|
30
|
+
"lansenger_query_groups"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"toolMetadata": {
|
|
34
|
+
"lansenger_send_file": {
|
|
35
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
36
|
+
},
|
|
37
|
+
"lansenger_send_text": {
|
|
38
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
39
|
+
},
|
|
40
|
+
"lansenger_send_format_text": {
|
|
41
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
42
|
+
},
|
|
43
|
+
"lansenger_send_image_url": {
|
|
44
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
45
|
+
},
|
|
46
|
+
"lansenger_revoke_message": {
|
|
47
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
48
|
+
},
|
|
49
|
+
"lansenger_send_link_card": {
|
|
50
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
51
|
+
},
|
|
52
|
+
"lansenger_send_app_articles": {
|
|
53
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
54
|
+
},
|
|
55
|
+
"lansenger_send_app_card": {
|
|
56
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
57
|
+
},
|
|
58
|
+
"lansenger_update_dynamic_card": {
|
|
59
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
60
|
+
},
|
|
61
|
+
"lansenger_query_groups": {
|
|
62
|
+
"configSignals": [{ "rootPath": "channels.lansenger", "requiredAny": ["appId", "accounts"] }]
|
|
63
|
+
}
|
|
64
|
+
},
|
|
19
65
|
|
|
20
66
|
"skills": ["./skills"],
|
|
21
67
|
"channelConfigs": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lansenger-pm/openclaw-lansenger-channel",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -88,7 +88,21 @@
|
|
|
88
88
|
"description": "Lansenger API Gateway URL (default: https://open.e.lanxin.cn/open/apigw)",
|
|
89
89
|
"sensitive": false
|
|
90
90
|
}
|
|
91
|
-
]
|
|
91
|
+
],
|
|
92
|
+
"contracts": {
|
|
93
|
+
"tools": [
|
|
94
|
+
"lansenger_send_file",
|
|
95
|
+
"lansenger_send_text",
|
|
96
|
+
"lansenger_send_format_text",
|
|
97
|
+
"lansenger_send_image_url",
|
|
98
|
+
"lansenger_revoke_message",
|
|
99
|
+
"lansenger_send_link_card",
|
|
100
|
+
"lansenger_send_app_articles",
|
|
101
|
+
"lansenger_send_app_card",
|
|
102
|
+
"lansenger_update_dynamic_card",
|
|
103
|
+
"lansenger_query_groups"
|
|
104
|
+
]
|
|
105
|
+
}
|
|
92
106
|
},
|
|
93
107
|
"devDependencies": {
|
|
94
108
|
"openclaw": "^2026.5.7",
|
|
@@ -97,14 +111,6 @@
|
|
|
97
111
|
"typescript": "^6.0.3",
|
|
98
112
|
"vitest": "^4.1.6"
|
|
99
113
|
},
|
|
100
|
-
"peerDependencies": {
|
|
101
|
-
"@lansenger-pm/openclaw-lansenger-tools": ">=1.0.0"
|
|
102
|
-
},
|
|
103
|
-
"peerDependenciesMeta": {
|
|
104
|
-
"@lansenger-pm/openclaw-lansenger-tools": {
|
|
105
|
-
"optional": false
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
114
|
"dependencies": {
|
|
109
115
|
"ws": "^8.20.0"
|
|
110
116
|
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lansenger-messaging
|
|
3
|
-
description: How to communicate on Lansenger (蓝信) — send rich content via
|
|
4
|
-
metadata: {"openclaw":{"requires":{"config":["channels.lansenger"],"
|
|
3
|
+
description: How to communicate on Lansenger (蓝信) — send rich content via message tool, agent tools, CLI, approvals, and pitfalls
|
|
4
|
+
metadata: {"openclaw":{"requires":{"config":["channels.lansenger"],"cli":["lansenger"]},"primaryEnv":"LANSENGER_APP_ID"}}
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Lansenger (蓝信) Messaging — Agent Quick Reference
|
|
8
8
|
|
|
9
9
|
In a Lansenger session, **just write your reply normally** — Markdown renders automatically as formatText. No tool needed for formatted text unless you also need @mentions.
|
|
10
10
|
|
|
11
|
-
You can send messages via **CLI commands** (
|
|
11
|
+
You can send messages via **CLI commands** (alternative) or **agent tools** (built-in):
|
|
12
12
|
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
13
|
+
- **Agent tools** (PRIMARY): `lansenger_send_file`, `lansenger_send_text`, etc. — built into the channel plugin, always available when the channel is configured and running.
|
|
14
|
+
- **CLI commands** (ALTERNATIVE): `lansenger message send-file`, `lansenger message send-text`, etc. — via bash exec. Requires `pipx install lansenger-cli` or `pip install lansenger-cli`.
|
|
15
15
|
|
|
16
|
-
>
|
|
16
|
+
> 💡 **CLI is an optional alternative**: `pipx install lansenger-cli` (or `pip install lansenger-cli`). Agent tools are built into the channel plugin and available when the channel is running.
|
|
17
17
|
|
|
18
18
|
However, Markdown and file attachments are **mutually exclusive**. If you need both formatting AND a file, send the Markdown reply first, then call `lansenger_send_file` or `lansenger message send-file` separately.
|
|
19
19
|
|
|
@@ -76,7 +76,7 @@ Need to send something? Follow this decision tree:
|
|
|
76
76
|
1. Normal reply with formatting → JUST WRITE IT. No tool needed.
|
|
77
77
|
2. Markdown + @mention → `lansenger_send_format_text` or `lansenger message send-markdown`
|
|
78
78
|
3. Plain text + @mention + file → `lansenger_send_text` or `lansenger message send-text`
|
|
79
|
-
4. Send a FILE → `lansenger_send_file` or `lansenger message send-file`
|
|
79
|
+
4. Send a FILE → **`message(action=send, filePath=<path>)`** (always available, no extra permissions needed) or `lansenger_send_file` or `lansenger message send-file`
|
|
80
80
|
5. Send image from URL → `lansenger_send_image_url` or `lansenger message send-image-url`
|
|
81
81
|
6. Link card → `lansenger_send_link_card` or `lansenger message send-link-card`
|
|
82
82
|
7. Multi-article card (图文) → `lansenger_send_app_articles` or `lansenger message send-app-articles`
|
|
@@ -307,13 +307,12 @@ Status colors: #FFB116 (pending), #198754 (approved), #dc3545 (denied)
|
|
|
307
307
|
| Pitfall | Fix |
|
|
308
308
|
|--------------------------------|----------------------------------------------------------------------------------|
|
|
309
309
|
| Raw Markdown in text tool/CLI | Never do this — shows as ugly source code. Write normally for Markdown. |
|
|
310
|
-
| MEDIA: tag for file delivery | ⚠️ Currently broken for ALL files. Use `lansenger_send_file` instead. |
|
|
311
310
|
| AppArticles `description` field | Use `summary`, not `description`. `description` is silently ignored by the API. |
|
|
312
311
|
| AppCard `font-size: px` | Use `pt` units (12pt–36pt). px causes API "invalid bodyContent" error. |
|
|
313
312
|
| AppCard `text-indent: 0` | Use `0em` with unit. Bare 0 causes silent failure. |
|
|
314
313
|
| headStatusInfo div wrapping | description supports div-style for color. colour is the DOT/圆点 color. Separate. |
|
|
315
314
|
| Message too long | ~4000 character limit. Split into multiple messages. |
|
|
316
|
-
| Tools not available |
|
|
315
|
+
| Tools not available | Tools are built into the channel plugin. If unavailable, use `message(action=send, filePath=...)` for file sending (works without `group:plugins`). As a last resort, use CLI: `pipx install lansenger-cli`, then `lansenger message send-text <chatId> <content>`. |
|
|
317
316
|
| CLI command not found | Install: `pipx install lansenger-cli` or `pip install lansenger-cli`. Then verify: `lansenger --help`. |
|
|
318
317
|
| CLI wrong credentials / sends as wrong bot | **Always use `-P <appId>`** (global flag after `lansenger`). Without it, CLI uses the `default` profile which may be a different bot. Sync first: `lansenger -P <appId> config show` → if missing, run `lansenger -P <appId> config set` commands. |
|
|
319
318
|
| CLI "Credentials configured: False" | Run credential sync: `lansenger -P <appId> config set app_id <appId>` + `lansenger -P <appId> config set app_secret <appSecret>`. |
|