Developer and self-hosted

Nextcloud Talk

Nextcloud Talk เป็น Plugin ช่องทางที่ดาวน์โหลดได้ (@openclaw/nextcloud-talk) ซึ่งเชื่อมต่อ OpenClaw กับอินสแตนซ์ Nextcloud ที่โฮสต์เองผ่านบอต Webhook ของ Talk รองรับข้อความส่วนตัว ห้อง การแสดงความรู้สึก และข้อความ Markdown ส่วนสื่อขาออกจะส่งเป็น URL

ติดตั้ง

bash
openclaw plugins install @openclaw/nextcloud-talk

ใช้ข้อกำหนดแพ็กเกจแบบไม่มีเวอร์ชันเพื่อติดตามแท็กรีลีสทางการปัจจุบัน ตรึงเวอร์ชันที่แน่นอนเฉพาะเมื่อต้องการให้การติดตั้งทำซ้ำได้

จากเช็กเอาต์ภายในเครื่อง (เวิร์กโฟลว์การพัฒนา):

bash
openclaw plugins install ./path/to/local/nextcloud-talk-plugin

รีสตาร์ต Gateway หลังติดตั้ง รายละเอียด: Plugin

การตั้งค่าด่วน (สำหรับผู้เริ่มต้น)

  1. ติดตั้ง Plugin (ตามด้านบน)

  2. สร้างบอตบนเซิร์ฟเวอร์ 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

  3. เปิดใช้งานบอตในการตั้งค่าห้องเป้าหมาย

  4. กำหนดค่า 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
  5. รีสตาร์ต Gateway (หรือตั้งค่าให้เสร็จสิ้น)

การกำหนดค่าขั้นต่ำ:

json5
{  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-talk
    • openclaw pairing approve nextcloud-talk &lt;CODE&gt;
  • ข้อความส่วนตัวแบบสาธารณะ: channels.nextcloud-talk.dmPolicy="open" ร่วมกับ channels.nextcloud-talk.allowFrom=["*"]
  • allowFrom จับคู่เฉพาะ ID ผู้ใช้ Nextcloud เท่านั้น (แปลงเป็นตัวพิมพ์เล็ก) โดยไม่พิจารณาชื่อที่แสดง

ห้อง (กลุ่ม)

  • ค่าเริ่มต้น: channels.nextcloud-talk.groupPolicy = "allowlist" (ต้องมีการกล่าวถึง)
  • อนุญาตห้องด้วย channels.nextcloud-talk.rooms โดยใช้โทเค็นห้องเป็นคีย์ ส่วน "*" ใช้กำหนดค่าเริ่มต้นแบบไวลด์การ์ด:
json5
{  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 ของอินสแตนซ์ Nextcloud
  • channels.nextcloud-talk.botSecret: ข้อมูลลับที่ใช้ร่วมกันของบอต (สตริงหรือข้อมูลอ้างอิงข้อมูลลับ)
  • channels.nextcloud-talk.botSecretFile: พาธข้อมูลลับที่เป็นไฟล์ปกติ ระบบจะปฏิเสธลิงก์สัญลักษณ์
  • channels.nextcloud-talk.apiUser: ผู้ใช้ API สำหรับค้นหาห้อง (ตรวจจับข้อความส่วนตัว) และตรวจสอบสถานะ
  • channels.nextcloud-talk.apiPassword: รหัสผ่าน API/แอปสำหรับค้นหาห้อง
  • channels.nextcloud-talk.apiPasswordFile: พาธไฟล์รหัสผ่าน API
  • channels.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 ผู้ใช้) หากไม่ได้ตั้งค่า จะย้อนกลับไปใช้ allowFrom
  • channels.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 ส่วนตัว/ภายในผ่านตัวป้องกัน SSRF
  • channels.nextcloud-talk.accounts.<id>: การเขียนทับเฉพาะบัญชี (ใช้คีย์เดียวกัน) โดย defaultAccount เลือกบัญชีเริ่มต้น ตัวแปรสภาพแวดล้อม NEXTCLOUD_TALK_BOT_SECRET / NEXTCLOUD_TALK_API_PASSWORD ใช้กับบัญชีเริ่มต้นเท่านั้น

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page