کالز اور وائس
کالز اور وائس چینلز آڈیو، ویڈیو اور اسکرین شیئرنگ کو براہِ راست سرور کے اپنے پورٹ پر بھیجتے ہیں۔ یہ صفحہ نیٹ ورک کے پہلو، انسٹالیشن کے بعد جانچنے کے لیے ترتیبات، اور آپ کے ذریعے چلائے جانے والے speech-to-text ماڈل کے ساتھ ٹرانسکرپشن پر روشنی ڈالتا ہے۔
کالز کیسے کام کرتی ہیں
کالز Calls ایپ (id com.mattermost.calls) کے ذریعے فراہم کی جاتی ہیں، جو پہلے سے انسٹال اور فعال ہے۔ وائس چینلز (Voice Channels ایپ، antimatter-next امیج) Calls پر مبنی مستقل کال رومز ہیں: انہیں Calls کے فعال ہونے کی ضرورت ہے اور وہ اسی ترتیبات، پورٹس اور سرورز کا استعمال کرتے ہیں۔
Calls ایپ Antimatter کے اندر ایک میڈیا سرور چلاتی ہے۔ ویب ایپ، ڈیسک ٹاپ ایپ اور موبائل ایپس WebRTC کے ذریعے اس سے منسلک ہوتی ہیں:
- سیگنلنگ عام ویب کنکشن (آپ کے HTTPS پروکسی) کے ذریعے ہوتی ہے؛
- میڈیا (آڈیو، ویڈیو، اسکرین شیئرنگ) اس کے ذریعے نہیں ہوتی: یہ براہِ راست سرور کے کالز پورٹ پر جاتی ہے، جس کا ڈیفالٹ 8443 UDP اور TCP ہے۔
ترتیبات سسٹم کنسول › پلگ انز › کالز میں موجود ہیں۔ ان میں سے ہر ایک کو antimatter سروس پر AM_CALLS_ نامی ایک ماحولیاتی متغیر (environment variable) کے ذریعے بھی سیٹ کیا جا سکتا ہے، جو سسٹم کنسول پر غلبہ حاصل کرتا ہے اور وہاں سیٹنگ کو قفل کر دیتا ہے۔ پرانے MM_CALLS_ نام بھی کام کرتے ہیں۔
انسٹالیشن کے بعد ان کی جانچ کریں
- کالز پورٹ کھولیں۔ سرور اور آپ کے کلاؤڈ پرووائیڈر کے فائر وال میں 8443/udp اور 8443/tcp کی اجازت دیں۔
- ٹیسٹ موڈ چیک کریں۔ ٹیسٹ موڈ (
DefaultEnabled) پہلے سے بند ہے، اس لیے ہر شخص کالز شروع کر سکتا ہے۔ جب تک آپ یہ چیک نہیں کر لیتے کہ کالز کیسے کام کرتی ہیں، صرف سسٹم ایڈمنسٹریٹرز چینلز میں کالز شروع کر سکیں، اس کے لیے سسٹم کنسول › پلگ انز › کالز میں اسے آن کر دیں، پھر دوبارہ بند کر دیں۔ متغیرAM_CALLS_DEFAULT_ENABLEDہے:trueکا مطلب ہے کہ ٹیسٹ موڈ بند ہے۔ Mattermost سے منتقل شدہ سرور اپنی سیٹنگ میں محفوظ شدہ انتخاب برقرار رکھتا ہے۔ - ویڈیو کے بارے میں فیصلہ کریں۔ ویڈیو فعال کریں (
EnableVideo,AM_CALLS_ENABLE_VIDEO) پہلے سے آن ہے: جہاں بھی کالز فعال ہیں، براہِ راست اور گروپ پیغامات اور چینلز میں لوگ اپنی کیمرہ آن کر سکتے ہیں۔ وائس چینلز میں، وائس چینلز ایپ کا وائس چینلز میں ویڈیو کی اجازت دیں فیصلہ کرتا ہے۔ اسے بند کریں تو کوئی بھی کیمرہ آن نہیں کر سکتا، نہ ہی وائس چینلز میں۔ - NAT کے پیچھے، پبلک ایڈریس سیٹ کریں (اگلا سیکشن)۔
کالز کہاں آن ہیں
ہر کمیونٹی کی ایک قسم ہوتی ہے، ورک پلیس یا کمیونٹی (نئے کمیونٹیز کی قسم دیکھیں نئے کمیونٹیز کی قسم)۔ ایسے چینلز جن کے ایڈمنز نے کالز کو آن یا آف نہیں کیا، وہ اپنے کمیونٹی کی قسم کے مطابق چلتے ہیں:
- ایک ورک پلیس میں، چینلز سرور کی ڈیفالٹ سیٹنگ کے مطابق چلتے ہیں: جب تک ٹیسٹ موڈ آف ہے، کالز ہر ایک کے لیے آن ہیں؛
- ایک کمیونٹی میں، چینلز میں کالز آف ہیں: لوگ بجائے اس کے وائس چینلز میں بات کرتے ہیں۔ چینل اور کمیونٹی ایڈمنز اب بھی چینل میں کالز کو آن کر سکتے ہیں۔
چینل کی اپنی سیٹنگ ہمیشہ غلبہ رکھتی ہے۔ براہِ راست اور گروپ پیغامات کسی کمیونٹی کا حصہ نہیں ہوتے: وہاں کالز، جب تک ٹیسٹ موڈ آف ہے، ہر ایک کے لیے آن ہیں۔ کسی کمیونٹی کی قسم میں تبدیلی 30 سیکنڈ کے اندر کالز پر لاگو ہو جاتی ہے۔
پورٹس، NAT اور STUN
| ترتیب | متغیر | ڈیفالٹ |
|---|---|---|
| RTC سرور پورٹ (UDP) | AM_CALLS_UDP_SERVER_PORT | 8443 |
| RTC سرور پورٹ (TCP) | AM_CALLS_TCP_SERVER_PORT | 8443 |
| RTC سرور ایڈریس (UDP), (TCP) | AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESS | خالی: تمام ایڈریسز |
| ICE Host Override | AM_CALLS_ICE_HOST_OVERRIDE | خالی: STUN کے ذریعے دریافت شدہ |
| ICE Host Port Override | AM_CALLS_ICE_HOST_PORT_OVERRIDE | خالی: سرور پورٹ |
| ICE Servers Configurations | AM_CALLS_ICE_SERVERS_CONFIGS | [{"urls":["stun:stun.cloudflare.com:3478"]}] |
| (Experimental) Enable IPv6 support | (سسٹم کنسول) | غیر فعال |
پورٹس 80 اور 49151 کے درمیان ہونے چاہئیں۔ سائٹ کے compose فائل میں .env میں CALLS_PORT کو تبدیل کریں: یہ دونوں متغیرات مقرر کرتا ہے اور پورٹ کو پبلش کرتا ہے، ہوسٹ اور کنٹینر دونوں میں ایک ہی نمبر۔ کلائنٹس پہلے UDP کی کوشش کرتے ہیں اور اسی پورٹ پر TCP پر واپس آ جاتے ہیں۔
کلائنٹس میڈیا کس ایڈریس پر بھیجتے ہیں
سرور ہر کلائنٹ کو یہ بتاتا ہے کہ وہ میڈیا کس ایڈریس پر بھیجے (اس کا "host candidate")۔ ڈیفالٹ طور پر یہ ایک STUN سرور سے پوچھ کر اپنے عوامی ایڈریس کو دریافت کرتا ہے، جو ایک عوامی سروس ہے جو اس ایڈریس اور پورٹ کے جواب میں آتی ہے جس سے درخواست آئی تھی۔ ڈیفالٹ Cloudflare کا عوامی STUN سرور ہے، stun:stun.cloudflare.com:3478۔ سرور اس کا واحد استعمال کنندہ نہیں ہے: ہر کلائنٹ جو کال میں شامل ہوتا ہے، اپنے عوامی ایڈریس کے لیے اس سے بھی پوچھتا ہے۔ STUN سرور صرف IP ایڈریسز اور پورٹس دیکھتا ہے، کال کی آواز، ویڈیو یا پیغامات کبھی نہیں۔
ایک سرور جو ابھی بھی Mattermost کا STUN سرور (stun.global.calls.mattermost.com) ICE Servers Configurations میں محفوظ رکھتا ہے، مثلاً Mattermost سے منتقل ہونے کے بعد، اس کے بجائے Cloudflare کا استعمال کرتا ہے۔ محفوظ ترتیب تبدیل نہیں ہوتی۔
ایڈریس خود مقرر کریں جب:
- سرور NAT کے پیچھے ہے، یا اس کے کئی عوامی ایڈریسز ہیں: ICE Host Override کو عوامی IP ایڈریس (یا ایسا hostname جو اس کے حل ہو) پر مقرر کریں;
- NAT 8443 کے لیے ایک مختلف عوامی پورٹ کو میپ کرتا ہے: ICE Host Port Override کو بھی اس عوامی پورٹ پر مقرر کریں;
- سرور کے پاس انٹرنیٹ تک رسائی نہیں ہے، یا آپ چاہتے ہیں کہ سرور اور کلائنٹس کسی باہری STUN سرور سے رابطہ نہ کریں: ICE Host Override مقرر کریں، اور STUN فہرست کو
AM_CALLS_ICE_SERVERS_CONFIGS=[]کے ساتھ خالی کریں۔ ICE Host Override مقرر ہونے پر، سرور اپنے ایڈریس کے لیے STUN سرور سے پوچھنا بند کر دیتا ہے؛ خالی فہرست کلائنٹس کو اس سے پوچھنے سے روکتی ہے۔
services:
antimatter:
environment:
AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
AM_CALLS_ICE_SERVERS_CONFIGS: "[]"
STUN کو تیسرے فریق کے بغیر برقرار رکھنے کے لیے، اپنا STUN سرور چلائیں (ایک TURN سرور، جیسے coturn، STUN درخواستوں کے جواب بھی دیتا ہے) اور اسے ICE Servers Configurations میں درج کریں، بالکل اسی طرح جیسے نیچے TURN کے مثال میں ہے۔
صرف مقامی نیٹ ورک پر، سرور کا LAN ایڈریس استعمال کریں۔ پورٹس، ایڈریسز یا ICE ترتیبات تبدیل کرنے کے بعد سرور کو دوبارہ شروع کریں، یا Calls ایپ کو غیر فعال اور فعال کریں: میڈیا سرور ایپ کے شروع ہونے پر ترتیب دیا جاتا ہے۔
TURN، سخت فائروالز کے لیے
کچھ نیٹ ورکس UDP اور غیر معمولی TCP پورٹس پر آؤٹ گوئنگ کنکشنز دونوں کو بلاک کرتے ہیں۔ ان پر موجود صارفین کو TURN سرور کی ضرورت ہوتی ہے، جو میڈیا کو اس پورٹ کے ذریعے ریلی کرتا ہے جس تک وہ رسائی حاصل کر سکتے ہیں (اکثر 443)۔ Antimatter میں ایسا کوئی سرور شامل نہیں ہے؛ coturn جیسے TURN سرور کو چلائیں اور اسے ICE Servers Configurations میں شامل کریں، جو ایک JSON فہرست ہے:
[
{"urls": ["stun:turn.example.com:3478"]},
{"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
- اگر شیئرڈ سیکرٹ (coturn کا
use-auth-secret) استعمال کر رہے ہیں، تو وہی سیکرٹ TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET) میں درج کریں: سرور ہر کلائنٹ کو مختصر مدت کے لیے معتبر کوالیفیکیشنز دیتا ہے، جو TURN Credentials Expiration (minutes) (پہلے سے طے شدہ 240 منٹ) تک درست رہتی ہیں۔ - اگر مستقل کوالیفیکیشنز استعمال کر رہے ہیں، تو TURN اندراج میں
"username"اور"credential"شامل کریں۔ - Server Side TURN (پہلے سے بند) بھی ان کنکشنز کے لیے TURN سرورز کا استعمال کرتا ہے جو سرور خود شروع کرتا ہے۔
دیگر کال ترتیبات
| ترتیب | متغیر | ڈیفالٹ | یہ کیا کرتا ہے |
|---|---|---|---|
| Max call participants | AM_CALLS_MAX_CALL_PARTICIPANTS | 0 (کوئی حد نہیں) | ایک ہی کال میں موجود لوگوں کی زیادہ سے زیادہ تعداد۔ |
| Allow screen sharing | (سسٹم کنسول) | آن | شرکاء کو اپنی اسکرین شیئر کرنے کی اجازت دیتا ہے۔ |
| Enable call ringing | AM_CALLS_ENABLE_RINGING | آن | جب براہِ راست یا گروپ پیغام میں کال شروع ہو تو دوسرے لوگوں کو رینگ کرتا ہے۔ |
| Enable simulcast for screen sharing (Experimental) | (سسٹم کنسول) | غیر فعال | اسکرین شیئر کو کئی معیارات میں بھیجتا ہے۔ |
| Enable AV1 codec for screen sharing (Experimental) | (سسٹم کنسول) | غیر فعال | جب simulcast آن ہو تو نظر انداز کیا جاتا ہے۔ |
وائس چینلز ایپ کی دو سیٹنگز ہیں، سسٹم کنسول › پلگ انز › وائس چینلز میں: وائس چینل کھولتے وقت شامل ہوں (پہلے سے آن) اور وائس چینلز میں ویڈیو کی اجازت دیں (پہلے سے آن، لیکن اوپر ویڈیو کے بارے میں دیکھیں)۔ کمیونٹی ایڈمنز چینل کی ترتیبات میں اسے وائس چینل میں تبدیل کرتے ہیں۔
AM_CALLS_DISABLE=true سیٹ کریں۔ اس صورت میں وائس چینلز بھی کام کرنا بند کر دیتے ہیں۔بڑے سرورز کے لیے: ایک بیرونی rtcd
ڈیفالٹ طور پر ایک Antimatter سرور تمام کال میڈیا کو سنبھالتا ہے۔ متعدد ہم وقت کالز کے لیے، یا میڈیا کو چیٹ سرور سے الگ رکھنے کے لیے، Calls ایپ میڈیا کو rtcd کے حوالے کر سکتی ہے، جو ایک الگ میڈیا سرور ہے (Mattermost کا اوپن سورس rtcd، ورژن 0.17 یا اس سے نیا)۔ RTCD service URL (AM_CALLS_RTCD_SERVICE_URL) سیٹ کریں، مثال کے طور پر https://rtcd.example.com: اس کے بعد تمام کالز اس کے ذریعے ہوں گی، اور کلائنٹس اپنا میڈیا Antimatter کے بجائے rtcd کے اپنے پورٹ پر بھیجیں گے۔ AM_CALLS_RTCD_CLIENT_ID اور AM_CALLS_RTCD_AUTH_KEY کے ذریعے کرسینشلز دیے جا سکتے ہیں؛ ان کے بغیر، ایپ خود کو rtcd کے ساتھ رجسٹر کر لیتی ہے۔ کوئی لائسنس درکار نہیں ہے۔ جب سرور پر اکثر ایک ساتھ 50 سے زیادہ لوگ کالز میں شامل ہوں، تو Calls ایپ ایڈمنس کو rtcd کی سفارش کرنے کی ایک وارننگ دکھاتی ہے۔
ٹرانسکرپشن اور لائیو کیپشنز
Antimatter آپ کے ذریعے چلائے گئے speech-to-text ماڈل کے ساتھ کالز کی ٹرانسکرپشن کر سکتا ہے، اور لوگوں کے بولتے وقت لائیو کیپشنز دکھا سکتا ہے۔ Antimatter کوئی بھی سرور استعمال کرتا ہے جو OpenAI-compatibile /v1/audio/transcriptions اینڈ پوائنٹ فراہم کرتا ہو، جیسے آپ کے نیٹ ورک پر Whisper سرور۔ Antimatter سے کوئی اضافی سروس درکار نہیں ہے۔
یہ کیسے کام کرتا ہے
- کال کے ہوسٹ کال کنٹرولز میں کال کی ٹرانسکرپشن کریں کے ذریعے ٹرانسکرپشن شروع کرتے ہیں۔ ٹرانسکرپشن ہو رہی ہے بیج سب کو بتاتا ہے۔
- ہر شرکاء کی ایپ اپنے مائیکروفون کو سننے کے لیے تیار رہتی ہے، بول چال کو چھوٹے ٹکڑوں میں کاٹتی ہے (زیادہ سے زیادہ 12 سیکنڈ، خاموشی کے دوران کبھی نہیں) اور انہیں Antimatter کو بھیجتی ہے، جو انہیں آپ کے speech-to-text سرور کو آگے بھرتا ہے۔
- لائیو کیپشنز آن ہونے پر، ہر ٹکڑے کا متن فوراً شرکاء کو کیپشن کے طور پر دکھایا جاتا ہے۔
- جب ٹرانسکرپشن رکی جائے یا کال ختم ہو جائے، تو Calls بوٹ ٹرانسکرپٹ کو ایک ٹیکسٹ فائل اور WebVTT سب ٹائٹل فائل کے طور پر کال کے سلسلے میں پوسٹ کرتا ہے (وائس چینلز میں، چینل میں)۔
- Summarize transcriptions آن ہونے پر، Agents ایپ کا ڈیفالٹ ایجنٹ بھی سلسلے میں ایک خلاصہ پوسٹ کرتا ہے (دیکھیں AI)۔

اسے سیٹ اپ کریں
antimatter سروس پر یہ سیٹ کریں:
services:
antimatter:
environment:
AM_CALLS_ENABLE_TRANSCRIPTIONS: "true"
AM_CALLS_TRANSCRIBE_API: openai
AM_CALLS_TRANSCRIBE_API_OPEN_AIURL: http://stt.internal:8000/v1
AM_CALLS_TRANSCRIBE_API_OPEN_AI_MODEL: whisper-1
AM_CALLS_TRANSCRIBE_API_OPEN_AI_KEY: ""
AM_CALLS_ENABLE_LIVE_CAPTIONS: "true"
AM_CALLS_LIVE_CAPTIONS_LANGUAGE: en
| ترتیب | متغیر | کیا درج کریں |
|---|---|---|
| Enable call transcriptions (Beta) | AM_CALLS_ENABLE_TRANSCRIPTIONS | true |
| Call transcriber API | AM_CALLS_TRANSCRIBE_API | openai (جسے "OpenAI-compatible API (no job service)" کے طور پر دکھایا جاتا ہے) |
| Speech-to-text API URL | AM_CALLS_TRANSCRIBE_API_OPEN_AIURL | API کا بیس URL، /v1 سمیت۔ |
| Speech-to-text model | AM_CALLS_TRANSCRIBE_API_OPEN_AI_MODEL | API کے جانتا ہوا ماڈل کا نام، مثال کے طور پر whisper-1۔ درکار ہے۔ |
| Speech-to-text API key | AM_CALLS_TRANSCRIBE_API_OPEN_AI_KEY | اسے بیئرر ٹوکن کے طور پر بھیجا جاتا ہے۔ اگر API کو کوئی کی درکار نہ ہو تو اسے خالی چھوڑ دیں۔ |
| لائیو کیپشنز فعال کریں (بیٹا) | AM_CALLS_ENABLE_LIVE_CAPTIONS | کال کے دوران کیپشنز کے لیے true کریں۔ |
| لائیو کیپشنز کی زبان | AM_CALLS_LIVE_CAPTIONS_LANGUAGE | بولی جانے والی زبان، دو حروف کے کوڈ کے طور پر (طے شدہ طور پر en)۔ یہ کوڈ ٹرانسکرپشن کے لیے بھی سپیچ-ٹو-ٹیکسٹ API کو بھیجا جاتا ہے، اس لیے کیپشنز کے بغیر بھی اسے سیٹ کریں۔ |
| ٹرانسکرپشن کا خلاصہ بنائیں | AM_CALLS_SUMMARIZE_TRANSCRIPTIONS | کال کے بعد AI خلاصے کے لیے true کریں۔ |
openai ٹرانسکربر کے ساتھ ریکارڈنگز کو آن نہ کریں: ریکارڈنگ شروع کرنے پر job-service ٹرانسکربر شروع کرنے کی کوشش ہوگی اور ناکام ہو جائے گی۔جب ٹرانسکرپشن آن ہو، تو ہر اس شخص کی آواز جو بول رہا ہو آپ کے ترتیب دیے گئے سپیچ-ٹو-ٹیکسٹ سرور کو بھیجی جاتی ہے، اور ٹرانسکرپٹ وہاں پوسٹ کیا جاتا ہے جہاں چینل کے تمام افراد اسے پڑھ سکتے ہیں۔ اپنے صارفین کو اس کی اطلاع دیں، اور اگر کالز خفیہ ہیں تو اس سرور کو اپنے نیٹ ورک پر رکھیں۔
ریکارڈنگز
کالز کی ریکارڈنگ (اور whisper.cpp یا Azure کے درجہ بند ٹرانسکربرز کے ساتھ ٹرانسکرپشن) الگ الگ کنٹینرز میں چلتی ہے جو ایک جاب سروس، Mattermost کے اوپن سورس calls-offloader، کے ذریعے شروع ہوتی ہیں، جسے آپ خود Antimatter کے ساتھ ڈپلائ کرتے ہیں۔ ترتیبات کال ریکارڈنگز کو فعال کریں (AM_CALLS_ENABLE_RECORDINGS، پہلے سے بند)، جاب سروس URL (AM_CALLS_JOB_SERVICE_URL)، کال ریکارڈنگ کی زیادہ سے زیادہ مدت (پہلے سے 60 منٹ، 15 سے 180) اور کال ریکارڈنگ کی معیاری (کم، درمیانہ یا زیادہ؛ پہلے سے درمیانہ) ہیں۔ کوئی لائسنس درکار نہیں۔ ریکارڈنگز فعال ہونے کے بعد، کال کے ہوسٹ کال کنٹرولز میں کال ریکارڈ کریں کے ذریعے ریکارڈنگ شروع اور روکتے ہیں؛ کال میں موجود ہر شخص دیکھتا ہے کہ ریکارڈنگ ہو رہی ہے، اور جب ریکارڈنگ رُک جاتی ہے تو اسے کال کے سلسلے میں پوسٹ کر دیا جاتا ہے۔ وائس چینلز میں کالز کا کوئی سلسلہ نہیں ہوتا، اس لیے انہیں ریکارڈ نہیں کیا جا سکتا۔ صرف ٹرانسکرپٹس اور کیپشنز کے لیے، اوپر دی گئی سپیچ-ٹو-ٹیکسٹ ترتیب سادہ تر ہے: اس کے لیے کوئی جاب سروس درکار نہیں۔