chore(i18n): refresh id translations
This commit is contained in:
parent
a0d99e05e0
commit
40be5219f4
@ -1,308 +1,44 @@
|
||||
---
|
||||
read_when:
|
||||
- Anda ingin menghubungkan bot Feishu/Lark
|
||||
- Anda sedang mengonfigurasi channel Feishu
|
||||
summary: Ikhtisar, fitur, dan konfigurasi bot Feishu
|
||||
- Anda sedang mengonfigurasi saluran Feishu
|
||||
summary: Ikhtisar bot Feishu, fitur, dan konfigurasi
|
||||
title: Feishu
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T13:43:35Z"
|
||||
generated_at: "2026-04-13T12:36:50Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 4e39b6dfe3a3aa4ebbdb992975e570e4f1b5e79f3b400a555fc373a0d1889952
|
||||
source_hash: 77fcf95a3fab534ed898bc157d76bf8bdfa8bf8a918d6af84c0db19890916c1a
|
||||
source_path: channels/feishu.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Bot Feishu
|
||||
# Feishu / Lark
|
||||
|
||||
Feishu (Lark) adalah platform obrolan tim yang digunakan perusahaan untuk perpesanan dan kolaborasi. Plugin ini menghubungkan OpenClaw ke bot Feishu/Lark menggunakan langganan peristiwa WebSocket milik platform, sehingga pesan dapat diterima tanpa mengekspos URL webhook publik.
|
||||
Feishu/Lark adalah platform kolaborasi all-in-one tempat tim mengobrol, berbagi dokumen, mengelola kalender, dan menyelesaikan pekerjaan bersama.
|
||||
|
||||
---
|
||||
|
||||
## Plugin bawaan
|
||||
|
||||
Feishu sudah disertakan secara bawaan dalam rilis OpenClaw saat ini, sehingga tidak
|
||||
memerlukan instalasi plugin terpisah.
|
||||
|
||||
Jika Anda menggunakan build lama atau instalasi kustom yang tidak menyertakan bundel
|
||||
Feishu, instal secara manual:
|
||||
|
||||
```bash
|
||||
openclaw plugins install @openclaw/feishu
|
||||
```
|
||||
**Status:** siap produksi untuk DM bot + obrolan grup. WebSocket adalah mode default; mode webhook bersifat opsional.
|
||||
|
||||
---
|
||||
|
||||
## Mulai cepat
|
||||
|
||||
Ada dua cara untuk menambahkan channel Feishu:
|
||||
|
||||
### Metode 1: onboarding (direkomendasikan)
|
||||
|
||||
Jika Anda baru saja menginstal OpenClaw, jalankan onboarding:
|
||||
|
||||
```bash
|
||||
openclaw onboard
|
||||
```
|
||||
|
||||
Wizard akan memandu Anda melalui:
|
||||
|
||||
1. Membuat aplikasi Feishu dan mengumpulkan kredensial
|
||||
2. Mengonfigurasi kredensial aplikasi di OpenClaw
|
||||
3. Menjalankan gateway
|
||||
|
||||
✅ **Setelah konfigurasi**, periksa status gateway:
|
||||
|
||||
- `openclaw gateway status`
|
||||
- `openclaw logs --follow`
|
||||
|
||||
### Metode 2: penyiapan CLI
|
||||
|
||||
Jika Anda sudah menyelesaikan instalasi awal, tambahkan channel melalui CLI:
|
||||
|
||||
```bash
|
||||
openclaw channels add
|
||||
```
|
||||
|
||||
Pilih **Feishu**, lalu masukkan App ID dan App Secret.
|
||||
|
||||
✅ **Setelah konfigurasi**, kelola gateway:
|
||||
|
||||
- `openclaw gateway status`
|
||||
- `openclaw gateway restart`
|
||||
- `openclaw logs --follow`
|
||||
|
||||
---
|
||||
|
||||
## Langkah 1: Buat aplikasi Feishu
|
||||
|
||||
### 1. Buka Feishu Open Platform
|
||||
|
||||
Kunjungi [Feishu Open Platform](https://open.feishu.cn/app) dan masuk.
|
||||
|
||||
Tenant Lark (global) harus menggunakan [https://open.larksuite.com/app](https://open.larksuite.com/app) dan menetapkan `domain: "lark"` di konfigurasi Feishu.
|
||||
|
||||
### 2. Buat aplikasi
|
||||
|
||||
1. Klik **Create enterprise app**
|
||||
2. Isi nama + deskripsi aplikasi
|
||||
3. Pilih ikon aplikasi
|
||||
|
||||

|
||||
|
||||
### 3. Salin kredensial
|
||||
|
||||
Dari **Credentials & Basic Info**, salin:
|
||||
|
||||
- **App ID** (format: `cli_xxx`)
|
||||
- **App Secret**
|
||||
|
||||
❗ **Penting:** jaga kerahasiaan App Secret.
|
||||
|
||||

|
||||
|
||||
### 4. Konfigurasikan izin
|
||||
|
||||
Pada **Permissions**, klik **Batch import** dan tempel:
|
||||
|
||||
```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. Aktifkan kemampuan bot
|
||||
|
||||
Di **App Capability** > **Bot**:
|
||||
|
||||
1. Aktifkan kemampuan bot
|
||||
2. Tetapkan nama bot
|
||||
|
||||

|
||||
|
||||
### 6. Konfigurasikan langganan peristiwa
|
||||
|
||||
⚠️ **Penting:** sebelum menetapkan langganan peristiwa, pastikan:
|
||||
|
||||
1. Anda sudah menjalankan `openclaw channels add` untuk Feishu
|
||||
2. Gateway sedang berjalan (`openclaw gateway status`)
|
||||
|
||||
Di **Event Subscription**:
|
||||
|
||||
1. Pilih **Use long connection to receive events** (WebSocket)
|
||||
2. Tambahkan peristiwa: `im.message.receive_v1`
|
||||
3. (Opsional) Untuk alur kerja komentar Drive, tambahkan juga: `drive.notice.comment_add_v1`
|
||||
|
||||
⚠️ Jika gateway tidak berjalan, penyiapan long-connection mungkin gagal disimpan.
|
||||
|
||||

|
||||
|
||||
### 7. Publikasikan aplikasi
|
||||
|
||||
1. Buat versi di **Version Management & Release**
|
||||
2. Kirim untuk peninjauan dan publikasikan
|
||||
3. Tunggu persetujuan admin (aplikasi enterprise biasanya disetujui otomatis)
|
||||
|
||||
---
|
||||
|
||||
## Langkah 2: Konfigurasikan OpenClaw
|
||||
|
||||
### Konfigurasikan dengan wizard (direkomendasikan)
|
||||
|
||||
```bash
|
||||
openclaw channels add
|
||||
```
|
||||
|
||||
Pilih **Feishu** dan tempelkan App ID + App Secret Anda.
|
||||
|
||||
### Konfigurasikan melalui file konfigurasi
|
||||
|
||||
Edit `~/.openclaw/openclaw.json`:
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
enabled: true,
|
||||
dmPolicy: "pairing",
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
name: "My AI assistant",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Jika Anda menggunakan `connectionMode: "webhook"`, tetapkan `verificationToken` dan `encryptKey`. Server webhook Feishu melakukan bind ke `127.0.0.1` secara default; tetapkan `webhookHost` hanya jika Anda memang sengaja memerlukan alamat bind yang berbeda.
|
||||
|
||||
#### Verification Token dan Encrypt Key (mode webhook)
|
||||
|
||||
Saat menggunakan mode webhook, tetapkan `channels.feishu.verificationToken` dan `channels.feishu.encryptKey` di konfigurasi Anda. Untuk mendapatkan nilainya:
|
||||
|
||||
1. Di Feishu Open Platform, buka aplikasi Anda
|
||||
2. Buka **Development** → **Events & Callbacks** (开发配置 → 事件与回调)
|
||||
3. Buka tab **Encryption** (加密策略)
|
||||
4. Salin **Verification Token** dan **Encrypt Key**
|
||||
|
||||
Tangkapan layar di bawah ini menunjukkan tempat menemukan **Verification Token**. **Encrypt Key** tercantum di bagian **Encryption** yang sama.
|
||||
|
||||

|
||||
|
||||
### Konfigurasikan melalui variabel lingkungan
|
||||
|
||||
```bash
|
||||
export FEISHU_APP_ID="cli_xxx"
|
||||
export FEISHU_APP_SECRET="xxx"
|
||||
```
|
||||
|
||||
### Domain Lark (global)
|
||||
|
||||
Jika tenant Anda berada di Lark (internasional), tetapkan domain ke `lark` (atau string domain lengkap). Anda dapat menetapkannya di `channels.feishu.domain` atau per akun (`channels.feishu.accounts.<id>.domain`).
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
domain: "lark",
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Flag optimasi kuota
|
||||
|
||||
Anda dapat mengurangi penggunaan API Feishu dengan dua flag opsional:
|
||||
|
||||
- `typingIndicator` (default `true`): saat `false`, lewati panggilan reaksi mengetik.
|
||||
- `resolveSenderNames` (default `true`): saat `false`, lewati panggilan pencarian profil pengirim.
|
||||
|
||||
Tetapkan di level teratas atau per akun:
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
typingIndicator: false,
|
||||
resolveSenderNames: false,
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
typingIndicator: true,
|
||||
resolveSenderNames: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Langkah 3: Jalankan + uji
|
||||
|
||||
### 1. Jalankan gateway
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
```
|
||||
|
||||
### 2. Kirim pesan uji
|
||||
|
||||
Di Feishu, temukan bot Anda dan kirim pesan.
|
||||
|
||||
### 3. Setujui pairing
|
||||
|
||||
Secara default, bot membalas dengan kode pairing. Setujui:
|
||||
|
||||
```bash
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
|
||||
Setelah disetujui, Anda dapat mengobrol seperti biasa.
|
||||
|
||||
---
|
||||
|
||||
## Ikhtisar
|
||||
|
||||
- **Channel bot Feishu**: bot Feishu yang dikelola oleh gateway
|
||||
- **Routing deterministik**: balasan selalu kembali ke Feishu
|
||||
- **Isolasi sesi**: DM berbagi satu sesi utama; grup diisolasi
|
||||
- **Koneksi WebSocket**: long connection melalui SDK Feishu, tidak memerlukan URL publik
|
||||
> **Memerlukan OpenClaw 2026.4.10 atau yang lebih baru.** Jalankan `openclaw --version` untuk memeriksa. Tingkatkan dengan `openclaw update`.
|
||||
|
||||
<Steps>
|
||||
<Step title="Jalankan wizard penyiapan saluran">
|
||||
```bash
|
||||
openclaw channels login --channel feishu
|
||||
```
|
||||
Pindai kode QR dengan aplikasi seluler Feishu/Lark Anda untuk membuat bot Feishu/Lark secara otomatis.
|
||||
</Step>
|
||||
|
||||
<Step title="Setelah penyiapan selesai, mulai ulang Gateway untuk menerapkan perubahan">
|
||||
```bash
|
||||
openclaw gateway restart
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
---
|
||||
|
||||
@ -310,38 +46,43 @@ Setelah disetujui, Anda dapat mengobrol seperti biasa.
|
||||
|
||||
### Pesan langsung
|
||||
|
||||
- **Default**: `dmPolicy: "pairing"` (pengguna yang tidak dikenal mendapatkan kode pairing)
|
||||
- **Setujui pairing**:
|
||||
Konfigurasikan `dmPolicy` untuk mengontrol siapa yang dapat mengirim DM ke bot:
|
||||
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
- `"pairing"` — pengguna yang tidak dikenal menerima kode pairing; setujui melalui CLI
|
||||
- `"allowlist"` — hanya pengguna yang tercantum dalam `allowFrom` yang dapat mengobrol (default: hanya pemilik bot)
|
||||
- `"open"` — izinkan semua pengguna
|
||||
- `"disabled"` — nonaktifkan semua DM
|
||||
|
||||
- **Mode allowlist**: tetapkan `channels.feishu.allowFrom` dengan Open ID yang diizinkan
|
||||
**Setujui permintaan pairing:**
|
||||
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
|
||||
### Obrolan grup
|
||||
|
||||
**1. Kebijakan grup** (`channels.feishu.groupPolicy`):
|
||||
**Kebijakan grup** (`channels.feishu.groupPolicy`):
|
||||
|
||||
- `"open"` = izinkan semua orang di grup
|
||||
- `"allowlist"` = hanya izinkan `groupAllowFrom`
|
||||
- `"disabled"` = nonaktifkan pesan grup
|
||||
| Value | Perilaku |
|
||||
| ------------- | ------------------------------------------ |
|
||||
| `"open"` | Merespons semua pesan di grup |
|
||||
| `"allowlist"` | Hanya merespons grup dalam `groupAllowFrom` |
|
||||
| `"disabled"` | Nonaktifkan semua pesan grup |
|
||||
|
||||
Default: `allowlist`
|
||||
|
||||
**2. Persyaratan mention** (`channels.feishu.requireMention`, dapat dioverride melalui `channels.feishu.groups.<chat_id>.requireMention`):
|
||||
**Persyaratan mention** (`channels.feishu.requireMention`):
|
||||
|
||||
- `true` eksplisit = memerlukan @mention
|
||||
- `false` eksplisit = merespons tanpa mention
|
||||
- jika tidak ditetapkan dan `groupPolicy: "open"` = default ke `false`
|
||||
- jika tidak ditetapkan dan `groupPolicy` bukan `"open"` = default ke `true`
|
||||
- `true` — memerlukan @mention (default)
|
||||
- `false` — merespons tanpa @mention
|
||||
- Override per grup: `channels.feishu.groups.<chat_id>.requireMention`
|
||||
|
||||
---
|
||||
|
||||
## Contoh konfigurasi grup
|
||||
|
||||
### Izinkan semua grup, tanpa @mention wajib (default untuk grup terbuka)
|
||||
### Izinkan semua grup, tidak memerlukan @mention
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -373,16 +114,14 @@ Default: `allowlist`
|
||||
channels: {
|
||||
feishu: {
|
||||
groupPolicy: "allowlist",
|
||||
// Feishu group IDs (chat_id) look like: oc_xxx
|
||||
// ID grup terlihat seperti: oc_xxx
|
||||
groupAllowFrom: ["oc_xxx", "oc_yyy"],
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Batasi pengirim mana yang dapat mengirim pesan dalam grup (allowlist pengirim)
|
||||
|
||||
Selain mengizinkan grup itu sendiri, **semua pesan** dalam grup tersebut dibatasi oleh sender `open_id`: hanya pengguna yang tercantum di `groups.<chat_id>.allowFrom` yang pesannya diproses; pesan dari anggota lain diabaikan (ini adalah pembatasan penuh di level pengirim, bukan hanya untuk perintah kontrol seperti /reset atau /new).
|
||||
### Batasi pengirim dalam grup
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -392,7 +131,7 @@ Selain mengizinkan grup itu sendiri, **semua pesan** dalam grup tersebut dibatas
|
||||
groupAllowFrom: ["oc_xxx"],
|
||||
groups: {
|
||||
oc_xxx: {
|
||||
// Feishu user IDs (open_id) look like: ou_xxx
|
||||
// open_id pengguna terlihat seperti: ou_xxx
|
||||
allowFrom: ["ou_user1", "ou_user2"],
|
||||
},
|
||||
},
|
||||
@ -403,35 +142,23 @@ Selain mengizinkan grup itu sendiri, **semua pesan** dalam grup tersebut dibatas
|
||||
|
||||
---
|
||||
|
||||
<a id="get-groupuser-ids"></a>
|
||||
|
||||
## Dapatkan ID grup/pengguna
|
||||
|
||||
### ID grup (chat_id)
|
||||
### ID grup (`chat_id`, format: `oc_xxx`)
|
||||
|
||||
ID grup terlihat seperti `oc_xxx`.
|
||||
Buka grup di Feishu/Lark, klik ikon menu di sudut kanan atas, lalu buka **Settings**. ID grup (`chat_id`) tercantum di halaman pengaturan.
|
||||
|
||||
**Metode 1 (direkomendasikan)**
|
||||

|
||||
|
||||
1. Jalankan gateway dan lakukan @mention pada bot di grup
|
||||
2. Jalankan `openclaw logs --follow` dan cari `chat_id`
|
||||
### ID pengguna (`open_id`, format: `ou_xxx`)
|
||||
|
||||
**Metode 2**
|
||||
Mulai Gateway, kirim DM ke bot, lalu periksa log:
|
||||
|
||||
Gunakan debugger API Feishu untuk mencantumkan obrolan grup.
|
||||
```bash
|
||||
openclaw logs --follow
|
||||
```
|
||||
|
||||
### ID pengguna (open_id)
|
||||
|
||||
ID pengguna terlihat seperti `ou_xxx`.
|
||||
|
||||
**Metode 1 (direkomendasikan)**
|
||||
|
||||
1. Jalankan gateway dan kirim DM ke bot
|
||||
2. Jalankan `openclaw logs --follow` dan cari `open_id`
|
||||
|
||||
**Metode 2**
|
||||
|
||||
Periksa permintaan pairing untuk Open ID pengguna:
|
||||
Cari `open_id` pada output log. Anda juga dapat memeriksa permintaan pairing yang tertunda:
|
||||
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
@ -441,23 +168,13 @@ openclaw pairing list feishu
|
||||
|
||||
## Perintah umum
|
||||
|
||||
| Perintah | Deskripsi |
|
||||
| --------- | ---------------------- |
|
||||
| `/status` | Tampilkan status bot |
|
||||
| `/reset` | Reset sesi |
|
||||
| `/model` | Tampilkan/ganti model |
|
||||
| Command | Deskripsi |
|
||||
| --------- | ------------------------------ |
|
||||
| `/status` | Tampilkan status bot |
|
||||
| `/reset` | Reset sesi saat ini |
|
||||
| `/model` | Tampilkan atau ganti model AI |
|
||||
|
||||
> Catatan: Feishu belum mendukung menu perintah native, jadi perintah harus dikirim sebagai teks.
|
||||
|
||||
## Perintah manajemen gateway
|
||||
|
||||
| Perintah | Deskripsi |
|
||||
| -------------------------- | ----------------------------- |
|
||||
| `openclaw gateway status` | Tampilkan status gateway |
|
||||
| `openclaw gateway install` | Instal/jalankan layanan gateway |
|
||||
| `openclaw gateway stop` | Hentikan layanan gateway |
|
||||
| `openclaw gateway restart` | Mulai ulang gateway |
|
||||
| `openclaw logs --follow` | Ikuti log gateway |
|
||||
> Feishu/Lark tidak mendukung menu slash-command bawaan, jadi kirim ini sebagai pesan teks biasa.
|
||||
|
||||
---
|
||||
|
||||
@ -465,37 +182,31 @@ openclaw pairing list feishu
|
||||
|
||||
### Bot tidak merespons di obrolan grup
|
||||
|
||||
1. Pastikan bot sudah ditambahkan ke grup
|
||||
2. Pastikan Anda melakukan @mention pada bot (perilaku default)
|
||||
3. Periksa `groupPolicy` tidak disetel ke `"disabled"`
|
||||
1. Pastikan bot telah ditambahkan ke grup
|
||||
2. Pastikan Anda @mention bot (diperlukan secara default)
|
||||
3. Verifikasi `groupPolicy` bukan `"disabled"`
|
||||
4. Periksa log: `openclaw logs --follow`
|
||||
|
||||
### Bot tidak menerima pesan
|
||||
|
||||
1. Pastikan aplikasi sudah dipublikasikan dan disetujui
|
||||
2. Pastikan langganan peristiwa menyertakan `im.message.receive_v1`
|
||||
3. Pastikan **long connection** diaktifkan
|
||||
4. Pastikan izin aplikasi sudah lengkap
|
||||
5. Pastikan gateway sedang berjalan: `openclaw gateway status`
|
||||
1. Pastikan bot telah dipublikasikan dan disetujui di Feishu Open Platform / Lark Developer
|
||||
2. Pastikan langganan event mencakup `im.message.receive_v1`
|
||||
3. Pastikan **persistent connection** (WebSocket) dipilih
|
||||
4. Pastikan semua cakupan izin yang diperlukan telah diberikan
|
||||
5. Pastikan Gateway sedang berjalan: `openclaw gateway status`
|
||||
6. Periksa log: `openclaw logs --follow`
|
||||
|
||||
### Kebocoran App Secret
|
||||
### App Secret bocor
|
||||
|
||||
1. Reset App Secret di Feishu Open Platform
|
||||
2. Perbarui App Secret di konfigurasi Anda
|
||||
3. Mulai ulang gateway
|
||||
|
||||
### Kegagalan pengiriman pesan
|
||||
|
||||
1. Pastikan aplikasi memiliki izin `im:message:send_as_bot`
|
||||
2. Pastikan aplikasi sudah dipublikasikan
|
||||
3. Periksa log untuk error yang lebih rinci
|
||||
1. Reset App Secret di Feishu Open Platform / Lark Developer
|
||||
2. Perbarui nilainya di konfigurasi Anda
|
||||
3. Mulai ulang Gateway: `openclaw gateway restart`
|
||||
|
||||
---
|
||||
|
||||
## Konfigurasi lanjutan
|
||||
|
||||
### Banyak akun
|
||||
### Beberapa akun
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -506,12 +217,12 @@ openclaw pairing list feishu
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
name: "Primary bot",
|
||||
name: "Bot utama",
|
||||
},
|
||||
backup: {
|
||||
appId: "cli_yyy",
|
||||
appSecret: "yyy",
|
||||
name: "Backup bot",
|
||||
name: "Bot cadangan",
|
||||
enabled: false,
|
||||
},
|
||||
},
|
||||
@ -520,43 +231,54 @@ openclaw pairing list feishu
|
||||
}
|
||||
```
|
||||
|
||||
`defaultAccount` mengontrol akun Feishu mana yang digunakan ketika API outbound tidak menentukan `accountId` secara eksplisit.
|
||||
`defaultAccount` mengontrol akun mana yang digunakan saat API keluar tidak menentukan `accountId`.
|
||||
|
||||
### Batas pesan
|
||||
|
||||
- `textChunkLimit`: ukuran potongan teks outbound (default: 2000 karakter)
|
||||
- `mediaMaxMb`: batas upload/download media (default: 30MB)
|
||||
- `textChunkLimit` — ukuran potongan teks keluar (default: `2000` karakter)
|
||||
- `mediaMaxMb` — batas unggah/unduh media (default: `30` MB)
|
||||
|
||||
### Streaming
|
||||
|
||||
Feishu mendukung balasan streaming melalui kartu interaktif. Saat diaktifkan, bot memperbarui kartu ketika menghasilkan teks.
|
||||
Feishu/Lark mendukung balasan streaming melalui kartu interaktif. Saat diaktifkan, bot memperbarui kartu secara real time saat menghasilkan teks.
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
streaming: true, // enable streaming card output (default true)
|
||||
blockStreaming: true, // enable block-level streaming (default true)
|
||||
streaming: true, // aktifkan output kartu streaming (default: true)
|
||||
blockStreaming: true, // aktifkan streaming tingkat blok (default: true)
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Tetapkan `streaming: false` untuk menunggu balasan lengkap sebelum mengirim.
|
||||
Setel `streaming: false` untuk mengirim balasan lengkap dalam satu pesan.
|
||||
|
||||
### Optimasi kuota
|
||||
|
||||
Kurangi jumlah panggilan API Feishu/Lark dengan dua flag opsional:
|
||||
|
||||
- `typingIndicator` (default `true`): setel ke `false` untuk melewati panggilan reaksi mengetik
|
||||
- `resolveSenderNames` (default `true`): setel ke `false` untuk melewati lookup profil pengirim
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
typingIndicator: false,
|
||||
resolveSenderNames: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Sesi ACP
|
||||
|
||||
Feishu mendukung ACP untuk:
|
||||
|
||||
- DM
|
||||
- percakapan topik grup
|
||||
|
||||
ACP Feishu dikendalikan oleh perintah teks. Tidak ada menu slash-command native, jadi gunakan pesan `/acp ...` langsung di percakapan.
|
||||
Feishu/Lark mendukung ACP untuk DM dan pesan thread grup. ACP Feishu/Lark digerakkan oleh perintah teks — tidak ada menu slash-command bawaan, jadi gunakan pesan `/acp ...` langsung di percakapan.
|
||||
|
||||
#### Binding ACP persisten
|
||||
|
||||
Gunakan binding ACP bertipe di level teratas untuk menautkan DM atau percakapan topik Feishu ke sesi ACP persisten.
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
@ -599,58 +321,39 @@ Gunakan binding ACP bertipe di level teratas untuk menautkan DM atau percakapan
|
||||
}
|
||||
```
|
||||
|
||||
#### Spawn ACP terikat thread dari obrolan
|
||||
#### Spawn ACP dari obrolan
|
||||
|
||||
Di DM atau percakapan topik Feishu, Anda dapat membuat dan menautkan sesi ACP langsung di tempat:
|
||||
Di DM atau thread Feishu/Lark:
|
||||
|
||||
```text
|
||||
/acp spawn codex --thread here
|
||||
```
|
||||
|
||||
Catatan:
|
||||
`--thread here` berfungsi untuk DM dan pesan thread Feishu/Lark. Pesan lanjutan dalam percakapan yang dibinding akan diarahkan langsung ke sesi ACP tersebut.
|
||||
|
||||
- `--thread here` berfungsi untuk DM dan topik Feishu.
|
||||
- Pesan lanjutan dalam DM/topik yang terikat dirutekan langsung ke sesi ACP tersebut.
|
||||
- v1 tidak menargetkan obrolan grup umum tanpa topik.
|
||||
### Perutean multi-agent
|
||||
|
||||
### Routing multi-agent
|
||||
|
||||
Gunakan `bindings` untuk merutekan DM atau grup Feishu ke agen yang berbeda.
|
||||
Gunakan `bindings` untuk merutekan DM atau grup Feishu/Lark ke agent yang berbeda.
|
||||
|
||||
```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" },
|
||||
@ -660,141 +363,84 @@ Gunakan `bindings` untuk merutekan DM atau grup Feishu ke agen yang berbeda.
|
||||
}
|
||||
```
|
||||
|
||||
Field routing:
|
||||
Bidang perutean:
|
||||
|
||||
- `match.channel`: `"feishu"`
|
||||
- `match.peer.kind`: `"direct"` atau `"group"`
|
||||
- `match.peer.kind`: `"direct"` (DM) atau `"group"` (obrolan grup)
|
||||
- `match.peer.id`: Open ID pengguna (`ou_xxx`) atau ID grup (`oc_xxx`)
|
||||
|
||||
Lihat [Dapatkan ID grup/pengguna](#get-groupuser-ids) untuk tips pencarian.
|
||||
Lihat [Dapatkan ID grup/pengguna](#dapatkan-id-gruppengguna) untuk tips pencarian.
|
||||
|
||||
---
|
||||
|
||||
## Referensi konfigurasi
|
||||
|
||||
Konfigurasi lengkap: [Gateway configuration](/gateway/configuration)
|
||||
Konfigurasi lengkap: [Konfigurasi Gateway](/id/gateway/configuration)
|
||||
|
||||
Opsi utama:
|
||||
|
||||
| Pengaturan | Deskripsi | Default |
|
||||
| ------------------------------------------------- | --------------------------------------- | ---------------- |
|
||||
| `channels.feishu.enabled` | Aktifkan/nonaktifkan channel | `true` |
|
||||
| `channels.feishu.domain` | Domain API (`feishu` atau `lark`) | `feishu` |
|
||||
| `channels.feishu.connectionMode` | Mode transport peristiwa | `websocket` |
|
||||
| `channels.feishu.defaultAccount` | ID akun default untuk routing outbound | `default` |
|
||||
| `channels.feishu.verificationToken` | Wajib untuk mode webhook | - |
|
||||
| `channels.feishu.encryptKey` | Wajib untuk mode webhook | - |
|
||||
| `channels.feishu.webhookPath` | Path rute webhook | `/feishu/events` |
|
||||
| `channels.feishu.webhookHost` | Host bind webhook | `127.0.0.1` |
|
||||
| `channels.feishu.webhookPort` | Port bind webhook | `3000` |
|
||||
| `channels.feishu.accounts.<id>.appId` | App ID | - |
|
||||
| `channels.feishu.accounts.<id>.appSecret` | App Secret | - |
|
||||
| `channels.feishu.accounts.<id>.domain` | Override domain API per akun | `feishu` |
|
||||
| `channels.feishu.dmPolicy` | Kebijakan DM | `pairing` |
|
||||
| `channels.feishu.allowFrom` | Allowlist DM (daftar `open_id`) | - |
|
||||
| `channels.feishu.groupPolicy` | Kebijakan grup | `allowlist` |
|
||||
| `channels.feishu.groupAllowFrom` | Allowlist grup | - |
|
||||
| `channels.feishu.requireMention` | Persyaratan @mention default | conditional |
|
||||
| `channels.feishu.groups.<chat_id>.requireMention` | Override @mention wajib per grup | inherited |
|
||||
| `channels.feishu.groups.<chat_id>.enabled` | Aktifkan grup | `true` |
|
||||
| `channels.feishu.textChunkLimit` | Ukuran potongan pesan | `2000` |
|
||||
| `channels.feishu.mediaMaxMb` | Batas ukuran media | `30` |
|
||||
| `channels.feishu.streaming` | Aktifkan output kartu streaming | `true` |
|
||||
| `channels.feishu.blockStreaming` | Aktifkan streaming per blok | `true` |
|
||||
|
||||
---
|
||||
|
||||
## Referensi dmPolicy
|
||||
|
||||
| Nilai | Perilaku |
|
||||
| ------------- | --------------------------------------------------------------- |
|
||||
| `"pairing"` | **Default.** Pengguna tak dikenal mendapatkan kode pairing; harus disetujui |
|
||||
| `"allowlist"` | Hanya pengguna di `allowFrom` yang dapat mengobrol |
|
||||
| `"open"` | Izinkan semua pengguna (memerlukan `"*"` di `allowFrom`) |
|
||||
| `"disabled"` | Nonaktifkan DM |
|
||||
| Setting | Deskripsi | Default |
|
||||
| ------------------------------------------------- | ----------------------------------------- | ---------------- |
|
||||
| `channels.feishu.enabled` | Aktifkan/nonaktifkan saluran | `true` |
|
||||
| `channels.feishu.domain` | Domain API (`feishu` atau `lark`) | `feishu` |
|
||||
| `channels.feishu.connectionMode` | Transport event (`websocket` atau `webhook`) | `websocket` |
|
||||
| `channels.feishu.defaultAccount` | Akun default untuk perutean keluar | `default` |
|
||||
| `channels.feishu.verificationToken` | Diperlukan untuk mode webhook | — |
|
||||
| `channels.feishu.encryptKey` | Diperlukan untuk mode webhook | — |
|
||||
| `channels.feishu.webhookPath` | Jalur rute webhook | `/feishu/events` |
|
||||
| `channels.feishu.webhookHost` | Host bind webhook | `127.0.0.1` |
|
||||
| `channels.feishu.webhookPort` | Port bind webhook | `3000` |
|
||||
| `channels.feishu.accounts.<id>.appId` | App ID | — |
|
||||
| `channels.feishu.accounts.<id>.appSecret` | App Secret | — |
|
||||
| `channels.feishu.accounts.<id>.domain` | Override domain per akun | `feishu` |
|
||||
| `channels.feishu.dmPolicy` | Kebijakan DM | `allowlist` |
|
||||
| `channels.feishu.allowFrom` | Allowlist DM (daftar `open_id`) | [BotOwnerId] |
|
||||
| `channels.feishu.groupPolicy` | Kebijakan grup | `allowlist` |
|
||||
| `channels.feishu.groupAllowFrom` | Allowlist grup | — |
|
||||
| `channels.feishu.requireMention` | Memerlukan @mention di grup | `true` |
|
||||
| `channels.feishu.groups.<chat_id>.requireMention` | Override @mention per grup | inherited |
|
||||
| `channels.feishu.groups.<chat_id>.enabled` | Aktifkan/nonaktifkan grup tertentu | `true` |
|
||||
| `channels.feishu.textChunkLimit` | Ukuran potongan pesan | `2000` |
|
||||
| `channels.feishu.mediaMaxMb` | Batas ukuran media | `30` |
|
||||
| `channels.feishu.streaming` | Output kartu streaming | `true` |
|
||||
| `channels.feishu.blockStreaming` | Streaming tingkat blok | `true` |
|
||||
| `channels.feishu.typingIndicator` | Kirim reaksi mengetik | `true` |
|
||||
| `channels.feishu.resolveSenderNames` | Resolve nama tampilan pengirim | `true` |
|
||||
|
||||
---
|
||||
|
||||
## Jenis pesan yang didukung
|
||||
|
||||
### Menerima
|
||||
### Terima
|
||||
|
||||
- ✅ Teks
|
||||
- ✅ Rich text (post)
|
||||
- ✅ Teks kaya (post)
|
||||
- ✅ Gambar
|
||||
- ✅ File
|
||||
- ✅ Audio
|
||||
- ✅ Video/media
|
||||
- ✅ Stiker
|
||||
|
||||
### Mengirim
|
||||
### Kirim
|
||||
|
||||
- ✅ Teks
|
||||
- ✅ Gambar
|
||||
- ✅ File
|
||||
- ✅ Audio
|
||||
- ✅ Video/media
|
||||
- ✅ Kartu interaktif
|
||||
- ⚠️ Rich text (pemformatan gaya post dan kartu, bukan fitur authoring Feishu yang sewenang-wenang)
|
||||
- ✅ Kartu interaktif (termasuk pembaruan streaming)
|
||||
- ⚠️ Teks kaya (pemformatan gaya post; tidak mendukung seluruh kemampuan authoring Feishu/Lark)
|
||||
|
||||
### Thread dan balasan
|
||||
|
||||
- ✅ Balasan inline
|
||||
- ✅ Balasan topic-thread saat Feishu mengekspos `reply_in_thread`
|
||||
- ✅ Balasan media tetap sadar thread saat membalas pesan thread/topik
|
||||
- ✅ Balasan thread
|
||||
- ✅ Balasan media tetap sadar-thread saat membalas pesan thread
|
||||
|
||||
## Komentar Drive
|
||||
|
||||
Feishu dapat memicu agen ketika seseorang menambahkan komentar pada dokumen Feishu Drive (Docs, Sheets,
|
||||
dan lain-lain). Agen menerima teks komentar, konteks dokumen, dan thread komentar sehingga dapat
|
||||
merespons di dalam thread atau melakukan edit dokumen.
|
||||
|
||||
Persyaratan:
|
||||
|
||||
- Berlangganan ke `drive.notice.comment_add_v1` di pengaturan langganan peristiwa aplikasi Feishu Anda
|
||||
(bersama `im.message.receive_v1` yang sudah ada)
|
||||
- Tool Drive aktif secara default; nonaktifkan dengan `channels.feishu.tools.drive: false`
|
||||
|
||||
Tool `feishu_drive` mengekspos tindakan komentar berikut:
|
||||
|
||||
| Tindakan | Deskripsi |
|
||||
| ---------------------- | -------------------------------------- |
|
||||
| `list_comments` | Daftarkan komentar pada dokumen |
|
||||
| `list_comment_replies` | Daftarkan balasan dalam thread komentar |
|
||||
| `add_comment` | Tambahkan komentar tingkat atas baru |
|
||||
| `reply_comment` | Balas thread komentar yang ada |
|
||||
|
||||
Saat agen menangani peristiwa komentar Drive, agen menerima:
|
||||
|
||||
- teks komentar dan pengirim
|
||||
- metadata dokumen (judul, jenis, URL)
|
||||
- konteks thread komentar untuk balasan dalam thread
|
||||
|
||||
Setelah melakukan edit dokumen, agen diarahkan untuk menggunakan `feishu_drive.reply_comment` guna memberi tahu
|
||||
pemberi komentar lalu mengeluarkan token senyap yang persis `NO_REPLY` / `no_reply` untuk
|
||||
menghindari pengiriman duplikat.
|
||||
|
||||
## Permukaan tindakan runtime
|
||||
|
||||
Feishu saat ini mengekspos tindakan runtime berikut:
|
||||
|
||||
- `send`
|
||||
- `read`
|
||||
- `edit`
|
||||
- `thread-reply`
|
||||
- `pin`
|
||||
- `list-pins`
|
||||
- `unpin`
|
||||
- `member-info`
|
||||
- `channel-info`
|
||||
- `channel-list`
|
||||
- `react` dan `reactions` saat reaksi diaktifkan dalam konfigurasi
|
||||
- tindakan komentar `feishu_drive`: `list_comments`, `list_comment_replies`, `add_comment`, `reply_comment`
|
||||
---
|
||||
|
||||
## Terkait
|
||||
|
||||
- [Channels Overview](/channels) — semua channel yang didukung
|
||||
- [Pairing](/channels/pairing) — autentikasi DM dan alur pairing
|
||||
- [Groups](/channels/groups) — perilaku obrolan grup dan pembatasan mention
|
||||
- [Channel Routing](/channels/channel-routing) — routing sesi untuk pesan
|
||||
- [Security](/gateway/security) — model akses dan penguatan
|
||||
- [Ikhtisar Saluran](/id/channels) — semua saluran yang didukung
|
||||
- [Pairing](/id/channels/pairing) — autentikasi DM dan alur pairing
|
||||
- [Grup](/id/channels/groups) — perilaku obrolan grup dan pembatasan mention
|
||||
- [Perutean Saluran](/id/channels/channel-routing) — perutean sesi untuk pesan
|
||||
- [Keamanan](/id/gateway/security) — model akses dan hardening
|
||||
|
||||
Loading…
Reference in New Issue
Block a user