Apeluri și voce
Apelurile și canalele vocale trimit audio, video și partajarea de ecran direct către server, pe portul acestuia. Această pagină acoperă partea de rețea, setările de verificat după instalare și transcrierea cu un model de speech-to-text pe care îl rulați dumneavoastră.
Cum funcționează apelurile
Apelurile sunt asigurate de aplicația Apeluri (id com.mattermost.calls), care este instalată și activată implicit. Canalele vocale (aplicația Canale vocale, imaginea antimatter-next) sunt camere de apel permanente construite pe baza aplicației Apeluri: necesită ca Apelurile să fie activate și folosesc aceleași setări, porturi și servere.
Aplicația Apeluri rulează un server media în interiorul Antimatter. Aplicația web, aplicația de desktop și aplicațiile mobile se conectează la acesta cu WebRTC:
- semnalizarea trece prin conexiunea web normală (proxii HTTPS);
- media (audio, video, partajare de ecran) nu: merge direct către server, pe portul apelurilor, 8443 UDP și TCP implicit.
Setările se află în Consola de sistem › Plugin-uri › Apeluri. Fiecare dintre ele poate fi configurată și cu o variabilă de mediu AM_CALLS_ pe serviciul antimatter, care apoi are prioritate față de Consola de sistem și blochează setarea acolo. Numele moștenite MM_CALLS_ funcționează, de asemenea.
Verificați aceste elemente după instalare
- Deschideți portul apelurilor. Permiteți 8443/udp și 8443/tcp în firewall-ul serverului și al furnizorului de cloud.
- Verifică modul de testare. Modul de testare (
DefaultEnabled) este dezactivat implicit, astfel încât toți utilizatorii pot iniția apeluri. Activează-l (Deschis) în Consola de sistem › Plugin-uri › Apeluri pentru a permite doar administratorilor de sistem să inițieze apeluri în canale, în timp ce verifici funcționarea apelurilor, apoi dezactivează-l din nou. Variabila esteAM_CALLS_DEFAULT_ENABLED: valoareatrueînseamnă că modul de testare este dezactivat. Un server migrat din Mattermost păstrează opțiunea salvată în configurația sa. - Decideți în legătură cu video. Activează video (
EnableVideo,AM_CALLS_ENABLE_VIDEO) este activat implicit: persoanele își pot porni camera oriunde apelurile sunt permise, în mesajele directe și de grup, precum și în canale. În canalele vocale, opțiunea Permite video în canalele vocale din aplicația Voice Channels decide. Dacă o dezactivați, nimeni nu își poate porni camera, nici măcar în canalele vocale. - În spatele NAT, configurați adresa publică (secțiunea următoare).
Unde sunt apelurile activate
Fiecare comunitate are un tip, fie Mediu de lucru, fie Comunitate (a se vedea Tipul comunităților noi). Un canal al cărui administratori nu au activat sau dezactivat explicit apelurile urmează tipul comunității:
- într-un Mediu de lucru, canalele urmează valoarea implicită a serverului: apelurile sunt activate pentru toți utilizatorii, atâta timp cât modul de testare este dezactivat;
- într-o Comunitate, apelurile sunt dezactivate în canale: utilizatorii comunică în schimb în canalele vocale. Administratorii de canal și de comunitate pot totuși activa apelurile într-un canal.
Setarea specifică a unui canal are întotdeauna prioritate. Mesajele directe și de grup nu aparțin unei comunități: apelurile sunt activate pentru toți utilizatorii, atâta timp cât modul de testare este dezactivat. O modificare a tipului unei comunități se aplică apelurilor în termen de 30 de secunde.
Porturi, NAT și STUN
| Setare | Variabilă | Implicit |
|---|---|---|
| Port server RTC (UDP) | AM_CALLS_UDP_SERVER_PORT | 8443 |
| Port server RTC (TCP) | AM_CALLS_TCP_SERVER_PORT | 8443 |
| Adresă server RTC (UDP), (TCP) | AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESS | gol: toate adresele |
| Suprascriere adresa gazdă ICE | AM_CALLS_ICE_HOST_OVERRIDE | gol: descoperită prin STUN |
| Suprascriere port gazdă ICE | AM_CALLS_ICE_HOST_PORT_OVERRIDE | gol: portul serverului |
| Configurații servere ICE | AM_CALLS_ICE_SERVERS_CONFIGS | [{"urls":["stun:stun.cloudflare.com:3478"]}] |
| (Experimental) Activează suportul IPv6 | (Consola de sistem) | dezactivat |
Porturile trebuie să fie între 80 și 49151. În fișierul de compunere al site-ului, modificați CALLS_PORT în .env: acesta setează ambele variabile și publică portul, același număr pe gazdă și în container. Clienții încearcă mai întâi UDP și recurg la TCP pe același port.
Adresa către care clienții trimit media
Serverul le comunică fiecărui client adresa către care trebuie să trimită media (candidatul „host”). În mod implicit, își descoperă adresa publică întrebând un server STUN, un serviciu public care răspunde cu adresa și portul de la care a venit o cerere. Valoarea implicită este serverul STUN public Cloudflare, stun:stun.cloudflare.com:3478. Serverul nu este singurul care îl folosește: fiecare client care se alătură unui apel îl întreabă și pentru propria sa adresă publică. Serverul STUN vede doar adrese IP și porturi, niciodată audio, video sau mesaje din apel.
Un server care are încă salvat serverul STUN al Mattermost (stun.global.calls.mattermost.com) în Configurații servere ICE, de exemplu după o migrare de la Mattermost, folosește în schimb pe cel al Cloudflare. Setarea salvată nu este modificată.
Setați adresa manual în următoarele cazuri:
- serverul este în spatele unui NAT sau are mai multe adrese publice: setați Suprascriere adresa gazdă ICE la adresa IP publică (sau la un nume de gazdă care se rezolvă în ea);
- NAT-ul mapază un port public diferit către 8443: setați și Suprascriere port gazdă ICE la acel port public;
- serverul nu are acces la Internet sau nu doriți ca serverul și clienții să contacteze un server STUN extern: setați Suprascriere adresa gazdă ICE și goliți lista STUN cu
AM_CALLS_ICE_SERVERS_CONFIGS=[]. Cu Suprascriere adresa gazdă ICE setată, serverul nu mai întreabă un server STUN pentru adresa sa; lista goală împiedică clienții să facă același lucru.
services:
antimatter:
environment:
AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
AM_CALLS_ICE_SERVERS_CONFIGS: "[]"
Pentru a păstra STUN fără a recurge la un terț, rulați un server STUN propriu (un server TURN, cum ar fi coturn, răspunde și la cereri STUN) și listați-l în Configurații servere ICE în schimb, așa cum se arată în exemplul TURN de mai jos.
Pe o rețea locală, folosiți adresa LAN a serverului. Reporniți serverul după modificarea porturilor, adreselor sau setărilor ICE, sau dezactivați și activați aplicația Calls: serverul media este configurat la pornirea aplicației.
TURN, pentru firewall-uri stricte
Unele rețele blochează atât UDP, cât și conexiunile de ieș către porturi TCP neobișnuite. Utilizatorii de pe aceste rețele au nevoie de un server TURN, care retransmite media printr-un port la care pot ajunge (de obicei 443). Antimatter nu include un astfel de server; rulați un server TURN, cum ar fi coturn, și adăugați-l în ICE Servers Configurations, o listă JSON:
[
{"urls": ["stun:turn.example.com:3478"]},
{"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
- În cazul unui secret partajat (
use-auth-secretdin coturn), introduceți același secret în TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET): serverul oferă fiecărui client credențiale cu valabilitate limitată, valide pentru TURN Credentials Expiration (minutes) (240 de minute, implicit). - În cazul credențialelor fixe, adăugați în schimb
"username"și"credential"la intrarea TURN. - Server Side TURN (dezactivat implicit) utilizează, de asemenea, serverele TURN pentru conexiunile inițiate de server.
Alte setări pentru apeluri
| Setare | Variabilă | Implicit | Ce face |
|---|---|---|---|
| Max call participants | AM_CALLS_MAX_CALL_PARTICIPANTS | 0 (fără limită) | Numărul maxim de persoane într-un singur apel. |
| Allow screen sharing | (Consola de sistem) | activat | Permite participanților să își partajeze ecranul. |
| Enable call ringing | AM_CALLS_ENABLE_RINGING | activat | Sună celelalte persoane dintr-un mesaj direct sau de grup când se începe un apel acolo. |
| Enable simulcast for screen sharing (Experimental) | (Consola de sistem) | dezactivat | Trimite partajările de ecran în mai multe calități. |
| Enable AV1 codec for screen sharing (Experimental) | (Consola de sistem) | dezactivat | Ignorat când simulcast este activat. |
Aplicația Canale vocale are două setări, în Consola de sistem › Plugin-uri › Canale vocale: Alăturare la deschiderea unui canal vocal (activată implicit) și Permite video în canalele vocale (activată implicit, dar consultați secțiunea despre video de mai sus). Administratorii comunității transformă un canal într-un canal vocal în setările acestuia.
AM_CALLS_DISABLE=true. Canalele vocale vor înceta, de asemenea, să funcționeze.Servere mai mari: un rtcd extern
În mod implicit, un server Antimatter preia tot media apelurilor. Pentru multe apeluri simultane, sau pentru a ține media în afara serverului de chat, aplicația Calls poate preda media către rtcd, un server de media separat (open-source de la Mattermost rtcd, versiunea 0.17 sau mai nouă). Setează RTCD service URL (AM_CALLS_RTCD_SERVICE_URL), de exemplu https://rtcd.example.com: toate apelurile trec atunci prin el, iar clienții trimit media către portul propriu al rtcd, în loc de cel al Antimatter. Credentialele pot fi furnizate cu AM_CALLS_RTCD_CLIENT_ID și AM_CALLS_RTCD_AUTH_KEY; fără ele, aplicația se înregistrează automat cu rtcd. Nu este necesară nicio licență. Aplicația Calls afișează administratorilor un avertisment care recomandă rtcd atunci când pe server se află frecvent mai mult de 50 de persoane în apeluri simultan.
Transcriere și subtitrări în direct
Antimatter poate transcrie apelurile cu un model de conversie vorbire-text pe care îl rulezi tu însuți și poate afișa subtitrări în direct în timp ce oamenii vorbesc. Antimatter utilizează orice server care oferă un endpoint /v1/audio/transcriptions compatibil cu OpenAI, de exemplu un server Whisper din rețeaua ta. Nu este necesar niciun serviciu suplimentar de la Antimatter.
Cum funcționează
- Gazda unui apel inițiază transcrierea cu Transcrie apelul în controalele apelului. Un insignă Se transcrie anunță toți participanții.
- Aplicația fiecărui participant ascultă propriul microfon, taie vorbirea în bucăți scurte (de cel mult 12 secunde, niciodată când este mut) și le trimite către Antimatter, care le forward către serverul tău de conversie vorbire-text.
- Cu subtitrările în direct activate, textul fiecărei bucăți este afișat participanților imediat, ca subtitrare.
- Când transcrierea se oprește sau apelul se încheie, botul Calls postează transcrierea ca fișier de text și fișier de subtitrări WebVTT, în firul de discuție al apelului (în canalele vocale, în canal).
- Cu Summarize transcriptions activat, agentul implicit al aplicației Agents postează și un rezumat în firul de discuție (vezi AI).

Configurarea
Setează următoarele pe serviciul 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
| Setare | Variabilă | Ce trebuie introdus |
|---|---|---|
| Enable call transcriptions (Beta) | AM_CALLS_ENABLE_TRANSCRIPTIONS | true |
| Call transcriber API | AM_CALLS_TRANSCRIBE_API | openai (afisat ca "OpenAI-compatible API (no job service)") |
| Speech-to-text API URL | AM_CALLS_TRANSCRIBE_API_OPEN_AIURL | URL-ul de bază al API-ului, inclusiv /v1. |
| Speech-to-text model | AM_CALLS_TRANSCRIBE_API_OPEN_AI_MODEL | Numele modelului așa cum îl cunoaște API-ul, de exemplu whisper-1. Obligatoriu. |
| Speech-to-text API key | AM_CALLS_TRANSCRIBE_API_OPEN_AI_KEY | Trimis ca token bearer. Lasă-l gol dacă API-ul nu necesită unul. |
| Activează subtitrările în direct (Beta) | AM_CALLS_ENABLE_LIVE_CAPTIONS | true pentru subtitrări în timpul apelului. |
| Limba subtitrărilor în direct | AM_CALLS_LIVE_CAPTIONS_LANGUAGE | Limba vorbită, ca cod de două litere (en implicit). Este trimisă și către API-ul de transcriere pentru transcrieri, deci seteaz-o chiar și fără subtitrări. |
| Rezumă transcrierile | AM_CALLS_SUMMARIZE_TRANSCRIPTIONS | true pentru un rezumat generat de AI după apel. |
openai: pornirea unei înregistrări ar încerca apoi să pornească transcribitorul job-service și ar eșua.Audio-ul tuturor celor care vorbesc în timp ce transcrierea este activă este trimis către serverul de transcriere pe care l-ai configurat, iar transcrierea este publicată acolo unde toți din canal o pot citi. Informează-ți utilizatorii și păstrează acel server în rețeaua ta proprie dacă apelurile sunt confidențiale.
Înregistrări
Înregistrarea apelurilor (și transcrierea cu transcribatorii încorporați whisper.cpp sau Azure) se execută în containere separate, pornite de un serviciu de job-uri, calls-offloader open-source de la Mattermost, pe care îl implementați dumneavoastră lângă Antimatter. Setările sunt Enable call recordings (AM_CALLS_ENABLE_RECORDINGS, dezactivată implicit), Job service URL (AM_CALLS_JOB_SERVICE_URL), Maximum call recording duration (60 de minute implicit, între 15 și 180) și Call recording quality (scăzută, medie sau ridicată; medie implicit). Nu este necesară nicio licență. Odată ce înregistrările sunt activate, gazda unui apel pornește și oprește o înregistrare cu Record the call în controalele apelului; toți participanții la apel văd că este în curs de înregistrare, iar înregistrarea este publicată în firul de discuție al apelului când se oprește. Apelurile în canale vocale nu au un fir de discuție, deci nu pot fi înregistrate. Pentru doar transcrieri și subtitrări, configurarea de recunoaștere a vorbirii de mai sus este mai simplă: nu necesită niciun serviciu de job-uri.