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

  1. Buksan ang port ng tawag. Payagan ang 8443/udp at 8443/tcp sa firewall ng server at ng iyong cloud provider.
  2. 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 ay AM_CALLS_DEFAULT_ENABLED: ang true ay nangangahulugang naka-off ang test mode. Ang server na inilipat mula sa Mattermost ay pinapanatili ang napiling setting sa kanyang configuration.
  3. 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.
  4. 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

SettingVariableDefault
RTC Server Port (UDP)AM_CALLS_UDP_SERVER_PORT8443
RTC Server Port (TCP)AM_CALLS_TCP_SERVER_PORT8443
RTC Server Address (UDP), (TCP)AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESSwalang laman: lahat ng address
ICE Host OverrideAM_CALLS_ICE_HOST_OVERRIDEwalang laman: nakahanap sa pamamagitan ng STUN
ICE Host Port OverrideAM_CALLS_ICE_HOST_PORT_OVERRIDEwalang laman: port ng server
ICE Servers ConfigurationsAM_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-secret ng 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

SettingVariableDefaultGinagawa nito
Max call participantsAM_CALLS_MAX_CALL_PARTICIPANTS0 (walang limitasyon)Pinakamataas na bilang ng tao sa isang tawag.
Allow screen sharing(System Console)onPinapayagan ang mga kalahok na ibahagi ang kanilang screen.
Enable call ringingAM_CALLS_ENABLE_RINGINGonNag-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)OffNagpapadala ng screen share sa ilang kalidad.
Enable AV1 codec for screen sharing (Experimental)(System Console)OffHindi 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.

The create-channel dialog with Voice picked: the Talk and Stage preset cards, Voice Channels app active
Voice, kapag aktibo na ang Voice Channels app: ang mga card na Talk at Stage.
Upang i-off ang mga tawag nang buo, i-disable ang Calls app sa System Console › Plugins › Plugin Management, o i-set ang 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).
A call's thread: the Calls bot has posted the transcript as a text file, and an AI agent has posted a summary below it.
Pagkatapos ng tawag, ang transcript at ang kanyang buod sa thread ng tawag.

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
SettingVariableAno ang ilalagay
Enable call transcriptions (Beta)AM_CALLS_ENABLE_TRANSCRIPTIONStrue
Call transcriber APIAM_CALLS_TRANSCRIBE_APIopenai (ipinapakita bilang "OpenAI-compatible API (no job service)")
Speech-to-text API URLAM_CALLS_TRANSCRIBE_API_OPEN_AIURLAng base URL ng API, hanggang sa kasama ang /v1.
Speech-to-text modelAM_CALLS_TRANSCRIBE_API_OPEN_AI_MODELAng pangalan ng modelo ayon sa API, halimbawa whisper-1. Kinakailangan.
Speech-to-text API keyAM_CALLS_TRANSCRIBE_API_OPEN_AI_KEYIpinapadala bilang bearer token. Iwanan itong blang kung wala nang kailangan ng API.
Pagpapatupad ng live captions (Beta)AM_CALLS_ENABLE_LIVE_CAPTIONStrue para sa captions habang tumatawag.
Wika ng live captionsAM_CALLS_LIVE_CAPTIONS_LANGUAGEAng 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 transkripsyonAM_CALLS_SUMMARIZE_TRANSCRIPTIONStrue para sa AI summary pagkatapos ng tawag.
Sa System Console, lumalabas ang mga setting ng transkripsyon kapag naka-on na lang ang Pagpapatupad ng recording ng tawag, bagaman hindi kailangan ng recording ang ganitong uri ng transkripsyon. Iwasan ito sa pamamagitan ng paggamit ng mga variable sa itaas. Huwag pataasin ang recording kasama ang 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.