การสร้างบน Antimatter
คู่มือนี้จัดทำขึ้นสำหรับนักพัฒนา ครอบคลุมสคริปต์และบอทที่ใช้ API การเชื่อมต่อที่สร้างบน webhooks และคำสั่งสแลช แอป (ปลั๊กอิน) ที่เพิ่มฟีเจอร์ให้กับเซิร์ฟเวอร์และเว็บแอป และวิธีการสร้าง Antimatter จากซอร์สโค้ดเพื่อมีส่วนร่วม
วิธีขยาย Antimatter
เลือกเครื่องมือที่เบาที่สุดที่ทำงานได้ 4 ตัวแรกไม่จำเป็นต้องเข้าถึงตัวเซิร์ฟเวอร์โดยตรง ส่วนแอปจะทำงานภายในเซิร์ฟเวอร์
| เครื่องมือ | สิ่งที่ทำ | เหมาะสำหรับ |
|---|---|---|
| REST API | ทุกอย่างที่แอปทำได้: ข้อความ, ช่อง, ผู้คน, ไฟล์, การตั้งค่า WebSocket จะส่งเหตุการณ์เมื่อเกิดขึ้น | สคริปต์, การซิงโครไนซ์กับระบบอื่น, ไคลเอนต์แบบกำหนดเอง |
| Incoming webhooks | URL ลับที่โพสต์ข้อความไปยังช่องเมื่อมีใครส่ง JSON มา | การแจ้งเตือน, ผลลัพธ์ CI, การตรวจสอบระบบ, การแจ้งเตือนจากเครื่องมืออื่น |
| Outgoing webhooks | Antimatter จะเรียก 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/publicAntimatter เพิ่มเฉพาะเมธอดสำหรับบริการ AI (ดู บริการ AI) - รีเจสทรีของปลั๊กอินเว็บแอป: เมธอด
register…ทั้งหมดของรีเจสทรี Mattermost มีอยู่ในอินเทอร์เฟซเว็บทั้งสองของ Antimatter - ไลบรารีไคลเอนต์: Go client
model.Client4และ TypeScript client@mattermost/client(ดู ไลบรารีไคลเอนต์) - แพ็กเกจของปลั๊กอิน: ไฟล์
.tar.gzที่มี manifestplugin.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, สไตล์, การแปลภาษา, ความปลอดภัย และสัญญาอนุญาต
ยินดีต้อนรับคำถามใน การอภิปรายของชุมชน. รายงานบั๊กใน ปัญหาของชุมชน.