การสร้างบน Antimatter

คู่มือนี้จัดทำขึ้นสำหรับนักพัฒนา ครอบคลุมสคริปต์และบอทที่ใช้ API การเชื่อมต่อที่สร้างบน webhooks และคำสั่งสแลช แอป (ปลั๊กอิน) ที่เพิ่มฟีเจอร์ให้กับเซิร์ฟเวอร์และเว็บแอป และวิธีการสร้าง Antimatter จากซอร์สโค้ดเพื่อมีส่วนร่วม

วิธีขยาย Antimatter

เลือกเครื่องมือที่เบาที่สุดที่ทำงานได้ 4 ตัวแรกไม่จำเป็นต้องเข้าถึงตัวเซิร์ฟเวอร์โดยตรง ส่วนแอปจะทำงานภายในเซิร์ฟเวอร์

เครื่องมือสิ่งที่ทำเหมาะสำหรับ
REST APIทุกอย่างที่แอปทำได้: ข้อความ, ช่อง, ผู้คน, ไฟล์, การตั้งค่า WebSocket จะส่งเหตุการณ์เมื่อเกิดขึ้นสคริปต์, การซิงโครไนซ์กับระบบอื่น, ไคลเอนต์แบบกำหนดเอง
Incoming webhooksURL ลับที่โพสต์ข้อความไปยังช่องเมื่อมีใครส่ง JSON มาการแจ้งเตือน, ผลลัพธ์ CI, การตรวจสอบระบบ, การแจ้งเตือนจากเครื่องมืออื่น
Outgoing webhooksAntimatter จะเรียก URL ของคุณเมื่อข้อความในช่องสาธารณะเริ่มต้นด้วยคำกระตุ้น หรือเมื่อมีคนเลือกการกระทำของคุณในเมนูของข้อความ และจะโพสต์คำตอบของคุณระบบอัตโนมัติที่ขับเคลื่อนด้วยแชทอย่างง่าย, การส่งข้อความไปยังเครื่องมืออื่น
Slash commandsผู้ใช้พิมพ์ /something; Antimatter จะเรียก URL ของคุณและแสดงคำตอบของคุณให้พวกเขาหรือให้ช่องการค้นหา, การดำเนินการที่เริ่มจากแชท
Botsบัญชีที่สร้างสำหรับโปรแกรม พร้อมโทเคนของตัวเอง, แท็ก BOT, และข้อความและไดอะล็อกแบบโต้ตอบผู้ช่วย, ตัวแจ้งเตือน, สิ่งใดก็ตามที่สนทนากับผู้คน
Apps (plugins)โค้ดที่ทำงานภายในเซิร์ฟเวอร์ (Go) และในเว็บแอป (React): ฮุคสำหรับทุกข้อความ, เมนูใหม่, แผง, ประเภทข้อความ, หน้าฟีเจอร์: โพล, โน้ต, ปฏิทิน, การเชื่อมต่อที่ต้องการส่วนติดต่อผู้ใช้

ในอินเทอร์เฟซ ผู้ใช้เรียกปลั๊กอินว่า "แอป" คู่มือนี้จะใช้คำว่า "แอป (ปลั๊กอิน)" ในจุดที่ทั้งสองคำช่วยความเข้าใจ เนื่องจากโค้ด, API และการตั้งค่ายังคงใช้คำว่า "plugin"

ความเข้ากันได้กับ Mattermost

Antimatter เป็นฟอร์กของ Mattermost สิ่งส่วนใหญ่ที่ทำงานกับเซิร์ฟเวอร์ Mattermost จะทำงานกับ Antimatter ได้

สิ่งที่เหมือนกัน

  • REST API ใต้ /api/v4 การยืนยันตัวตน WebSocket และรูปแบบของข้อผิดพลาด เซิร์ฟเวอร์รายงานเวอร์ชัน 12.0.0 ดังนั้นไคลเอนต์และแอปที่ตรวจสอบเวอร์ชันของเซิร์ฟเวอร์จะเห็นว่าเป็น Mattermost เวอร์ชันล่าสุด
  • Webhook และคำสั่งสแลช รวมถึง payload ที่เข้ากันได้กับ Slack
  • API และ hooks ของปลั๊กอินเซิร์ฟเวอร์: Antimatter ยังคงรักษาไว้ตามเดิม โค้ดเซิร์ฟเวอร์จะสร้าง (build) ต่อจาก Go module เดิมคือ github.com/mattermost/mattermost/server/public Antimatter เพิ่มเฉพาะเมธอดสำหรับบริการ AI (ดู บริการ AI)
  • รีเจสทรีของปลั๊กอินเว็บแอป: เมธอด register… ทั้งหมดของรีเจสทรี Mattermost มีอยู่ในอินเทอร์เฟซเว็บทั้งสองของ Antimatter
  • ไลบรารีไคลเอนต์: Go client model.Client4 และ TypeScript client @mattermost/client (ดู ไลบรารีไคลเอนต์)
  • แพ็กเกจของปลั๊กอิน: ไฟล์ .tar.gz ที่มี manifest plugin.json ปลั๊กอินที่ลงนามด้วยคีย์ของ Mattermost ติดตั้งได้ เช่นเดียวกับปลั๊กอินที่ลงนามด้วยคีย์ของ Antimatter

สิ่งที่แตกต่าง

  • อินเทอร์เฟซเว็บสองแบบ. อินเทอร์เฟซใหม่ Fusion เป็นค่าเริ่มต้น อินเทอร์เฟซ Mattermost แบบคลาสสิกยังคงมีให้ใช้งาน Fusion แสดงองค์ประกอบของปลั๊กอินส่วนใหญ่ แต่จัดวางบางตัวไว้ในตำแหน่งที่แตกต่างออกไป และละเว้นบางตัว แอปสามารถระบุได้ว่าอินเทอร์เฟซใดกำลังทำงานอยู่ ดู การรองรับอินเทอร์เฟซ Fusion
  • API เพิ่มเติม. Antimatter เพิ่ม endpoints สำหรับฟีเจอร์ของตนเอง: community attributes, timeouts, messages on top, message requests, channel and category overrides, channel export, moving threads, model connections, message actions และฟิลด์ใหม่บน communities ดู สิ่งที่ Antimatter เพิ่มใน API
  • ฟีเจอร์ข้อความเพิ่มเติม. ไฟล์แนบของข้อความสามารถแสดงขั้นตอนของ pipeline และกราฟขนาดเล็ก โพสต์สามารถเป็นแบบตอบกลับในบรรทัดเดียวกัน (inline replies) หรือแบบสปอยล์ (spoilers)
  • hooks ของเว็บแอปเพิ่มเติม สำหรับแอป: รายการในเมนู "+" ของ composer, แท็บใน emoji picker, แผง (panel) ในมุมมองของช่อง, ส่วนท้าย (footer) ใต้ช่องในแถบด้านข้าง, รายการในหน้า integrations, มุมมองเพิ่มและจัดการใน emoji picker และแผงด้านข้าง (side panel) ที่เปิดใหม่ในตำแหน่งเดิมในหน้าต่างใหม่ ดู Hooks ที่มีเฉพาะใน Antimatter
  • ไม่มีใบอนุญาต. ทุกฟีเจอร์ใช้งานได้เลยโดยไม่ต้องใช้คีย์ใบอนุญาต จุดเชื่อมต่อสำหรับใบอนุญาต การทดลองใช้ และการอัปเกรดเป็นเวอร์ชันองค์กรได้ถูกลบไปแล้ว; GET /api/v4/license/client ยังคงอยู่สำหรับไคลเอนต์ที่ร้องขอ บางแอปที่สร้างสำหรับเวอร์ชันเสียเงินของ Mattermost จะตรวจสอบใบอนุญาตด้วยตนเองและปฏิเสธการทำงาน
  • ชื่อ. ในอินเทอร์เฟซ ทิมจะถูกเรียกว่าชุมชน แต่ API และโค้ดยังคงใช้คำว่า team ตัวแปรสภาพแวดล้อมใช้พรีฟิกซ์ AM_ เครื่องมือบรรทัดคำสั่งคือ amctl และไฟล์ไบนารีของเซิร์ฟเวอร์คือ antimatter

ที่ที่โค้ดตั้งอยู่

ทุกอย่างคือโอเพนซอร์ส อยู่ในองค์กร AntimatterChat บน GitHub ทุกเรปอสิทอรีทำงานบนสาขา main

เรปอสิทอรีСодержимое
antimatterเซิร์ฟเวอร์ (Go, อยู่ใน server/), อินเทอร์เฟซเว็บทั้งสอง (webapp/fusion และ webapp/channels), ไคลเอนต์ TypeScript และ amctl
antimatter-dockerภาพ Docker พร้อมแอปที่รวมมาให้ และไฟล์ compose
antimatter-plugin-*เรปอสิทอรีหนึ่งต่อแอปที่รวมมาให้: polls, todo, notes, whiteboard, calendar, mail, gifs, memes, voice-channels, calls, boards (Kanban), playbooks, agents และ metrics
gifs-serverบริการ GIF และสติ๊กเกอร์แบบโฮสต์เอง ซึ่งใช้โดยแอป GIFs
desktop-app, mobile-app, push-proxyแอปเดสก์ท็อปและแอปมือถือ รวมถึงบริการที่ส่งต่อการแจ้งเตือนแบบ push ไปยังโทรศัพท์
antimatter.chatเว็บไซต์และเอกสารประกอบ
communityปัญหาและการอภิปรายสำหรับทุกส่วนประกอบของ Antimatter

ก่อนที่คุณจะเริ่่ม

  • รับเซิร์ฟเวอร์สำหรับทดสอบ. วิธีที่เร็วที่สุดคือการใช้ Docker image: ดูที่ การติดตั้ง Antimatter. หากต้องการทำงานกับตัว Antimatter โดยตรง ดูที่ การสร้างจากซอร์สโค้ด.
  • ตรวจสอบว่าเซิร์ฟเวอร์อนุญาตอะไรบ้าง. ฟีเจอร์การเชื่อมต่อหลายอย่างถูกปิดไว้โดยค่าเริ่มต้นและต้องการผู้ดูแลระบบ: personal access tokens, บัญชีบอท, การเปลี่ยนชื่อผู้ใช้และไอคอน, และการอัปโหลดแอป แต่ละหน้าจะระบุการตั้งค่าที่จำเป็นไว้
  • จดจำ URL ของเว็บไซต์คุณ. ตัวอย่างใช้ https://chat.example.com. ให้แทนที่ด้วยที่อยู่ของเซิร์ฟเวอร์คุณ

ในคู่มือนี้

  • REST API: การยืนยันตัวตน, ทรัพยากรหลัก, การแบ่งหน้า, ข้อผิดพลาด, ข้อจำกัดของอัตรา, WebSocket, ไลบรารีสำหรับไคลเอนต์, และส่วนเพิ่มเติมของ Antimatter
  • Webhooks: Webhooks ที่รับเข้าและส่งออก, payloads, ไฟล์แนบ และการ์ด
  • คำสั่งสแลช: คำสั่งแบบกำหนดเอง, คำขอและคำตอบ, การเติมอัตโนมัติ
  • บอทและข้อความแบบโต้ตอบ: บัญชีบอท, ปุ่ม, เมนู และกล่องโต้ตอบ
  • การเขียนแอป: โครงสร้างของปลั๊กอิน, server hooks, ฐานข้อมูลของแอปเว็บ, Fusion, การตั้งค่า, การเก็บข้อมูล, การแปลภาษา และการแพ็กเกจ
  • การสร้างจากซอร์สโค้ด: เซิร์ฟเวอร์, อินเทอร์เฟซเว็บ, Docker image และแอป
  • การมีส่วนร่วม: ปัญหา, pull requests, สไตล์, การแปลภาษา, ความปลอดภัย และสัญญาอนุญาต
ยินดีต้อนรับคำถามใน การอภิปรายของชุมชน. รายงานบั๊กใน ปัญหาของชุมชน.