chore(i18n): refresh uk translations
This commit is contained in:
parent
4471e8ef4d
commit
ea1a21e864
@ -2,307 +2,43 @@
|
||||
read_when:
|
||||
- Ви хочете підключити бота Feishu/Lark
|
||||
- Ви налаштовуєте канал Feishu
|
||||
summary: Огляд, можливості та конфігурація бота Feishu
|
||||
summary: Огляд бота Feishu, функції та налаштування
|
||||
title: Feishu
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T17:58:11Z"
|
||||
generated_at: "2026-04-13T10:05:23Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 4e39b6dfe3a3aa4ebbdb992975e570e4f1b5e79f3b400a555fc373a0d1889952
|
||||
source_hash: 77fcf95a3fab534ed898bc157d76bf8bdfa8bf8a918d6af84c0db19890916c1a
|
||||
source_path: channels/feishu.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Бот Feishu
|
||||
# Feishu / Lark
|
||||
|
||||
Feishu (Lark) — це платформа командного чату, яку компанії використовують для обміну повідомленнями та співпраці. Цей плагін підключає OpenClaw до бота Feishu/Lark за допомогою підписки платформи на події через WebSocket, щоб можна було отримувати повідомлення без відкриття публічного URL вебхука.
|
||||
Feishu/Lark — це універсальна платформа для співпраці, де команди спілкуються в чатах, діляться документами, керують календарями та спільно виконують роботу.
|
||||
|
||||
---
|
||||
|
||||
## Вбудований плагін
|
||||
|
||||
Feishu постачається в комплекті з поточними релізами OpenClaw, тому окремо
|
||||
встановлювати плагін не потрібно.
|
||||
|
||||
Якщо ви використовуєте старішу збірку або власну інсталяцію, яка не містить
|
||||
вбудованого Feishu, установіть його вручну:
|
||||
|
||||
```bash
|
||||
openclaw plugins install @openclaw/feishu
|
||||
```
|
||||
**Статус:** готово до використання в продакшені для особистих повідомлень боту та групових чатів. Режим WebSocket є типовим; режим Webhook — необов’язковий.
|
||||
|
||||
---
|
||||
|
||||
## Швидкий старт
|
||||
|
||||
Є два способи додати канал Feishu:
|
||||
|
||||
### Метод 1: онбординг (рекомендовано)
|
||||
|
||||
Якщо ви щойно встановили OpenClaw, запустіть онбординг:
|
||||
|
||||
```bash
|
||||
openclaw onboard
|
||||
```
|
||||
|
||||
Майстер проведе вас через такі кроки:
|
||||
|
||||
1. Створення застосунку Feishu і збір облікових даних
|
||||
2. Налаштування облікових даних застосунку в OpenClaw
|
||||
3. Запуск gateway
|
||||
|
||||
✅ **Після налаштування** перевірте стан gateway:
|
||||
|
||||
- `openclaw gateway status`
|
||||
- `openclaw logs --follow`
|
||||
|
||||
### Метод 2: налаштування через CLI
|
||||
|
||||
Якщо ви вже завершили початкове встановлення, додайте канал через CLI:
|
||||
|
||||
```bash
|
||||
openclaw channels add
|
||||
```
|
||||
|
||||
Виберіть **Feishu**, потім введіть App ID і App Secret.
|
||||
|
||||
✅ **Після налаштування** керуйте gateway:
|
||||
|
||||
- `openclaw gateway status`
|
||||
- `openclaw gateway restart`
|
||||
- `openclaw logs --follow`
|
||||
|
||||
---
|
||||
|
||||
## Крок 1: Створіть застосунок Feishu
|
||||
|
||||
### 1. Відкрийте платформу Feishu Open Platform
|
||||
|
||||
Перейдіть на [Feishu Open Platform](https://open.feishu.cn/app) і ввійдіть у систему.
|
||||
|
||||
Орендарі Lark (глобальні) мають використовувати [https://open.larksuite.com/app](https://open.larksuite.com/app) і встановити `domain: "lark"` у конфігурації Feishu.
|
||||
|
||||
### 2. Створіть застосунок
|
||||
|
||||
1. Натисніть **Create enterprise app**
|
||||
2. Заповніть назву й опис застосунку
|
||||
3. Виберіть піктограму застосунку
|
||||
|
||||

|
||||
|
||||
### 3. Скопіюйте облікові дані
|
||||
|
||||
У розділі **Credentials & Basic Info** скопіюйте:
|
||||
|
||||
- **App ID** (формат: `cli_xxx`)
|
||||
- **App Secret**
|
||||
|
||||
❗ **Важливо:** тримайте App Secret у таємниці.
|
||||
|
||||

|
||||
|
||||
### 4. Налаштуйте дозволи
|
||||
|
||||
У розділі **Permissions** натисніть **Batch import** і вставте:
|
||||
|
||||
```json
|
||||
{
|
||||
"scopes": {
|
||||
"tenant": [
|
||||
"aily:file:read",
|
||||
"aily:file:write",
|
||||
"application:application.app_message_stats.overview:readonly",
|
||||
"application:application:self_manage",
|
||||
"application:bot.menu:write",
|
||||
"cardkit:card:read",
|
||||
"cardkit:card:write",
|
||||
"contact:user.employee_id:readonly",
|
||||
"corehr:file:download",
|
||||
"event:ip_list",
|
||||
"im:chat.access_event.bot_p2p_chat:read",
|
||||
"im:chat.members:bot_access",
|
||||
"im:message",
|
||||
"im:message.group_at_msg:readonly",
|
||||
"im:message.p2p_msg:readonly",
|
||||
"im:message:readonly",
|
||||
"im:message:send_as_bot",
|
||||
"im:resource"
|
||||
],
|
||||
"user": ["aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 5. Увімкніть можливість бота
|
||||
|
||||
У розділі **App Capability** > **Bot**:
|
||||
|
||||
1. Увімкніть можливість бота
|
||||
2. Установіть ім’я бота
|
||||
|
||||

|
||||
|
||||
### 6. Налаштуйте підписку на події
|
||||
|
||||
⚠️ **Важливо:** перед налаштуванням підписки на події переконайтеся, що:
|
||||
|
||||
1. Ви вже виконали `openclaw channels add` для Feishu
|
||||
2. Gateway запущено (`openclaw gateway status`)
|
||||
|
||||
У розділі **Event Subscription**:
|
||||
|
||||
1. Виберіть **Use long connection to receive events** (WebSocket)
|
||||
2. Додайте подію: `im.message.receive_v1`
|
||||
3. (Необов’язково) Для робочих процесів із коментарями Drive також додайте: `drive.notice.comment_add_v1`
|
||||
|
||||
⚠️ Якщо gateway не запущено, налаштування long-connection може не зберегтися.
|
||||
|
||||

|
||||
|
||||
### 7. Опублікуйте застосунок
|
||||
|
||||
1. Створіть версію в **Version Management & Release**
|
||||
2. Надішліть на перевірку та опублікуйте
|
||||
3. Дочекайтеся схвалення адміністратора (застосунки підприємства зазвичай схвалюються автоматично)
|
||||
|
||||
---
|
||||
|
||||
## Крок 2: Налаштуйте OpenClaw
|
||||
|
||||
### Налаштування за допомогою майстра (рекомендовано)
|
||||
|
||||
```bash
|
||||
openclaw channels add
|
||||
```
|
||||
|
||||
Виберіть **Feishu** і вставте свої App ID + App Secret.
|
||||
|
||||
### Налаштування через файл конфігурації
|
||||
|
||||
Відредагуйте `~/.openclaw/openclaw.json`:
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
enabled: true,
|
||||
dmPolicy: "pairing",
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
name: "My AI assistant",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Якщо ви використовуєте `connectionMode: "webhook"`, установіть і `verificationToken`, і `encryptKey`. Сервер вебхуків Feishu за замовчуванням прив’язується до `127.0.0.1`; установлюйте `webhookHost`, лише якщо вам навмисно потрібна інша адреса прив’язки.
|
||||
|
||||
#### Verification Token і Encrypt Key (режим webhook)
|
||||
|
||||
Під час використання режиму webhook установіть у конфігурації і `channels.feishu.verificationToken`, і `channels.feishu.encryptKey`. Щоб отримати ці значення:
|
||||
|
||||
1. У Feishu Open Platform відкрийте свій застосунок
|
||||
2. Перейдіть до **Development** → **Events & Callbacks** (开发配置 → 事件与回调)
|
||||
3. Відкрийте вкладку **Encryption** (加密策略)
|
||||
4. Скопіюйте **Verification Token** і **Encrypt Key**
|
||||
|
||||
На знімку екрана нижче показано, де знайти **Verification Token**. **Encrypt Key** указано в тому самому розділі **Encryption**.
|
||||
|
||||

|
||||
|
||||
### Налаштування через змінні середовища
|
||||
|
||||
```bash
|
||||
export FEISHU_APP_ID="cli_xxx"
|
||||
export FEISHU_APP_SECRET="xxx"
|
||||
```
|
||||
|
||||
### Домен Lark (глобальний)
|
||||
|
||||
Якщо ваш орендар працює в Lark (міжнародний), установіть домен `lark` (або повний рядок домену). Ви можете встановити його в `channels.feishu.domain` або для окремого облікового запису (`channels.feishu.accounts.<id>.domain`).
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
domain: "lark",
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Прапорці оптимізації квот
|
||||
|
||||
Ви можете зменшити використання API Feishu за допомогою двох необов’язкових прапорців:
|
||||
|
||||
- `typingIndicator` (за замовчуванням `true`): якщо `false`, пропускаються виклики реакції набору тексту.
|
||||
- `resolveSenderNames` (за замовчуванням `true`): якщо `false`, пропускаються виклики пошуку профілю відправника.
|
||||
|
||||
Установлюйте їх на верхньому рівні або для окремого облікового запису:
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
typingIndicator: false,
|
||||
resolveSenderNames: false,
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
typingIndicator: true,
|
||||
resolveSenderNames: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Крок 3: Запуск і тестування
|
||||
|
||||
### 1. Запустіть gateway
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
```
|
||||
|
||||
### 2. Надішліть тестове повідомлення
|
||||
|
||||
У Feishu знайдіть свого бота й надішліть повідомлення.
|
||||
|
||||
### 3. Схваліть pairing
|
||||
|
||||
За замовчуванням бот відповідає кодом pairing. Схваліть його:
|
||||
|
||||
```bash
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
|
||||
Після схвалення ви можете спілкуватися як зазвичай.
|
||||
|
||||
---
|
||||
|
||||
## Огляд
|
||||
|
||||
- **Канал бота Feishu**: бот Feishu, керований gateway
|
||||
- **Детермінована маршрутизація**: відповіді завжди повертаються до Feishu
|
||||
- **Ізоляція сесій**: особисті повідомлення використовують спільну основну сесію; групи ізольовані
|
||||
- **Підключення WebSocket**: довге з’єднання через SDK Feishu, без потреби в публічному URL
|
||||
> **Потрібен OpenClaw 2026.4.10 або новіший.** Щоб перевірити, виконайте `openclaw --version`. Щоб оновити, виконайте `openclaw update`.
|
||||
|
||||
<Steps>
|
||||
<Step title="Запустіть майстер налаштування каналу">
|
||||
```bash
|
||||
openclaw channels login --channel feishu
|
||||
```
|
||||
Відскануйте QR-код у мобільному застосунку Feishu/Lark, щоб автоматично створити бота Feishu/Lark.
|
||||
</Step>
|
||||
|
||||
<Step title="Після завершення налаштування перезапустіть Gateway, щоб застосувати зміни">
|
||||
```bash
|
||||
openclaw gateway restart
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
---
|
||||
|
||||
@ -310,38 +46,43 @@ openclaw pairing approve feishu <CODE>
|
||||
|
||||
### Особисті повідомлення
|
||||
|
||||
- **За замовчуванням**: `dmPolicy: "pairing"` (невідомі користувачі отримують код pairing)
|
||||
- **Схвалити pairing**:
|
||||
Налаштуйте `dmPolicy`, щоб керувати тим, хто може писати боту в особисті повідомлення:
|
||||
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
- `"pairing"` — невідомі користувачі отримують код прив’язки; підтвердьте його через CLI
|
||||
- `"allowlist"` — писати можуть лише користувачі, перелічені в `allowFrom` (типово: лише власник бота)
|
||||
- `"open"` — дозволити всім користувачам
|
||||
- `"disabled"` — вимкнути всі особисті повідомлення
|
||||
|
||||
- **Режим allowlist**: установіть `channels.feishu.allowFrom` із дозволеними Open ID
|
||||
**Підтвердження запиту на прив’язку:**
|
||||
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
|
||||
### Групові чати
|
||||
|
||||
**1. Політика для груп** (`channels.feishu.groupPolicy`):
|
||||
**Політика груп** (`channels.feishu.groupPolicy`):
|
||||
|
||||
- `"open"` = дозволити всім у групах
|
||||
- `"allowlist"` = дозволити лише `groupAllowFrom`
|
||||
- `"disabled"` = вимкнути групові повідомлення
|
||||
| Value | Поведінка |
|
||||
| ------------- | ------------------------------------------ |
|
||||
| `"open"` | Відповідати на всі повідомлення в групах |
|
||||
| `"allowlist"` | Відповідати лише групам із `groupAllowFrom` |
|
||||
| `"disabled"` | Вимкнути всі групові повідомлення |
|
||||
|
||||
За замовчуванням: `allowlist`
|
||||
Типове значення: `allowlist`
|
||||
|
||||
**2. Вимога згадки** (`channels.feishu.requireMention`, можна перевизначити через `channels.feishu.groups.<chat_id>.requireMention`):
|
||||
**Вимога згадки** (`channels.feishu.requireMention`):
|
||||
|
||||
- явне `true` = вимагати @mention
|
||||
- явне `false` = відповідати без згадок
|
||||
- якщо не задано й `groupPolicy: "open"` = за замовчуванням `false`
|
||||
- якщо не задано й `groupPolicy` не дорівнює `"open"` = за замовчуванням `true`
|
||||
- `true` — вимагати @згадку (типово)
|
||||
- `false` — відповідати без @згадки
|
||||
- Перевизначення для окремої групи: `channels.feishu.groups.<chat_id>.requireMention`
|
||||
|
||||
---
|
||||
|
||||
## Приклади конфігурації груп
|
||||
## Приклади налаштування груп
|
||||
|
||||
### Дозволити всі групи, @mention не потрібен (за замовчуванням для відкритих груп)
|
||||
### Дозволити всі групи без обов’язкової @згадки
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -353,7 +94,7 @@ openclaw pairing approve feishu <CODE>
|
||||
}
|
||||
```
|
||||
|
||||
### Дозволити всі групи, але все одно вимагати @mention
|
||||
### Дозволити всі групи, але все одно вимагати @згадку
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -373,16 +114,14 @@ openclaw pairing approve feishu <CODE>
|
||||
channels: {
|
||||
feishu: {
|
||||
groupPolicy: "allowlist",
|
||||
// Feishu group IDs (chat_id) look like: oc_xxx
|
||||
// ID груп мають такий вигляд: oc_xxx
|
||||
groupAllowFrom: ["oc_xxx", "oc_yyy"],
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Обмежити, які відправники можуть писати в групі (allowlist відправників)
|
||||
|
||||
Окрім дозволу для самої групи, **усі повідомлення** в цій групі фільтруються за open_id відправника: обробляються лише повідомлення від користувачів, перелічених у `groups.<chat_id>.allowFrom`; повідомлення від інших учасників ігноруються (це повне обмеження на рівні відправника, а не лише для керівних команд на кшталт /reset або /new).
|
||||
### Обмежити відправників у межах групи
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -392,7 +131,7 @@ openclaw pairing approve feishu <CODE>
|
||||
groupAllowFrom: ["oc_xxx"],
|
||||
groups: {
|
||||
oc_xxx: {
|
||||
// Feishu user IDs (open_id) look like: ou_xxx
|
||||
// open_id користувачів мають такий вигляд: ou_xxx
|
||||
allowFrom: ["ou_user1", "ou_user2"],
|
||||
},
|
||||
},
|
||||
@ -403,35 +142,23 @@ openclaw pairing approve feishu <CODE>
|
||||
|
||||
---
|
||||
|
||||
<a id="get-groupuser-ids"></a>
|
||||
## Як отримати ID групи/користувача
|
||||
|
||||
## Отримання ID групи/користувача
|
||||
### ID груп (`chat_id`, формат: `oc_xxx`)
|
||||
|
||||
### ID групи (chat_id)
|
||||
Відкрийте групу у Feishu/Lark, натисніть значок меню у верхньому правому куті й перейдіть до **Settings**. ID групи (`chat_id`) вказано на сторінці налаштувань.
|
||||
|
||||
ID групи мають вигляд `oc_xxx`.
|
||||

|
||||
|
||||
**Метод 1 (рекомендовано)**
|
||||
### ID користувачів (`open_id`, формат: `ou_xxx`)
|
||||
|
||||
1. Запустіть gateway і зробіть @mention бота в групі
|
||||
2. Виконайте `openclaw logs --follow` і знайдіть `chat_id`
|
||||
Запустіть Gateway, надішліть боту особисте повідомлення, а потім перегляньте журнали:
|
||||
|
||||
**Метод 2**
|
||||
```bash
|
||||
openclaw logs --follow
|
||||
```
|
||||
|
||||
Використайте налагоджувач API Feishu, щоб отримати список групових чатів.
|
||||
|
||||
### ID користувача (open_id)
|
||||
|
||||
ID користувача мають вигляд `ou_xxx`.
|
||||
|
||||
**Метод 1 (рекомендовано)**
|
||||
|
||||
1. Запустіть gateway і надішліть боту особисте повідомлення
|
||||
2. Виконайте `openclaw logs --follow` і знайдіть `open_id`
|
||||
|
||||
**Метод 2**
|
||||
|
||||
Перевірте запити pairing для Open ID користувачів:
|
||||
Знайдіть `open_id` у виводі журналу. Ви також можете переглянути запити на прив’язку, що очікують підтвердження:
|
||||
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
@ -441,59 +168,43 @@ openclaw pairing list feishu
|
||||
|
||||
## Поширені команди
|
||||
|
||||
| Команда | Опис |
|
||||
| --------- | --------------------- |
|
||||
| `/status` | Показати стан бота |
|
||||
| `/reset` | Скинути сесію |
|
||||
| `/model` | Показати/змінити модель |
|
||||
| Command | Опис |
|
||||
| --------- | ------------------------------ |
|
||||
| `/status` | Показати статус бота |
|
||||
| `/reset` | Скинути поточну сесію |
|
||||
| `/model` | Показати або змінити AI-модель |
|
||||
|
||||
> Примітка: Feishu ще не підтримує власні меню команд, тому команди потрібно надсилати як текст.
|
||||
|
||||
## Команди керування gateway
|
||||
|
||||
| Команда | Опис |
|
||||
| -------------------------- | ----------------------------- |
|
||||
| `openclaw gateway status` | Показати стан gateway |
|
||||
| `openclaw gateway install` | Установити/запустити службу gateway |
|
||||
| `openclaw gateway stop` | Зупинити службу gateway |
|
||||
| `openclaw gateway restart` | Перезапустити службу gateway |
|
||||
| `openclaw logs --follow` | Переглядати журнали gateway |
|
||||
> Feishu/Lark не підтримує вбудовані меню slash-команд, тому надсилайте їх як звичайні текстові повідомлення.
|
||||
|
||||
---
|
||||
|
||||
## Усунення несправностей
|
||||
## Усунення проблем
|
||||
|
||||
### Бот не відповідає в групових чатах
|
||||
|
||||
1. Переконайтеся, що бота додано до групи
|
||||
2. Переконайтеся, що ви використовуєте @mention бота (поведінка за замовчуванням)
|
||||
3. Перевірте, що `groupPolicy` не встановлено в `"disabled"`
|
||||
4. Перевірте журнали: `openclaw logs --follow`
|
||||
2. Переконайтеся, що ви згадуєте бота через @ (типово це обов’язково)
|
||||
3. Перевірте, що `groupPolicy` не має значення `"disabled"`
|
||||
4. Перегляньте журнали: `openclaw logs --follow`
|
||||
|
||||
### Бот не отримує повідомлення
|
||||
|
||||
1. Переконайтеся, що застосунок опубліковано й схвалено
|
||||
1. Переконайтеся, що бота опубліковано та схвалено в Feishu Open Platform / Lark Developer
|
||||
2. Переконайтеся, що підписка на події містить `im.message.receive_v1`
|
||||
3. Переконайтеся, що **long connection** увімкнено
|
||||
4. Переконайтеся, що дозволи застосунку повні
|
||||
5. Переконайтеся, що gateway запущено: `openclaw gateway status`
|
||||
6. Перевірте журнали: `openclaw logs --follow`
|
||||
3. Переконайтеся, що вибрано **persistent connection** (WebSocket)
|
||||
4. Переконайтеся, що надано всі потрібні дозволи
|
||||
5. Переконайтеся, що Gateway запущено: `openclaw gateway status`
|
||||
6. Перегляньте журнали: `openclaw logs --follow`
|
||||
|
||||
### Витік App Secret
|
||||
|
||||
1. Скиньте App Secret у Feishu Open Platform
|
||||
2. Оновіть App Secret у своїй конфігурації
|
||||
3. Перезапустіть gateway
|
||||
|
||||
### Збої під час надсилання повідомлень
|
||||
|
||||
1. Переконайтеся, що застосунок має дозвіл `im:message:send_as_bot`
|
||||
2. Переконайтеся, що застосунок опубліковано
|
||||
3. Перевірте журнали для детальних помилок
|
||||
1. Скиньте App Secret у Feishu Open Platform / Lark Developer
|
||||
2. Оновіть значення у своїй конфігурації
|
||||
3. Перезапустіть Gateway: `openclaw gateway restart`
|
||||
|
||||
---
|
||||
|
||||
## Розширена конфігурація
|
||||
## Розширене налаштування
|
||||
|
||||
### Кілька облікових записів
|
||||
|
||||
@ -506,12 +217,12 @@ openclaw pairing list feishu
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
name: "Primary bot",
|
||||
name: "Основний бот",
|
||||
},
|
||||
backup: {
|
||||
appId: "cli_yyy",
|
||||
appSecret: "yyy",
|
||||
name: "Backup bot",
|
||||
name: "Резервний бот",
|
||||
enabled: false,
|
||||
},
|
||||
},
|
||||
@ -520,42 +231,53 @@ openclaw pairing list feishu
|
||||
}
|
||||
```
|
||||
|
||||
`defaultAccount` визначає, який обліковий запис Feishu використовується, коли вихідні API явно не вказують `accountId`.
|
||||
`defaultAccount` визначає, який обліковий запис використовується, коли вихідні API не вказують `accountId`.
|
||||
|
||||
### Обмеження повідомлень
|
||||
|
||||
- `textChunkLimit`: розмір фрагмента вихідного тексту (за замовчуванням: 2000 символів)
|
||||
- `mediaMaxMb`: ліміт вивантаження/завантаження медіа (за замовчуванням: 30 МБ)
|
||||
- `textChunkLimit` — розмір фрагмента вихідного тексту (типово: `2000` символів)
|
||||
- `mediaMaxMb` — обмеження на завантаження/вивантаження медіа (типово: `30` МБ)
|
||||
|
||||
### Потокова передача
|
||||
### Потокове передавання
|
||||
|
||||
Feishu підтримує потокові відповіді через інтерактивні картки. Коли це ввімкнено, бот оновлює картку під час генерування тексту.
|
||||
Feishu/Lark підтримує потокові відповіді через інтерактивні картки. Коли цю функцію ввімкнено, бот оновлює картку в реальному часі під час генерування тексту.
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
streaming: true, // enable streaming card output (default true)
|
||||
blockStreaming: true, // enable block-level streaming (default true)
|
||||
streaming: true, // увімкнути потокове виведення в картках (типово: true)
|
||||
blockStreaming: true, // увімкнути потокове передавання на рівні блоків (типово: true)
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Установіть `streaming: false`, щоб чекати повної відповіді перед надсиланням.
|
||||
Встановіть `streaming: false`, щоб надсилати повну відповідь одним повідомленням.
|
||||
|
||||
### Оптимізація квот
|
||||
|
||||
Зменште кількість викликів API Feishu/Lark за допомогою двох необов’язкових прапорців:
|
||||
|
||||
- `typingIndicator` (типово `true`): встановіть `false`, щоб пропустити виклики реакції набору тексту
|
||||
- `resolveSenderNames` (типово `true`): встановіть `false`, щоб пропустити пошук профілів відправників
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
typingIndicator: false,
|
||||
resolveSenderNames: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Сесії ACP
|
||||
|
||||
Feishu підтримує ACP для:
|
||||
Feishu/Lark підтримує ACP для особистих повідомлень і повідомлень у гілках груп. ACP у Feishu/Lark працює через текстові команди — вбудованих меню slash-команд немає, тому використовуйте повідомлення `/acp ...` безпосередньо в розмові.
|
||||
|
||||
- особистих повідомлень
|
||||
- розмов у темах груп
|
||||
|
||||
ACP у Feishu керується текстовими командами. Власних меню slash-команд немає, тому використовуйте повідомлення `/acp ...` безпосередньо в розмові.
|
||||
|
||||
#### Постійні прив’язки ACP
|
||||
|
||||
Використовуйте типізовані прив’язки ACP верхнього рівня, щоб прив’язати особисте повідомлення Feishu або розмову в темі до постійної сесії ACP.
|
||||
#### Постійна прив’язка ACP
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -599,58 +321,39 @@ ACP у Feishu керується текстовими командами. Вла
|
||||
}
|
||||
```
|
||||
|
||||
#### Прив’язаний до потоку запуск ACP із чату
|
||||
#### Запуск ACP із чату
|
||||
|
||||
У особистому повідомленні Feishu або розмові в темі ви можете створити й прив’язати сесію ACP на місці:
|
||||
У особистому повідомленні або гілці Feishu/Lark:
|
||||
|
||||
```text
|
||||
/acp spawn codex --thread here
|
||||
```
|
||||
|
||||
Примітки:
|
||||
`--thread here` працює для особистих повідомлень і повідомлень у гілках Feishu/Lark. Подальші повідомлення в прив’язаній розмові маршрутизуються безпосередньо до цієї сесії ACP.
|
||||
|
||||
- `--thread here` працює для особистих повідомлень і тем Feishu.
|
||||
- Подальші повідомлення в прив’язаному особистому повідомленні/темі напряму маршрутизуються до цієї сесії ACP.
|
||||
- У v1 це не націлено на звичайні групові чати без тем.
|
||||
### Маршрутизація кількох агентів
|
||||
|
||||
### Маршрутизація між кількома агентами
|
||||
|
||||
Використовуйте `bindings`, щоб маршрутизувати особисті повідомлення або групи Feishu до різних агентів.
|
||||
Використовуйте `bindings`, щоб маршрутизувати особисті повідомлення або групи Feishu/Lark до різних агентів.
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
list: [
|
||||
{ id: "main" },
|
||||
{
|
||||
id: "clawd-fan",
|
||||
workspace: "/home/user/clawd-fan",
|
||||
agentDir: "/home/user/.openclaw/agents/clawd-fan/agent",
|
||||
},
|
||||
{
|
||||
id: "clawd-xi",
|
||||
workspace: "/home/user/clawd-xi",
|
||||
agentDir: "/home/user/.openclaw/agents/clawd-xi/agent",
|
||||
},
|
||||
{ id: "agent-a", workspace: "/home/user/agent-a" },
|
||||
{ id: "agent-b", workspace: "/home/user/agent-b" },
|
||||
],
|
||||
},
|
||||
bindings: [
|
||||
{
|
||||
agentId: "main",
|
||||
agentId: "agent-a",
|
||||
match: {
|
||||
channel: "feishu",
|
||||
peer: { kind: "direct", id: "ou_xxx" },
|
||||
},
|
||||
},
|
||||
{
|
||||
agentId: "clawd-fan",
|
||||
match: {
|
||||
channel: "feishu",
|
||||
peer: { kind: "direct", id: "ou_yyy" },
|
||||
},
|
||||
},
|
||||
{
|
||||
agentId: "clawd-xi",
|
||||
agentId: "agent-b",
|
||||
match: {
|
||||
channel: "feishu",
|
||||
peer: { kind: "group", id: "oc_zzz" },
|
||||
@ -663,55 +366,44 @@ ACP у Feishu керується текстовими командами. Вла
|
||||
Поля маршрутизації:
|
||||
|
||||
- `match.channel`: `"feishu"`
|
||||
- `match.peer.kind`: `"direct"` або `"group"`
|
||||
- `match.peer.kind`: `"direct"` (особисті повідомлення) або `"group"` (груповий чат)
|
||||
- `match.peer.id`: Open ID користувача (`ou_xxx`) або ID групи (`oc_xxx`)
|
||||
|
||||
Див. [Отримання ID групи/користувача](#get-groupuser-ids) для порад щодо пошуку.
|
||||
Поради щодо пошуку див. у розділі [Як отримати ID групи/користувача](#як-отримати-id-групикористувача).
|
||||
|
||||
---
|
||||
|
||||
## Довідник із конфігурації
|
||||
## Довідник конфігурації
|
||||
|
||||
Повна конфігурація: [Конфігурація gateway](/gateway/configuration)
|
||||
Повна конфігурація: [Налаштування Gateway](/uk/gateway/configuration)
|
||||
|
||||
Ключові параметри:
|
||||
|
||||
| Налаштування | Опис | За замовчуванням |
|
||||
| ------------------------------------------------- | --------------------------------------- | ---------------- |
|
||||
| `channels.feishu.enabled` | Увімкнути/вимкнути канал | `true` |
|
||||
| `channels.feishu.domain` | Домен API (`feishu` або `lark`) | `feishu` |
|
||||
| `channels.feishu.connectionMode` | Режим транспорту подій | `websocket` |
|
||||
| `channels.feishu.defaultAccount` | ID облікового запису за замовчуванням для вихідної маршрутизації | `default` |
|
||||
| `channels.feishu.verificationToken` | Обов’язково для режиму webhook | - |
|
||||
| `channels.feishu.encryptKey` | Обов’язково для режиму webhook | - |
|
||||
| `channels.feishu.webhookPath` | Шлях маршруту webhook | `/feishu/events` |
|
||||
| `channels.feishu.webhookHost` | Хост прив’язки webhook | `127.0.0.1` |
|
||||
| `channels.feishu.webhookPort` | Порт прив’язки webhook | `3000` |
|
||||
| `channels.feishu.accounts.<id>.appId` | App ID | - |
|
||||
| `channels.feishu.accounts.<id>.appSecret` | App Secret | - |
|
||||
| `channels.feishu.accounts.<id>.domain` | Перевизначення домену API для окремого облікового запису | `feishu` |
|
||||
| `channels.feishu.dmPolicy` | Політика особистих повідомлень | `pairing` |
|
||||
| `channels.feishu.allowFrom` | allowlist особистих повідомлень (список `open_id`) | - |
|
||||
| `channels.feishu.groupPolicy` | Політика груп | `allowlist` |
|
||||
| `channels.feishu.groupAllowFrom` | allowlist груп | - |
|
||||
| `channels.feishu.requireMention` | Вимагати @mention за замовчуванням | умовно |
|
||||
| `channels.feishu.groups.<chat_id>.requireMention` | Перевизначення вимоги @mention для окремої групи | успадковується |
|
||||
| `channels.feishu.groups.<chat_id>.enabled` | Увімкнути групу | `true` |
|
||||
| `channels.feishu.textChunkLimit` | Розмір фрагмента повідомлення | `2000` |
|
||||
| `channels.feishu.mediaMaxMb` | Ліміт розміру медіа | `30` |
|
||||
| `channels.feishu.streaming` | Увімкнути потоковий вивід карток | `true` |
|
||||
| `channels.feishu.blockStreaming` | Увімкнути потокову передачу блоків | `true` |
|
||||
|
||||
---
|
||||
|
||||
## Довідник `dmPolicy`
|
||||
|
||||
| Значення | Поведінка |
|
||||
| ------------- | -------------------------------------------------------------- |
|
||||
| `"pairing"` | **За замовчуванням.** Невідомі користувачі отримують код pairing; потрібне схвалення |
|
||||
| `"allowlist"` | Спілкуватися можуть лише користувачі з `allowFrom` |
|
||||
| `"open"` | Дозволити всіх користувачів (потрібне `"*"` в `allowFrom`) |
|
||||
| `"disabled"` | Вимкнути особисті повідомлення |
|
||||
| Setting | Опис | Default |
|
||||
| ------------------------------------------------- | ------------------------------------------ | ---------------- |
|
||||
| `channels.feishu.enabled` | Увімкнути/вимкнути канал | `true` |
|
||||
| `channels.feishu.domain` | Домен API (`feishu` або `lark`) | `feishu` |
|
||||
| `channels.feishu.connectionMode` | Транспорт подій (`websocket` або `webhook`) | `websocket` |
|
||||
| `channels.feishu.defaultAccount` | Типовий обліковий запис для вихідної маршрутизації | `default` |
|
||||
| `channels.feishu.verificationToken` | Обов’язково для режиму webhook | — |
|
||||
| `channels.feishu.encryptKey` | Обов’язково для режиму webhook | — |
|
||||
| `channels.feishu.webhookPath` | Шлях маршруту webhook | `/feishu/events` |
|
||||
| `channels.feishu.webhookHost` | Хост прив’язки webhook | `127.0.0.1` |
|
||||
| `channels.feishu.webhookPort` | Порт прив’язки webhook | `3000` |
|
||||
| `channels.feishu.accounts.<id>.appId` | App ID | — |
|
||||
| `channels.feishu.accounts.<id>.appSecret` | App Secret | — |
|
||||
| `channels.feishu.accounts.<id>.domain` | Перевизначення домену для облікового запису | `feishu` |
|
||||
| `channels.feishu.dmPolicy` | Політика особистих повідомлень | `allowlist` |
|
||||
| `channels.feishu.allowFrom` | Allowlist особистих повідомлень (список `open_id`) | [BotOwnerId] |
|
||||
| `channels.feishu.groupPolicy` | Політика груп | `allowlist` |
|
||||
| `channels.feishu.groupAllowFrom` | Allowlist груп | — |
|
||||
| `channels.feishu.requireMention` | Вимагати @згадку в групах | `true` |
|
||||
| `channels.feishu.groups.<chat_id>.requireMention` | Перевизначення @згадки для окремої групи | inherited |
|
||||
| `channels.feishu.groups.<chat_id>.enabled` | Увімкнути/вимкнути певну групу | `true` |
|
||||
| `channels.feishu.textChunkLimit` | Розмір фрагмента повідомлення | `2000` |
|
||||
| `channels.feishu.mediaMaxMb` | Обмеження розміру медіа | `30` |
|
||||
| `channels.feishu.streaming` | Потокове виведення в картках | `true` |
|
||||
| `channels.feishu.blockStreaming` | Потокове передавання на рівні блоків | `true` |
|
||||
| `channels.feishu.typingIndicator` | Надсилати реакції набору тексту | `true` |
|
||||
| `channels.feishu.resolveSenderNames` | Визначати відображувані імена відправників | `true` |
|
||||
|
||||
---
|
||||
|
||||
@ -734,67 +426,21 @@ ACP у Feishu керується текстовими командами. Вла
|
||||
- ✅ Файли
|
||||
- ✅ Аудіо
|
||||
- ✅ Відео/медіа
|
||||
- ✅ Інтерактивні картки
|
||||
- ⚠️ Форматований текст (форматування у стилі post і картки, але не довільні можливості авторингу Feishu)
|
||||
- ✅ Інтерактивні картки (включно з потоковими оновленнями)
|
||||
- ⚠️ Форматований текст (форматування у стилі post; не підтримує всі можливості авторингу Feishu/Lark)
|
||||
|
||||
### Потоки та відповіді
|
||||
### Гілки та відповіді
|
||||
|
||||
- ✅ Вбудовані відповіді
|
||||
- ✅ Відповіді в потоках тем, де Feishu надає `reply_in_thread`
|
||||
- ✅ Відповіді з медіа залишаються прив’язаними до потоку під час відповіді на повідомлення потоку/теми
|
||||
- ✅ Відповіді в гілках
|
||||
- ✅ Відповіді з медіа залишаються прив’язаними до гілки при відповіді на повідомлення в гілці
|
||||
|
||||
## Коментарі Drive
|
||||
|
||||
Feishu може запускати агента, коли хтось додає коментар у документ Feishu Drive (Docs, Sheets
|
||||
тощо). Агент отримує текст коментаря, контекст документа та потік коментарів, щоб мати змогу
|
||||
відповісти в потоці або внести зміни в документ.
|
||||
|
||||
Вимоги:
|
||||
|
||||
- Підпишіться на `drive.notice.comment_add_v1` у налаштуваннях підписки на події вашого застосунку Feishu
|
||||
(разом із уже наявним `im.message.receive_v1`)
|
||||
- Інструмент Drive увімкнено за замовчуванням; вимкнути можна через `channels.feishu.tools.drive: false`
|
||||
|
||||
Інструмент `feishu_drive` надає такі дії для коментарів:
|
||||
|
||||
| Дія | Опис |
|
||||
| --------------------- | -------------------------------------- |
|
||||
| `list_comments` | Показати коментарі до документа |
|
||||
| `list_comment_replies` | Показати відповіді в потоці коментарів |
|
||||
| `add_comment` | Додати новий коментар верхнього рівня |
|
||||
| `reply_comment` | Відповісти в наявному потоці коментарів |
|
||||
|
||||
Коли агент обробляє подію коментаря Drive, він отримує:
|
||||
|
||||
- текст коментаря та відправника
|
||||
- метадані документа (назва, тип, URL)
|
||||
- контекст потоку коментарів для відповідей у потоці
|
||||
|
||||
Після внесення змін у документ агенту рекомендується використати `feishu_drive.reply_comment`, щоб сповістити
|
||||
коментатора, а потім вивести точний беззвучний токен `NO_REPLY` / `no_reply`, щоб
|
||||
уникнути дубльованих надсилань.
|
||||
|
||||
## Поверхня дій runtime
|
||||
|
||||
Наразі Feishu надає такі дії runtime:
|
||||
|
||||
- `send`
|
||||
- `read`
|
||||
- `edit`
|
||||
- `thread-reply`
|
||||
- `pin`
|
||||
- `list-pins`
|
||||
- `unpin`
|
||||
- `member-info`
|
||||
- `channel-info`
|
||||
- `channel-list`
|
||||
- `react` і `reactions`, коли реакції увімкнено в конфігурації
|
||||
- дії коментарів `feishu_drive`: `list_comments`, `list_comment_replies`, `add_comment`, `reply_comment`
|
||||
---
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Огляд каналів](/channels) — усі підтримувані канали
|
||||
- [Pairing](/channels/pairing) — автентифікація особистих повідомлень і процес pairing
|
||||
- [Групи](/channels/groups) — поведінка групових чатів і вимога згадки
|
||||
- [Маршрутизація каналів](/channels/channel-routing) — маршрутизація сесій для повідомлень
|
||||
- [Безпека](/gateway/security) — модель доступу та посилення захисту
|
||||
- [Огляд каналів](/uk/channels) — усі підтримувані канали
|
||||
- [Прив’язка](/uk/channels/pairing) — автентифікація в особистих повідомленнях і процес прив’язки
|
||||
- [Групи](/uk/channels/groups) — поведінка групових чатів і керування через згадки
|
||||
- [Маршрутизація каналів](/uk/channels/channel-routing) — маршрутизація сесій для повідомлень
|
||||
- [Безпека](/uk/gateway/security) — модель доступу та посилення захисту
|
||||
|
||||
Loading…
Reference in New Issue
Block a user