Developer and self-hosted
Nextcloud Talk
Nextcloud Talk เป็น Plugin ช่องทางที่ดาวน์โหลดได้ (@openclaw/nextcloud-talk) ซึ่งเชื่อมต่อ OpenClaw กับอินสแตนซ์ Nextcloud ที่โฮสต์เองผ่านบอต Webhook ของ Talk รองรับข้อความส่วนตัว ห้อง การแสดงความรู้สึก และข้อความ Markdown ส่วนสื่อขาออกจะส่งเป็น URL
ติดตั้ง
openclaw plugins install @openclaw/nextcloud-talkใช้ข้อกำหนดแพ็กเกจแบบไม่มีเวอร์ชันเพื่อติดตามแท็กรีลีสทางการปัจจุบัน ตรึงเวอร์ชันที่แน่นอนเฉพาะเมื่อต้องการให้การติดตั้งทำซ้ำได้
จากเช็กเอาต์ภายในเครื่อง (เวิร์กโฟลว์การพัฒนา):
openclaw plugins install ./path/to/local/nextcloud-talk-pluginรีสตาร์ต Gateway หลังติดตั้ง รายละเอียด: Plugin
การตั้งค่าด่วน (สำหรับผู้เริ่มต้น)
-
ติดตั้ง Plugin (ตามด้านบน)
-
สร้างบอตบนเซิร์ฟเวอร์ Nextcloud ของคุณ:
bash ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature webhook --feature response --feature reactionคง
--feature responseไว้ หากไม่มีฟีเจอร์นี้ การตอบกลับขาออกจะล้มเหลวด้วย 401 ซ่อมแซมบอตที่มีอยู่ด้วย./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1 -
เปิดใช้งานบอตในการตั้งค่าห้องเป้าหมาย
-
กำหนดค่า OpenClaw:
- การกำหนดค่า:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - หรือตัวแปรสภาพแวดล้อม:
NEXTCLOUD_TALK_BOT_SECRET(เฉพาะบัญชีเริ่มต้น)
การตั้งค่าผ่าน CLI (
--url/--tokenเป็นนามแฝงของฟิลด์แบบระบุชัดเจน ส่วนnc-talkและncใช้เป็นนามแฝงของช่องทางได้):bash openclaw channels add --channel nextcloud-talk \ --url https://cloud.example.com \ --token "<shared-secret>"ฟิลด์แบบระบุชัดเจนที่เทียบเท่ากัน:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret "<shared-secret>"ข้อมูลลับที่เก็บในไฟล์:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret-file /path/to/nextcloud-talk-secret - การกำหนดค่า:
-
รีสตาร์ต Gateway (หรือตั้งค่าให้เสร็จสิ้น)
การกำหนดค่าขั้นต่ำ:
{ channels: { "nextcloud-talk": { enabled: true, baseUrl: "https://cloud.example.com", botSecret: "shared-secret", dmPolicy: "pairing", }, },}หมายเหตุ
- บอตไม่สามารถเริ่มข้อความส่วนตัวได้ ผู้ใช้ต้องส่งข้อความถึงบอตก่อน
- URL ของ Webhook ต้องเข้าถึงได้จากเซิร์ฟเวอร์ Nextcloud ให้ตั้งค่า
webhookPublicUrlเมื่อ Gateway อยู่หลังพร็อกซี คำขอ Webhook จะลงนามด้วย HMAC-SHA256 โดยใช้ข้อมูลลับของบอต ลายเซ็นที่ไม่ถูกต้องจะถูกปฏิเสธและจำกัดอัตรา - API ของบอตไม่รองรับการอัปโหลดสื่อ สื่อขาออกจะถูกต่อท้ายเป็นบรรทัด
Attachment: <url> - เพย์โหลดของ Webhook ไม่แยกความแตกต่างระหว่างข้อความส่วนตัวกับห้อง ให้ตั้งค่า
apiUser+apiPasswordเพื่อเปิดใช้การค้นหาประเภทห้อง (แคชประมาณ 5 นาที) หากไม่ตั้งค่า การสนทนาทั้งหมดจะถือว่าเป็นห้อง - คำขอขาออกจะผ่านตัวป้องกัน SSRF สำหรับโฮสต์ Nextcloud บนเครือข่ายส่วนตัว/ภายในที่เชื่อถือได้ ให้เลือกเปิดใช้ด้วย
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true - เมื่อตั้งค่า
apiUser/apiPasswordและwebhookPublicUrlแล้วopenclaw channels statusจะตรวจสอบบอตและเตือนเมื่อไม่มีฟีเจอร์response
การควบคุมการเข้าถึง (ข้อความส่วนตัว)
- ค่าเริ่มต้น:
channels.nextcloud-talk.dmPolicy = "pairing"ผู้ส่งที่ไม่รู้จักจะได้รับรหัสจับคู่ - อนุมัติผ่าน:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- ข้อความส่วนตัวแบบสาธารณะ:
channels.nextcloud-talk.dmPolicy="open"ร่วมกับchannels.nextcloud-talk.allowFrom=["*"] allowFromจับคู่เฉพาะ ID ผู้ใช้ Nextcloud เท่านั้น (แปลงเป็นตัวพิมพ์เล็ก) โดยไม่พิจารณาชื่อที่แสดง
ห้อง (กลุ่ม)
- ค่าเริ่มต้น:
channels.nextcloud-talk.groupPolicy = "allowlist"(ต้องมีการกล่าวถึง) - อนุญาตห้องด้วย
channels.nextcloud-talk.roomsโดยใช้โทเค็นห้องเป็นคีย์ ส่วน"*"ใช้กำหนดค่าเริ่มต้นแบบไวลด์การ์ด:
{ channels: { "nextcloud-talk": { rooms: { "room-token": { requireMention: true }, }, }, },}- คีย์ต่อห้อง:
requireMention(ค่าเริ่มต้นคือ true),enabled(false ปิดใช้งานห้อง),allowFrom(รายการอนุญาตผู้ส่งเฉพาะห้อง),tools(เขียนทับการอนุญาต/ปฏิเสธเครื่องมือ),skills(จำกัด Skills ที่โหลด),systemPrompt - หากไม่ต้องการอนุญาตห้องใด ให้ปล่อยรายการอนุญาตว่างไว้หรือตั้งค่า
channels.nextcloud-talk.groupPolicy="disabled"
ความสามารถ
| ฟีเจอร์ | สถานะ |
|---|---|
| ข้อความส่วนตัว | รองรับ |
| ห้อง | รองรับ |
| เธรด | ไม่รองรับ |
| สื่อ | เฉพาะ URL |
| การแสดงความรู้สึก | รองรับ |
| คำสั่งแบบเนทีฟ | ไม่รองรับ |
ข้อมูลอ้างอิงการกำหนดค่า (Nextcloud Talk)
การกำหนดค่าทั้งหมด: การกำหนดค่า
ตัวเลือกของผู้ให้บริการ:
channels.nextcloud-talk.enabled: เปิด/ปิดการเริ่มทำงานของช่องทางchannels.nextcloud-talk.baseUrl: URL ของอินสแตนซ์ Nextcloudchannels.nextcloud-talk.botSecret: ข้อมูลลับที่ใช้ร่วมกันของบอต (สตริงหรือข้อมูลอ้างอิงข้อมูลลับ)channels.nextcloud-talk.botSecretFile: พาธข้อมูลลับที่เป็นไฟล์ปกติ ระบบจะปฏิเสธลิงก์สัญลักษณ์channels.nextcloud-talk.apiUser: ผู้ใช้ API สำหรับค้นหาห้อง (ตรวจจับข้อความส่วนตัว) และตรวจสอบสถานะchannels.nextcloud-talk.apiPassword: รหัสผ่าน API/แอปสำหรับค้นหาห้องchannels.nextcloud-talk.apiPasswordFile: พาธไฟล์รหัสผ่าน APIchannels.nextcloud-talk.webhookPort: พอร์ตตัวรับฟัง Webhook (ค่าเริ่มต้น: 8788)channels.nextcloud-talk.webhookHost: โฮสต์ Webhook (ค่าเริ่มต้น: 0.0.0.0)channels.nextcloud-talk.webhookPath: พาธ Webhook (ค่าเริ่มต้น: /nextcloud-talk-webhook)channels.nextcloud-talk.webhookPublicUrl: URL ของ Webhook ที่เข้าถึงได้จากภายนอกchannels.nextcloud-talk.dmPolicy:pairing | allowlist | open | disabled(ค่าเริ่มต้น: pairing)openต้องใช้allowFrom=["*"]channels.nextcloud-talk.allowFrom: รายการอนุญาตข้อความส่วนตัว (ID ผู้ใช้)channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(ค่าเริ่มต้น: allowlist)channels.nextcloud-talk.groupAllowFrom: รายการอนุญาตผู้ส่งในห้อง (ID ผู้ใช้) หากไม่ได้ตั้งค่า จะย้อนกลับไปใช้allowFromchannels.nextcloud-talk.rooms: การตั้งค่าและรายการอนุญาตต่อห้อง (ดูด้านบน)- สามารถอ้างอิงกลุ่มการเข้าถึงแบบคงที่จาก
allowFromและgroupAllowFromด้วยaccessGroup:<name> channels.nextcloud-talk.historyLimit: ขีดจำกัดประวัติกลุ่ม (0 คือปิดใช้งาน)channels.nextcloud-talk.dmHistoryLimit: ขีดจำกัดประวัติข้อความส่วนตัว (0 คือปิดใช้งาน)channels.nextcloud-talk.dms: การเขียนทับเฉพาะข้อความส่วนตัวโดยใช้ ID ผู้ใช้เป็นคีย์ (historyLimit)channels.nextcloud-talk.textChunkLimit: ขนาดส่วนข้อความขาออกเป็นจำนวนอักขระ (ค่าเริ่มต้น: 4000)channels.nextcloud-talk.chunkMode:length(ค่าเริ่มต้น) หรือnewlineเพื่อแบ่งตามบรรทัดว่าง (ขอบเขตย่อหน้า) ก่อนแบ่งตามความยาวchannels.nextcloud-talk.blockStreaming: ปิดใช้งานการสตรีมแบบบล็อกสำหรับช่องทางนี้channels.nextcloud-talk.blockStreamingCoalesce: การปรับแต่งการรวมการสตรีมแบบบล็อกchannels.nextcloud-talk.responsePrefix: คำนำหน้าการตอบกลับขาออกchannels.nextcloud-talk.markdown.tables: โหมดแสดงผลตาราง Markdown (off | bullets | code | block)channels.nextcloud-talk.mediaMaxMb: ขีดจำกัดสื่อขาเข้า (MB)channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: อนุญาตให้โฮสต์ Nextcloud ส่วนตัว/ภายในผ่านตัวป้องกัน SSRFchannels.nextcloud-talk.accounts.<id>: การเขียนทับเฉพาะบัญชี (ใช้คีย์เดียวกัน) โดยdefaultAccountเลือกบัญชีเริ่มต้น ตัวแปรสภาพแวดล้อมNEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDใช้กับบัญชีเริ่มต้นเท่านั้น
ที่เกี่ยวข้อง
- ภาพรวมช่องทาง — ช่องทางทั้งหมดที่รองรับ
- การจับคู่ — การยืนยันตัวตนสำหรับข้อความส่วนตัวและขั้นตอนการจับคู่
- กลุ่ม — ลักษณะการทำงานของแชตกลุ่มและการกำหนดให้ต้องกล่าวถึง
- การกำหนดเส้นทางช่องทาง — การกำหนดเส้นทางเซสชันสำหรับข้อความ
- ความปลอดภัย — โมเดลการเข้าถึงและการเสริมความแข็งแกร่ง