Puhelut ja ääni

Puhelut ja äänikanavat lähettävät äänen, videon ja näytön jakamisen suoraan palvelimelle omalla portillaan. Tämä sivu käsittelee verkkotason, asetuksen, jotka kannattaa tarkistaa asennuksen jälkeen, sekä transkription, jossa käytät itse ajamaasi puheentunnistusmallia.

Miten puhelut toimivat

Puhelut toimittaa Puhelut-sovellus (tunnus com.mattermost.calls), joka on asennettu ja otettu käyttöön oletuksena. Äänikanavat (Äänikanavat-sovellus, antimatter-next-kuva) ovat pysyviä puheluhuoneita, jotka perustuvat Puhelut-sovellukseen: ne vaativat, että Puhelut on otettu käyttöön, ja käyttävät samoja asetuksia, portteja ja palvelimia.

Puhelut-sovellus ajaa mediapalvelimen Antimatterin sisällä. Web-sovellus, työpöytäsovellus ja mobiilisovellukset yhdistyvät siihen WebRTC:llä:

  • signalointi kulkee normaalin web-yhteyden kautta (HTTPS-välityspalvelin);
  • media (ääni, video, näytön jakaminen) ei kulje: se lähetetään suoraan palvelimelle puheluporttiin, oletuksena 8443 UDP ja TCP.

Asetukset löytyvät kohdasta Järjestelmäkonsoli › Liiteohjelmat › Puhelut. Jokainen asetus voidaan myös määrittää AM_CALLS_-ympäristömuuttujalla antimatter-palvelussa, jolloin se ohittaa Järjestelmäkonsolin ja lukitsee asetuksen siellä. Myös vanhat MM_CALLS_-nimet toimivat.

Tarkista nämä asennuksen jälkeen

  1. Ava puheluportti. Salli 8443/udp ja 8443/tcp palvelimen ja pilvipalveluntarjoajasi palomuurissa.
  2. Tarkista testitila. Testitila (DefaultEnabled) on oletuksena pois päältä, joten kaikki voivat aloittaa puhelut. Kytke se Päälle kohdassa Järjestelmäkonsoli › Liiteohjelmat › Puhelut, jotta vain järjestelmän ylläpitäjät voivat aloittaa puhelut kanavilla, kun tarkistat, että puhelut toimivat. Kytke testitila pois päältä tarkistuksen jälkeen. Muuttuja on AM_CALLS_DEFAULT_ENABLED: true tarkoittaa, että testitila on pois päältä. Jos palvelin on siirretty Mattermostista, valinta on tallennettu sen konfiguraatioon.
  3. Päätä videon käytöstä. Ota video käyttöön (EnableVideo, AM_CALLS_ENABLE_VIDEO) on oletuksena päällä: käyttäjät voivat kytkeä kameransa päälle kaikkialla, missä puhelut ovat käytössä, eli suorissa ja ryhmäviesteissä sekä kanavilla. Äänikanavissa päätöksen tekee Äänikanavat-sovelluksen asetus Salli video äänikanavissa. Jos kytket tämän asetuksen pois päältä, kukaan ei voi kytkeä kameraa päälle, ei edes äänikanavissa.
  4. NAT-taustalla, aseta julkinen osoite (seuraava osio).

Missä puhelut ovat käytössä

Jokaisella yhteisöllä on tyyppi, Työtila tai Kilta (katso Kilta tai työtila). Kanava, jonka ylläpitäjät eivät ole kytkenet puheluita päälle tai pois päältä, seuraa yhteisönsä tyyppiä:

  • työtilassa kanavat seuraavat palvelimen oletusta: puhelut ovat päällä kaikille, kun testitila on pois päältä;
  • killassa puhelut ovat pois päältä kanavilla: keskustelut käydään äänikanavissa. Kanavan ja yhteisön ylläpitäjät voivat silti kytkeä puhelut päälle kanavalla.

Kanavan oma asetus on aina määräävä. Suorat ja ryhmäviestit eivät kuulu yhteisöön: puhelut ovat niissä päällä kaikille, kun testitila on pois päältä. Yhteisön tyypin muutos tulee voimaan puheluita varten 30 sekunnin kuluessa.

Portit, NAT ja STUN

AsetusMuuttujaOletusarvo
RTC-palvelimen portti (UDP)AM_CALLS_UDP_SERVER_PORT8443
RTC-palvelimen portti (TCP)AM_CALLS_TCP_SERVER_PORT8443
RTC-palvelimen osoite (UDP), (TCP)AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESStyhjä: kaikki osoitteet
ICE-isäntäosoitteen ohitusAM_CALLS_ICE_HOST_OVERRIDEtyhjä: löydetään STUN-palvelimen kautta
ICE-isäntäportin ohitusAM_CALLS_ICE_HOST_PORT_OVERRIDEtyhjä: palvelimen portti
ICE-palvelimien asetuksetAM_CALLS_ICE_SERVERS_CONFIGS[{"urls":["stun:stun.cloudflare.com:3478"]}]
(Kokeellinen) IPv6-tuen käyttöönotto(Järjestelmäkonsoli)Ei käytössä

Porttien tulee olla välillä 80–49151. Sivuston compose-tiedostossa muuta CALLS_PORT-muuttujan arvoa .env-tiedostossa: se asettaa molemmat muuttujat ja julkaisee portin, samalla numerolla isäntäkoneella ja kontissa. Asiakkaat yrittävät ensin UDP:ta ja siirtyvät TCP:hen samalla portilla, jos UDP ei toimi.

Mihin osoitteeseen asiakkaat lähettävät median

Palvelin kertoo jokaiselle asiakkaalle osoitteen, johon median tulee lähettää (ns. "host candidate"). Oletuksena se löytää julkisen osoitteen kysymällä STUN-palvelimelta, joka on julkinen palvelu, joka vastaa osoitteella ja portilla, josta pyyntö tuli. Oletusarvona on Cloudflaren julkinen STUN-palvelin stun:stun.cloudflare.com:3478. Palvelin ei ole ainoa, joka käyttää sitä: jokainen asiakas, joka liittyy puhelimeen, kysyy myös omasta julkisesta osoitteestaan. STUN-palvelin näkee vain IP-osoitteet ja portit, ei koskaan puheluiden ääntä, videota tai viestejä.

Palvelin, jossa on tallennettu Mattermostin STUN-palvelin (stun.global.calls.mattermost.com) ICE-palvelimien asetuksiin, esimerkiksi siirryttäessä Mattermostista, käyttää sen sijaan Cloudflaren palvelinta. Tallennettua asetusta ei muuteta.

Aseta osoite itse, jos:

  • palvelin on NAT-taustalla tai sillä on useita julkisia osoitteita: aseta ICE-isäntäosoitteen ohitus julkiseksi IP-osoitteeksi (tai isännänimeksi, joka ratkeaa siihen);
  • NAT karttaa eri julkisen portin porttiin 8443: aseta myös ICE-isäntäportin ohitus kyseiseksi julkiseksi portiksi;
  • palvelimella ei ole Internet-yhteyttä, tai et halua palvelimen eikä asiakkaiden ottavan yhteyttä ulkoiseen STUN-palvelimeen: aseta ICE-isäntäosoitteen ohitus ja tyhjennä STUN-lista arvolla AM_CALLS_ICE_SERVERS_CONFIGS=[]. Kun ICE-isäntäosoitteen ohitus on asetettu, palvelin ei enää kysy osoitettaan STUN-palvelimelta; tyhjä lista estää asiakkaita kysymästä osoitettaan.
services:
  antimatter:
    environment:
      AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
      AM_CALLS_ICE_SERVERS_CONFIGS: "[]"

Jotta STUN-palvelu pysyy kolmannen osapuolen ulkopuolella, aja oma STUN-palvelin (TURN-palvelin, kuten coturn, vastaa myös STUN-pyyntöihin) ja lisää se ICE-palvelimien asetuksiin alla olevan TURN-esimerkin tapaan.

Vain paikallisverkossa käytä palvelimen LAN-osoitetta. Käynnitä palvelin uudelleen, kun olet muuttanut portteja, osoitteita tai ICE-asetuksia, tai poista Calls-sovellus käytöstä ja ota se uudelleen käyttöön: mediaserveri asetetaan, kun sovellus käynnistyy.

TURN, tiukkojen palomuurien kanssa

Jotkut verkot estävät sekä UDP-liikenteen että poistuvat yhteydet epätavallisiin TCP-portteihin. Tällaisten verkkojen käyttäjät tarvitsevat TURN-palvelimen, joka välittää median portin kautta, johon heillä on pääsy (usein 443). Antimatter ei sisällä TURN-palvelinta; aja TURN-palvelin, kuten coturn, ja lisää se ICE Servers Configurations-asetukseen, joka on JSON-lista:

[
  {"urls": ["stun:turn.example.com:3478"]},
  {"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
  • Yhteisen salasan (coturnin use-auth-secret) kanssa aseta sama salasana TURN Static Auth Secret-asetukseen (AM_CALLS_TURN_STATIC_AUTH_SECRET): palvelin antaa jokaiselle asiakkaalle lyhytaikaiset tunnistetiedot, jotka ovat voimassa TURN Credentials Expiration (minutes) -ajan (oletusarvo 240 minuuttia).
  • Kiinteiden tunnistetietojen tapauksessa lisää TURN-tietueeseen "username" ja "credential" -kentät.
  • Server Side TURN (oletus: pois) käyttää TURN-palvelimia myös palvelimen aloittamiin yhteyksiin.

Muut puhelinasetukset

AsetusMuuttujaOletusarvoToiminto
Max call participantsAM_CALLS_MAX_CALL_PARTICIPANTS0 (ei rajoitusta)Yhden puhelun suurin osallistujamäärä.
Allow screen sharing(Järjestelmäkonsoli)onSallii osallistujien jakaa näytönsä.
Enable call ringingAM_CALLS_ENABLE_RINGINGonSoittaa suoran tai ryhmäviestin muille osallistujille, kun puhelu alkaa siellä.
Enable simulcast for screen sharing (Experimental)(Järjestelmäkonsoli)Ei käytössäLähettaa näytön jakamisen useilla laadutasoilla.
Enable AV1 codec for screen sharing (Experimental)(Järjestelmäkonsoli)Ei käytössäOhitetaan, kun simulcast on käytössä.

Äänikanavat-sovelluksessa on kaksi asetusta kohdassa Järjestelmäkonsoli › Liiteohjelmat › Äänikanavat: Liity avattaessa äänikanava (oletuksena päällä) ja Salli video äänikanavissa (oletuksena päällä, mutta katso videoa koskeva osio yllä). Ääni on kanavatyyppi, joka valitaan kanavaa luotaessa (katso Kanavan luominen); erillistä vaihetta äänikanavaksi muuttamiseen ei ole. Nämä kaksi asetusta koskevat kaikkia äänikanavia. Äänikanavan luominen edellyttää, että Äänikanavat-sovellus on aktiivinen; ilman sitä Ääni on harmaana kanavan luomisdialogissa.

The create-channel dialog with Voice picked: the Talk and Stage preset cards, Voice Channels app active
Ääni, kun Äänikanavat-sovellus on aktiivinen: Keskustelu- ja Lavastus-kortit.
Puheluiden poistamiseksi käytöstä kokonaan, poista Calls-liiteohjelman käytöstä kohdasta System Console › Plugins › Plugin Management tai aseta AM_CALLS_DISABLE=true. Äänikanavat lakkaavat silloin toimimasta.

Suuremmat palvelimet: ulkoinen rtcd

Oletuksena yksi Antimatter-palvelin käsittelee kaiken puheluiden median. Useiden yhtäaikaisien puheluiden tai median pitämisen keskustelupalvelin ulkopuolella takia Calls-sovellus voi siirtää median erilliseen mediaserveriin rtcd:iin (Mattermostin avoimen lähdekoodin rtcd, versio 0.17 tai uudempi). Määritä RTCD-palvelin-URL (AM_CALLS_RTCD_SERVICE_URL), esimerkiksi https://rtcd.example.com: silloin kaikki puhelut kulkevat sen kautta, ja asiakkaat lähettävät median rtcd:n omaan porttiin Antimatterin sijaan. Tunnustiedot voi antaa AM_CALLS_RTCD_CLIENT_ID ja AM_CALLS_RTCD_AUTH_KEY -muuttujilla; ilman niitä sovellus rekisteröi itsensä rtcd:ään. Lisenssiä ei tarvita. Calls-sovellus näyttää ylläpitäjille varoituksen, joka suosittelee rtcd:ää, jos palvelimella on usein yli 50 henkilöä puheluissa yhtä aikaa.

Transkriptio ja live-titrat

Antimatter voi transkriboita puheluita puheentunnistusmallilla, jonka ajat itse, ja näyttää live-titraat, kun ihmiset puhuvat. Antimatter käyttää mitä tahansa palvelinta, joka tarjoaa OpenAI-yhteensopivan /v1/audio/transcriptions-päätepisteen, kuten Whisper-palvelinta omassa verkossasi. Antimatterin lisäpalvelua ei tarvita.

Näin se toimii

  • Puhelun isäntä käynnistää transkription valitsemalla Transkriboi puhelu -kohdan puhelinhallinnasta. Transkriptio käynnissä -merkki ilmoittaa tästä kaikille.
  • Jokaisen osallistujan sovellus kuuntelee omaa mikrofoniaan, leikkaa puheen lyhyiksi paloiksi (enintään 12 sekuntia, ei koskaan mykistettynä) ja lähettää ne Antimatteriin, joka välittää ne puheentunnistuspalvelimellesi.
  • Kun live-titrat ovat päällä, jokaisen palan teksti näytetään osallistujille titratena heti.
  • Kun transkriptio lopetetaan tai puhelu päättyy, Calls-botti lähettää transkription tekstitiedostona ja WebVTT-alikirjoitustiedostona puhelun ketjuun (äänikanavissa kanavaan).
  • Kun Yhteenveto transkriptioista on päällä, tekoälykeskustelun oletusagentti julkaisee myös yhteenvedon ketjussa (katso Tekoäly).
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.
Puhelun jälkeen transkriptio ja sen yhteenveto puhelun ketjussa.

Asetukset

Määritä nämä antimatter-palveluun:

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
AsetusMuuttujaMikä syötetään
Ota puheluiden transkriptio käyttöön (Beta)AM_CALLS_ENABLE_TRANSCRIPTIONStrue
Puheluiden transkriptio-APIAM_CALLS_TRANSCRIBE_APIopenai (näytetään nimellä "OpenAI-compatible API (no job service)")
PUHEENTUNNISTUS-API-URLAM_CALLS_TRANSCRIBE_API_OPEN_AIURLAPI:n perus-URL, mukaan lukien /v1.
PUHEENTUNNISTUS-MALLIAM_CALLS_TRANSCRIBE_API_OPEN_AI_MODELMallin nimi, sellaisena kuin API sen tuntee, esimerkiksi whisper-1. Pakollinen.
PUHEENTUNNISTUS-API-AVAINAM_CALLS_TRANSCRIBE_API_OPEN_AI_KEYLähetetään bearer-tokenina. Jätä tyhjäksi, jos API ei vaadi avainta.
Ota live-titrat käyttöön (beta)AM_CALLS_ENABLE_LIVE_CAPTIONStrue titrajen näyttämiseksi puhelun aikana.
Live-titrajen kieliAM_CALLS_LIVE_CAPTIONS_LANGUAGEPuhuttu kieli kahden merkin koodina (oletus en). Arvo lähetetään myös puhe-tunnistus-API:lle transkriptioita varten, joten aseta se vaikka titrat eivät olisi käytössä.
Yhteenveto transkriptioistaAM_CALLS_SUMMARIZE_TRANSCRIPTIONStrue tekoälyn luoman yhteenveton saamiseksi puhelun jälkeen.
Järjestelmäkonsolissa transkriptioasetukset näkyvät vasta, kun Ota puheluntallenteet käyttöön on päällä, vaikka tällainen transkriptio ei vaadi tallennetta. Yllä mainittujen muuttujien avulla voit välttää tämän. Älä ota tallenteita käyttöön yhdessä openai-transkriptioinnin kanssa: tallenteen käynnistys yrittäisi silloin käynnistää job-service-transkriptioinnin ja epäonnistuisi.

Kaikkien, jotka puhuvat transkriptioinnin ollessa päällä, ääni lähetetään sinun määrittämälle puhe-tunnistuspalvelimelle, ja transkriptio julkaistaan kanavassa, jossa kaikki voivat lukea sen. Kerro käyttäjillesi tästä ja pidä palvelin omassa verkossasi, jos puhelut ovat luottamuksellisia.

Tallenteet

Puhelujen tallennus (ja transkriptio sisäänrakennetuilla whisper.cpp- tai Azure-transkriptoreilla) tapahtuu erillisissä konteissa, jotka käynnistää työpalvelu, Antimatterin avoimen lähdekoodin calls-offloader. Tämä palvelu on asennettava Antimatterin viereen. Asetukset ovat Enable call recordings (AM_CALLS_ENABLE_RECORDINGS, oletuksena pois päältä), Job service URL (AM_CALLS_JOB_SERVICE_URL), Maximum call recording duration (oletuksena 60 minuuttia, välillä 15–180) ja Call recording quality (matala, keskitaso tai korkea; oletuksena keskitaso). Lisenssiä ei tarvita. Kun tallennus on käytössä, puhelun isäntä voi käynnistää ja lopettaa tallennuksen puhelun hallintapainikkeiden Tallenna puhelu-painikkeella. Kaikki puhelun osallistujat näkevät, että puhelua tallennetaan, ja tallenne julkaistaan puhelun ketjuun, kun tallennus päättyy. Äänikanavien puheluilla ei ole ketjua, joten niitä ei voi tallentaa. Jos tarvitset vain transkriptiot ja live-titrat, yllä oleva puheentunnistuksen asennus on yksinkertaisempi: se ei vaadi työpalvelua.