ساختن روی Antimatter
این راهنما برای توسعهدهندگان است. این راهنما اسکریپتها و رباتهایی را که از API استفاده میکنند، یکپارچهسازیهایی که بر پایه وبهوکها و دستورات اسلش ساخته میشوند، اپلیکیشنها (افزونههایی) که قابلیتهایی را به سرور و اپلیکیشن وب اضافه میکنند، و ساخت Antimatter از سورس برای مشارکت در آن را پوشش میدهد.
راههای گسترش Antimatter
سبکترین ابزاری را انتخاب کنید که کار را انجام میدهد. چهار مورد اول به دسترسی به خود سرور نیاز ندارند؛ اپلیکیشنها درون آن اجرا میشوند.
| ابزار | عملکرد | مناسب برای |
|---|---|---|
| REST API | همه چیزهایی که اپلیکیشنها انجام میدهند: پیامها، کانالها، افراد، فایلها، تنظیمات. یک WebSocket رویدادها را بهمحض وقوع ارسال میکند. | اسکریپتها، همگامسازی با سیستمهای دیگر، کلاینتهای سفارشی. |
| Incoming webhooks | یک URL مخفی که هنگام ارسال JSON از سمت یک منبع، پیامی را در یک کانال منتشر میکند. | هشدارها، نتایج CI، پایش، اعلانها از ابزارهای دیگر. |
| Outgoing webhooks | Antimatter هنگامی که پیامی در یک کانال عمومی با یک کلمه محرک شروع شود یا کسی عملیات شما را از منوی پیام انتخاب کند، به URL شما درخواست میفرستد و پاسخ شما را منتشر میکند. | اتوماسیونهای ساده مبتنی بر چت برای ارسال پیام به ابزارهای دیگر. |
| Slash commands | افراد /something را تایپ میکنند؛ Antimatter URL شما را فراخوانی میکند و پاسخ شما را برای آنها یا برای کانال نمایش میدهد. | جستجوهای سریع، اقداماتی که از چت آغاز میشوند. |
| Bots | حسابهای کاربری ساختهشده برای برنامهها، با توکنهای اختصاصی، برچسب بات (AGENT برای عاملهای هوش مصنوعی)، و پیامها و گفتگوهای تعاملی. | دستیارها، اطلاعرسانها، عاملهای هوش مصنوعی که خودتان اجرا میکنید، و هر چیزی که با افراد ارتباط برقرار میکند. |
| Apps (plugins) | کدی که درون سرور (Go) و در اپلیکیشن وب (React) اجرا میشود: هوکها روی هر پیام، منوهای جدید، پنلها، انواع پیام، صفحات. | قابلیتها: نظرسنجیها، یادداشتها، تقویمها، یکپارچهسازیهایی که به رابط کاربری نیاز دارند. |
در رابط کاربری، افراد افزونهها را «اپلیکیشن» مینامند. این راهنما در جاهایی که هر دو کلمه مفید هستند، «اپلیکیشنها (افزونهها)» میگوید، زیرا کد، API و پیکربندی هنوز «افزونه» میگویند.
سازگاری با Mattermost
Antimatter یک فورک از Mattermost است. بیشتر چیزهایی که با سرور Mattermost کار میکنند، با Antimatter نیز کار میکنند.
چه چیزهایی یکسان است
- REST API زیر
/api/v4، احراز هویت، WebSocket و فرمت خطای آن. سرور نسخه12.0.0را گزارش میدهد، بنابراین کلاینتها و اپلیکیشنهایی که نسخه سرور را بررسی میکنند، یک Mattermost جدید را میبینند. - وبهوکها و دستورات اسلش، شامل دادههای سازگار با اسلک.
- API و هوکهای پلاگین سرور: Antimatter آنها را بدون تغییر نگه میدارد. کد سرور بر اساس همان ماژول Go،
github.com/mattermost/mattermost/server/public، ساخته میشود. Antimatter فقط متدهای جدیدی برای سرویس هوش مصنوعی خود (بازدید سرویس هوش مصنوعی) اضافه میکند. - رجیستری پلاگین وباپ: هر روش
register…از رجیستری Mattermost در هر دو رابط کاربری وب Antimatter وجود دارد. - کتابخانههای کلاینت: کلاینت Go با نام
model.Client4و کلاینت TypeScript با نام@mattermost/client(به کتابخانههای کلاینت مراجعه کنید). - باندلهای پلاگین: یک فایل
.tar.gzبا مانیفستplugin.json. پلاگینهایی که با کلید Mattermost امضا شدهاند نصب میشوند، همانطور که پلاگینهای امضاشده با کلید Antimatter نیز نصب میشوند.
چه چیزهایی متفاوت است
- دو رابط کاربری وب. رابط کاربری جدید، Fusion، پیشفرض است؛ رابط کاربری کلاسیک Mattermost همچنان در دسترس است. Fusion اکثر اجزای پلاگینها را رندر میکند، اما برخی از آنها را در جای دیگری قرار میدهد و چند مورد را حذف میکند. یک اپلیکیشن میتواند تشخیص دهد کدام رابط کاربری در حال اجراست. به پشتیبانی از رابط کاربری Fusion مراجعه کنید.
- API اضافی. Antimatter برای ویژگیهای خاص خود، نقاط پایانی (endpoints) جدیدی اضافه میکند: ویژگیهای جامعه، مهلتهای زمانی، پیامهای رویهمانباشته، درخواستهای پیام، جایگزینی کانال و دسته، خروجی کانال، جابهجایی رشتهها، اتصال به مدلها، عملیات پیام و فیلدهای جدید برای جوامع. بازدید آنچه Antimatter به API اضافه میکند.
- ویژگیهای پیام اضافی. پیوستهای پیام میتوانند مراحل خط لوله (pipeline) و یک نمودار کوچک را نمایش دهند؛ پستها میتوانند پاسخهای درونخطی یا اسپویلر باشند.
- هوکهای اضافی وباپ برای اپلیکیشنها: یک آیتم در منوی «+» ویرایشگر، تبهای انتخابگر ایموجی، یک پنل در نمای کانال، یک فوتر زیر کانالهای نوار کناری، یک ورودی در صفحات یکپارچهسازی، نمای اضافه کردن و مدیریت انتخابگر ایموجی، و یک پنل جانبی که در پنجره جدید در همان مکانی که قبلاً باز شده بود، دوباره باز میشود. بازدید هوکهایی که فقط 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 است؛ برای جزئیات به نصب Antimatter مراجعه کنید. اگر قصد کار روی خود Antimatter را دارید، به ساخت از سورس مراجعه کنید.
- بررسی کنید که سرور چه چیزهایی را مجاز میشمارد. چندین قابلیت یکپارچهسازی بهطور پیشفرض غیرفعال است و به یک مدیر سیستم نیاز دارد: توکنهای دسترسی شخصی، حسابهای ربات، تغییر نام کاربری و آیکون، و بارگذاری اپلیکیشنها. در هر صفحه ذکر شده است که کدام تنظیمات لازم است.
- آدرس سایت خود را بدانید. در مثالها از
https://chat.example.comاستفاده شده است. آن را با آدرس سرور خود جایگزین کنید.
در این راهنما
- API REST: احراز هویت، منابع اصلی، صفحهبندی، خطاها، محدودیت نرخ، WebSocket، کتابخانههای کلاینت و افزودنیهای Antimatter.
- وبهوکها: وبهوکهای ورودی و خروجی، دادههای ارسالشده، پیوستها و کارتها.
- دستورهای اسلش: دستورات سفارشی، درخواست و پاسخ آنها، و تکمیل خودکار.
- رباتها و پیامهای تعاملی: حسابهای ربات، عاملهای خارجی، دکمهها، منوها و گفتگوها.
- نوشتن اپلیکیشنها: ساختار افزونه، هوکهای سرور، ثبت اپلیکیشن وب، Fusion، تنظیمات، ذخیرهسازی، ترجمهها و بستهبندی.
- ساخت از سورس: سرور، رابطهای کاربری وب، تصویر Docker و اپلیکیشنها.
- مشارکت: مشکلات (issues)، درخواستهای کشش (pull requests)، سبک کدنویسی، ترجمهها، امنیت و مجوزها.