Mga tawag at boses
Ang mga tawag at voice channel ay nagpapadala ng audio, video, at screen sharing direkta sa server sa kanilang sariling port. Tinatalakay ng pahinang ito ang network side, ang mga setting na dapat i-check pagkatapos mag-install, at ang transkripsyon gamit ang speech-to-text model na iyong pinapatakbo.
Paano gumagana ang mga tawag
Ang mga tawag ay ibinibigay ng Calls app (id com.mattermost.calls), na naka-install at naka-enable nang default. Ang mga voice channel (ang Voice Channels app, antimatter-next image) ay permanenteng mga silid ng tawag na nakabatay sa Calls: kailangan nila na naka-enable ang Calls at gumagamit ng parehong mga setting, port, at server.
Ang Calls app ay nagpapatakbo ng media server sa loob ng Antimatter. Ang web app, desktop app, at mobile apps ay nakakonekta dito gamit ang WebRTC:
- ang signalling ay dumadaan sa karaniwang web connection (ang iyong HTTPS proxy);
- ang media (audio, video, screen sharing) ay hindi: direkta ito sa server sa port ng tawag, 8443 UDP at TCP nang default.
Nasa System Console › Plugins › Calls ang mga setting. Maaari ring i-set ang bawat isa gamit ang AM_CALLS_ environment variable sa antimatter service, na mananalo ito sa System Console at naka-lock ang setting doon. Gumagana rin ang mga legacy MM_CALLS_ na pangalan.
I-check ang mga ito pagkatapos mag-install
- Buksan ang port ng tawag. Payagan ang 8443/udp at 8443/tcp sa firewall ng server at ng iyong cloud provider.
- Suriin ang test mode. Ang test mode (
DefaultEnabled) ay naka-off sa default, kaya lahat ay maaaring magsimula ng mga tawag. I-On ito sa System Console › Plugins › Calls upang ang mga system administrator lamang ang makapagsimula ng mga tawag sa mga channel habang sinusuri mo kung gumagana ang mga tawag, pagkatapos ay i-off ito muli. Ang variable ayAM_CALLS_DEFAULT_ENABLED: angtrueay nangangahulugang naka-off ang test mode. Ang server na inilipat mula sa Mattermost ay pinapanatili ang napiling setting sa kanyang configuration. - Desisyonin ang video. Ang Enable video (
EnableVideo,AM_CALLS_ENABLE_VIDEO) ay naka-on sa default: maaaring i-on ang camera ng mga tao kung saan naka-on ang mga tawag, sa mga direct at group message at sa mga channel. Sa mga voice channel, ang Allow video in voice channels ng Voice Channels app ang nagdedesisyon. I-off ito at hindi na maaaring i-on ang camera ng sinuman, kahit sa mga voice channel. - Sa likod ng NAT, i-set ang public address (susunod na seksyon).
Saan naka-on ang mga tawag
Bawat komunidad ay may uri, Workspace o Guild (tingnan ang Guild o workspace). Ang channel na hindi pa pinapaganap o pinagbawal ng mga admin ang mga tawag ay sumusunod sa uri ng komunidad nito:
- sa isang workspace, ang mga channel ay sumusunod sa default ng server: naka-on ang mga tawag para sa lahat habang naka-off ang test mode;
- sa isang guild, naka-off ang mga tawag sa mga channel: ang mga tao ay nagsasalita sa voice channels sa halip. Ang mga admin ng channel at komunidad ay maaari pa ring paganahin ang mga tawag sa isang channel.
Laging mananalo ang sariling setting ng channel. Ang mga direct at group message ay hindi kabilang sa community: naka-on ang mga tawag doon para sa lahat habang naka-off ang test mode. Ang pagbabago ng uri ng community ay mag-aapekto sa mga tawag sa loob ng 30 segundo.
Mga port, NAT, at STUN
| Setting | Variable | Default |
|---|---|---|
| RTC Server Port (UDP) | AM_CALLS_UDP_SERVER_PORT | 8443 |
| RTC Server Port (TCP) | AM_CALLS_TCP_SERVER_PORT | 8443 |
| RTC Server Address (UDP), (TCP) | AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESS | walang laman: lahat ng address |
| ICE Host Override | AM_CALLS_ICE_HOST_OVERRIDE | walang laman: nakahanap sa pamamagitan ng STUN |
| ICE Host Port Override | AM_CALLS_ICE_HOST_PORT_OVERRIDE | walang laman: port ng server |
| ICE Servers Configurations | AM_CALLS_ICE_SERVERS_CONFIGS | [{"urls":["stun:stun.cloudflare.com:3478"]}] |
| (Pangaral) Paggamitan ng IPv6 | (System Console) | Off |
Ang mga port ay dapat nasa pagitan ng 80 at 49151. Sa compose file ng site, baguhin ang CALLS_PORT sa .env: ito ang nagse-set ng parehong variable at nagpapa-publish ng port, ang parehong numero sa host at sa loob ng container. Una, subukan ng mga client ang UDP, at kung hindi, gumagamit sila ng TCP sa parehong port.
Ang address na ipinapadala ng mga client ang media
Ipinapahintulot ng server sa bawat client ang address na ipinapadala ng media (ang "host candidate" nito). Sa default, nakahanap ito ng public address sa pamamagitan ng pagtatanong sa isang STUN server, isang pampublikong serbisyo na sumasagot sa address at port kung saan galing ang request. Ang default ay ang pampublikong STUN server ng Cloudflare, stun:stun.cloudflare.com:3478. Hindi ang server lang ang gumagamit nito: bawat client na sumasali sa tawag ay humihingi rin ng sarili nitong public address. Nakikita lang ng STUN server ang mga IP address at port, hindi ang audio, video, o mga mensahe ng tawag.
Ang server na may natitirang STUN server ng Mattermost (stun.global.calls.mattermost.com) sa ICE Servers Configurations, halimbawa pagkatapos lumipat mula sa Mattermost, ay gumagamit ng Cloudflare. Hindi binabago ang na-save na setting.
I-set ang address mismo kapag:
- nasa likod ng NAT ang server, o may ilang public address: i-set ang ICE Host Override sa public IP address (o hostname na nagre-resolve dito);
- nagmamapa ng ibang public port ang NAT sa 8443: i-set din ang ICE Host Port Override sa public port na iyon;
- walang Internet access ang server, o hindi mo gustong makipag-ugnayan ang server at mga client sa isang STUN server sa labas: i-set ang ICE Host Override, at i-empty ang listahan ng STUN gamit ang
AM_CALLS_ICE_SERVERS_CONFIGS=[]. Kapag naka-set ang ICE Host Override, hindi na humihingi ng address ang server sa STUN server; ang empty list ang humihinto sa mga client na humingi.
services:
antimatter:
environment:
AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
AM_CALLS_ICE_SERVERS_CONFIGS: "[]"
Para manatili ang STUN nang walang third party, patawagin ang sariling STUN server (ang TURN server tulad ng coturn ay sumasagot din sa mga STUN request) at ilista ito sa ICE Servers Configurations sa halip, tulad ng halimbawa ng TURN sa ibaba.
Sa local network lang, gamitin ang LAN address ng server. I-restart ang server pagkatapos magbago ng port, address, o ICE settings, o i-disable at i-enable ang Calls app: ang media server ay inu-setup kapag nagsimula ang app.
TURN, para sa mahigpit na firewall
Minsan, ang ilang network ay pindot ang parehong UDP at mga saluhang koneksyon sa mga hindi karaniwang TCP port. Kailangan ng mga tao sa mga network na ito ng TURN server, na nagre-relay ng media sa port na maabot nila (karaniwan ay 443). Hindi kasama sa Antimatter ang TURN server; pumunta ng TURN server tulad ng coturn at idagdag ito sa ICE Servers Configurations, isang JSON list:
[
{"urls": ["stun:turn.example.com:3478"]},
{"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
- Kung may shared secret (ang
use-auth-secretng coturn), ilagay ang parehong secret sa TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET): ibinibigay ng server sa bawat client ang maikling credentials, na valid para sa TURN Credentials Expiration (minutes) (240 ang default). - Kung may fixed credentials, idagdag ang
"username"at"credential"sa TURN entry sa halip. - Ang Server Side TURN (off ang default) ay gumagamit din ng mga TURN server para sa mga koneksyon na pinagsisimulan ng server.
Iba pang mga setting ng tawag
| Setting | Variable | Default | Ginagawa nito |
|---|---|---|---|
| Max call participants | AM_CALLS_MAX_CALL_PARTICIPANTS | 0 (walang limitasyon) | Pinakamataas na bilang ng tao sa isang tawag. |
| Allow screen sharing | (System Console) | on | Pinapayagan ang mga kalahok na ibahagi ang kanilang screen. |
| Enable call ringing | AM_CALLS_ENABLE_RINGING | on | Nag-uugnay ng tawag sa ibang mga tao ng direct o group message kapag nagsimula ang tawag doon. |
| Enable simulcast for screen sharing (Experimental) | (System Console) | Off | Nagpapadala ng screen share sa ilang kalidad. |
| Enable AV1 codec for screen sharing (Experimental) | (System Console) | Off | Hindi pinagmumulan habang naka-on ang simulcast. |
Ang Voice Channels app ay may dalawang setting, sa System Console › Plugins › Voice Channels: ang Join when opening a voice channel (naka-on sa default) at ang Allow video in voice channels (naka-on sa default, ngunit tingnan ang video sa itaas). Ang Voice ay isang uri ng channel, pinili kapag ginawa ang channel (tingnan ang Create a channel); walang huling hakbang na "gawing voice channel" ang isang channel. Ang dalawang setting na ito ay pa rin naaangkop sa bawat voice channel. Ang paglikha ng isa ay nangangailangan ng aktibong Voice Channels app; kung wala ito, ang Voice ay naka-grey out sa dialog na gumawa ng channel.

AM_CALLS_DISABLE=true. Hindi na gagana ang mga voice channel.Mas malalaking server: isang external rtcd
Sa default, ang isang Antimatter server ang nagdadala ng lahat ng media ng tawag. Para sa maraming sabay-sabay na tawag, o upang panatilihing malayo ang media mula sa chat server, ang Calls app ay maaaring ipasa ang media sa rtcd, isang magkakaibang media server (ang open-source rtcd ng Mattermost, version 0.17 o mas bagong). Itakda ang RTCD service URL (AM_CALLS_RTCD_SERVICE_URL), halimbawa https://rtcd.example.com: ang lahat ng tawag ay dadaloy dito, at ang mga client ay magpapadala ng kanilang media sa sariling port ng rtcd sa halip sa ng Antimatter. Ang mga credentials ay maaaring bigyan gamit ang AM_CALLS_RTCD_CLIENT_ID at AM_CALLS_RTCD_AUTH_KEY; kung wala ito, ang app ay magpapa-register sa rtcd. Walang kailangan ng license. Ipinapakita ng Calls app sa mga admin ang isang babala na nagre-rekomenda ng rtcd kapag madalas ang server na may higit sa 50 taong nasa tawag sabay-sabay.
Transkripsyon at live captions
Ang Antimatter ay maaaring mag-transcribe ng mga tawag gamit ang isang speech-to-text model na iyong pinapatakbo, at ipakita ang live captions habang nagsasalita ang mga tao. Ginagamit ng Antimatter ang anumang server na nag-aalok ng OpenAI-compatible /v1/audio/transcriptions endpoint, tulad ng isang Whisper server sa iyong network. Walang karagdagang service mula sa Antimatter ang kailangan.
Paano ito gumagana
- Ang host ng tawag ay nagpapa-start ng transkripsyon gamit ang I-transcribe ang tawag sa mga kontrol ng tawag. Ang badge na Nagta-transcribe ay nagpapahiwatig sa lahat.
- Ang app ng bawat kalahok ay nakikinig sa sariling mikropono, hinihiwalay ang pagsasalita sa maikling piraso (hanggang 12 segundo, hindi habang naka-mute) at ipinapadala ito sa Antimatter, na ipinapasa ito sa iyong speech-to-text server.
- Kapag naka-on ang live captions, ipinapakita agad ang teksto ng bawat piraso sa mga kalahok bilang caption.
- Kapag tumigil ang transkripsyon o tapos ang tawag, ang Calls bot ay nagpo-post ng transcript bilang text file at WebVTT subtitle file, sa thread ng tawag (sa mga voice channel, sa channel).
- Kapag naka-on ang Summarize transcriptions, ang default agent ng AI chat app ay nagpo-post din ng buod sa thread (tingnan ang AI).

Pagsasaayos
Itakda ang mga ito sa antimatter service:
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
| Setting | Variable | Ano ang ilalagay |
|---|---|---|
| Enable call transcriptions (Beta) | AM_CALLS_ENABLE_TRANSCRIPTIONS | true |
| Call transcriber API | AM_CALLS_TRANSCRIBE_API | openai (ipinapakita bilang "OpenAI-compatible API (no job service)") |
| Speech-to-text API URL | AM_CALLS_TRANSCRIBE_API_OPEN_AIURL | Ang base URL ng API, hanggang sa kasama ang /v1. |
| Speech-to-text model | AM_CALLS_TRANSCRIBE_API_OPEN_AI_MODEL | Ang pangalan ng modelo ayon sa API, halimbawa whisper-1. Kinakailangan. |
| Speech-to-text API key | AM_CALLS_TRANSCRIBE_API_OPEN_AI_KEY | Ipinapadala bilang bearer token. Iwanan itong blang kung wala nang kailangan ng API. |
| Pagpapatupad ng live captions (Beta) | AM_CALLS_ENABLE_LIVE_CAPTIONS | true para sa captions habang tumatawag. |
| Wika ng live captions | AM_CALLS_LIVE_CAPTIONS_LANGUAGE | Ang sinasalitang wika, bilang dalawang letrang code (en ang default). Ipinapasa rin ito sa speech-to-text API para sa transkripsyon, kaya itakda kahit walang captions. |
| Pagsummarize ng transkripsyon | AM_CALLS_SUMMARIZE_TRANSCRIPTIONS | true para sa AI summary pagkatapos ng tawag. |
openai transcriber: kung pagsisimulan ang recording, subukang pagsimulan ang job-service transcriber at mababagsak.Ang audio ng bawat sinasalitang tao habang naka-on ang transkripsyon ay pumupunta sa speech-to-text server na iyong nakonfigure, at ang transkripsyon ay ipinapost sa lugar na mababasa ng lahat sa channel. Ipaliwanag sa iyong mga user, at panatilihing nasa sarili mong network ang server kung pamilyar ang mga tawag.
Mga Recording
Ang pag-record ng mga tawag (at ang pag-transcribe gamit ang built-in whisper.cpp o Azure transcribers) ay nagaganap sa hiwalay na mga container na pinapa-start ng isang job service, ang open-source calls-offloader ng Mattermost, na iyong idedeploy sa tabi ng Antimatter. Ang mga setting ay Enable call recordings (AM_CALLS_ENABLE_RECORDINGS, off by default), Job service URL (AM_CALLS_JOB_SERVICE_URL), Maximum call recording duration (60 minutes by default, 15 to 180) at Call recording quality (low, medium o high; medium by default). Walang kailangang lisensya. Kapag naka-on na ang mga recording, ang host ng tawag ay nagpapa-start at nagpapa-stop ng recording gamit ang Record the call sa mga kontrol ng tawag; nakikita ng lahat sa tawag na naka-record ito, at ipinost ang recording sa thread ng tawag kapag nagpapa-stop ito. Walang thread ang mga tawag sa voice channels, kaya hindi sila maaaring i-record. Para sa transkripsyon at captions lamang, mas simple ang setup ng speech-to-text sa itaas: hindi ito nangangailangan ng job service.