diff --git a/docs/id/channels/feishu.md b/docs/id/channels/feishu.md index 61b857521..4cd30f522 100644 --- a/docs/id/channels/feishu.md +++ b/docs/id/channels/feishu.md @@ -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 - -![Create enterprise app](/images/feishu-step2-create-app.png) - -### 3. Salin kredensial - -Dari **Credentials & Basic Info**, salin: - -- **App ID** (format: `cli_xxx`) -- **App Secret** - -❗ **Penting:** jaga kerahasiaan App Secret. - -![Get credentials](/images/feishu-step3-credentials.png) - -### 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"] - } -} -``` - -![Configure permissions](/images/feishu-step4-permissions.png) - -### 5. Aktifkan kemampuan bot - -Di **App Capability** > **Bot**: - -1. Aktifkan kemampuan bot -2. Tetapkan nama bot - -![Enable bot capability](/images/feishu-step5-bot-capability.png) - -### 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. - -![Configure event subscription](/images/feishu-step6-event-subscription.png) - -### 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. - -![Verification Token location](/images/feishu-verification-token.png) - -### 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..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 -``` - -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`. + + + + ```bash + openclaw channels login --channel feishu + ``` + Pindai kode QR dengan aplikasi seluler Feishu/Lark Anda untuk membuat bot Feishu/Lark secara otomatis. + + + + ```bash + openclaw gateway restart + ``` + + --- @@ -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 - ``` +- `"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 +``` ### 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..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..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..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 --- - - ## 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)** +![Get Group ID](/images/feishu-get-group-id.png) -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..appId` | App ID | - | -| `channels.feishu.accounts..appSecret` | App Secret | - | -| `channels.feishu.accounts..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..requireMention` | Override @mention wajib per grup | inherited | -| `channels.feishu.groups..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..appId` | App ID | — | +| `channels.feishu.accounts..appSecret` | App Secret | — | +| `channels.feishu.accounts..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..requireMention` | Override @mention per grup | inherited | +| `channels.feishu.groups..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