Samtal och röst

Samtal och röstkanaler skickar ljud, video och skärmdelning direkt till servern på dess egen port. Den här sidan behandlar nätverksaspekten, inställningarna som bör kontrolleras efter installation, samt transkription med en texttilltal-modell som du kör själv.

Så fungerar samtal

Samtal tillhandahålls av appen Samtal (id com.mattermost.calls), som är installerad och aktiverad som standard. Röstkanaler (appen Röstkanaler, antimatter-next-bilden) är permanenta samtalsrum byggda på Samtal: de kräver att Samtal är aktiverat och använder samma inställningar, portar och servrar.

Appen Samtal kör en mediaserver inuti Antimatter. Webapp, skrivbordsapp och mobilappar ansluter till den med WebRTC:

  • signaleringen går via den vanliga webbförbindelsen (din HTTPS-proxy);
  • mediet (ljud, video, skärmdelning) gör det inte: det går direkt till servern på samtalsporten, 8443 UDP och TCP som standard.

Inställningarna finns i Systemkonsol › Plugin › Samtal. Varje inställning kan också sättas med en AM_CALLS_-miljövariabel på tjänsten antimatter, vilket då har företräde framför Systemkonsolen och låser inställningen där. De äldre MM_CALLS_-namnen fungerar också.

Kontrollera dessa efter installation

  1. Öppna samtalsporten. Tillåt 8443/udp och 8443/tcp i serverns brandvägg och hos din molnleverantör.
  2. Kontrollera testläge. Testläge (DefaultEnabled) är av som standard, så alla kan starta samtal. Sätt det till På i Systemkonsol › Plugin › Samtal för att låta endast systemadministratörer starta samtal i kanaler medan du kontrollerar att samtal fungerar, och sätt det sedan av igen. Variabeln är AM_CALLS_DEFAULT_ENABLED: true betyder att testläge är av. En server som har flyttats från Mattermost behåller det val som sparats i dess konfiguration.
  3. Beslut om video. Aktivera video (EnableVideo, AM_CALLS_ENABLE_VIDEO) är på som standard: personer kan slå på sin kamera där samtal är aktiverat, i direkt- och gruppmeddelanden samt i kanaler. I röstkanaler avgör appen Röstkanalers Tillåt video i röstkanaler. Sätt det av och ingen kan slå på en kamera, inte ens i röstkanaler.
  4. Bakom NAT, ange den publika adressen (nästa avsnitt).

Var samtal är aktiverade

Varje community är av en viss typ, antingen Arbetsplats eller Community (se Typ av nya communities). En kanal vars administratörer inte har aktiverat eller inaktiverat samtal följer communityns typ:

  • i en arbetsplats följer kanaler serverns standardinställning: samtal är aktiverade för alla när testläget är inaktiverat;
  • i en community är samtal inaktiverade i kanaler: personer pratar i röstkanaler istället. Kanal- och communityadministratörer kan dock fortfarande aktivera samtal i en kanal.

En kanals egna inställning har alltid företräde. Direkt- och gruppmeddelanden tillhör ingen community: samtal är aktiverade för alla där när testläget är inaktiverat. En ändring av en communitys typ gäller för samtal inom 30 sekunder.

Portar, NAT och STUN

InställningVariabelStandard
RTC-serverport (UDP)AM_CALLS_UDP_SERVER_PORT8443
RTC-serverport (TCP)AM_CALLS_TCP_SERVER_PORT8443
RTC-serveradress (UDP), (TCP)AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESStomt: alla adresser
Överskrivning av ICE-värdAM_CALLS_ICE_HOST_OVERRIDEtomt: hittas via STUN
Överskrivning av ICE-värdportAM_CALLS_ICE_HOST_PORT_OVERRIDEtomt: serverport
Inställningar för ICE-servrarAM_CALLS_ICE_SERVERS_CONFIGS[{"urls":["stun:stun.cloudflare.com:3478"]}]
(Experimentell) Aktivera IPv6-stöd(Systemkonsol)Av

Portarna måste vara mellan 80 och 49151. Med sajtens compose-fil, ändra CALLS_PORT i .env: det sätter båda variablerna och publicerar porten, samma nummer på värdmaskinen och i containern. Klienter försöker först med UDP och faller tillbaka på TCP på samma port.

Vilken adress klienter skickar media till

Servern meddelar varje klient adressen att skicka media till (dess "värdkandidat"). Som standard hittar den sin publika adress genom att fråga en STUN-server, en offentlig tjänst som svarar med adressen och porten som en begäran kom ifrån. Standardinställningen är Cloudflares publika STUN-server, stun:stun.cloudflare.com:3478. Servern är inte den enda som använder den: varje klient som går med i ett samtal frågar också den efter sin egen publika adress. STUN-servern ser bara IP-adresser och portar, aldrig ljud, video eller meddelanden från samtal.

En server som fortfarande har Mattermosts STUN-server (stun.global.calls.mattermost.com) sparad i Inställningar för ICE-servrar, till exempel efter en flytt från Mattermost, använder Cloudflares istället. Den sparade inställningen ändras inte.

Ställ in adressen själv när:

  • servern ligger bakom NAT, eller har flera publika adresser: ställ in Överskrivning av ICE-värd till den publika IP-adressen (eller ett värdnamn som löses upp till den);
  • NAT:en mappar en annan publik port till 8443: ställ också in Överskrivning av ICE-värdport till den publika porten;
  • servern har ingen internetanslutning, eller så vill du inte att servern och klienterna ska kontakta en extern STUN-server: ange ICE Host Override och töm STUN-listan med AM_CALLS_ICE_SERVERS_CONFIGS=[]. När ICE Host Override är angivet frågar servern inte längre en STUN-server efter sin adress; den tomma listan förhindrar att klienterna gör det.
services:
  antimatter:
    environment:
      AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
      AM_CALLS_ICE_SERVERS_CONFIGS: "[]"

För att behålla STUN utan en tredjepart, kör din egen STUN-server (en TURN-server, till exempel coturn, svarar också på STUN-anfrågningar) och ange den i ICE Servers Configurations istället, enligt TURN-exemplet nedan.

På ett lokalt nätverk, använd serverns LAN-adress. Starta om servern efter att ha ändrat portar, adresser eller ICE-inställningar, eller så inaktivera och aktivera appen Samtal: mediaservern ställs in när appen startar.

TURN, för strikta brandväggar

Vissa nätverk blockerar både UDP och utgående anslutningar till ovanliga TCP-portar. Personer på sådana nätverk behöver en TURN-server, som vidarebefordrar medien via en port de kan nå (ofta 443). Antimatter medföljer ingen; kör en TURN-server, till exempel coturn, och lägg till den i ICE Servers Configurations, en JSON-lista:

[
  {"urls": ["stun:turn.example.com:3478"]},
  {"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
  • Med en delad hemlighet (coturns use-auth-secret), ange samma hemlighet i TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET): servern ger varje klient kortlivade legitimationsuppgifter, giltiga i TURN Credentials Expiration (minutes) (240 som standard).
  • Med fasta legitimationsuppgifter, lägg till "username" och "credential" i TURN-posten istället.
  • Server Side TURN (inaktiverad som standard) använder också TURN-servrarna för anslutningar som servern startar.

Övriga inställningar för samtal

InställningVariabelStandardVad den gör
Max call participantsAM_CALLS_MAX_CALL_PARTICIPANTS0 (ingen gräns)Största antal personer i ett samtal.
Allow screen sharing(Systemkonsol)påTillåter deltagare att dela sin skärm.
Enable call ringingAM_CALLS_ENABLE_RINGINGpåRinger de andra i ett direkt- eller gruppmeddelande när ett samtal startar där.
Enable simulcast for screen sharing (Experimental)(Systemkonsol)AvSkickar skärmdelning i flera kvaliteter.
Enable AV1 codec for screen sharing (Experimental)(Systemkonsol)AvIgnoreras när simulcast är aktiverat.

Appen Röstkanaler har två inställningar, i Systemkonsol › Plugin › Voice Channels: Join when opening a voice channel (aktiverad som standard) och Allow video in voice channels (aktiverad som standard, men se video ovan). Community-administratörer gör om en kanal till en röstkanal i dess inställningar.

För att stänga av samtal helt, inaktivera appen Samtal i Systemkonsol › Plugin › Pluginadministration eller sätt AM_CALLS_DISABLE=true. Röstkanaler slutar då också fungera.

Större servrar: en extern rtcd

Som standard hanterar en Antimatter-server all mediedata för samtal. För många samtal samtidigt, eller för att hålla mediedata borta från chattservern, kan appen Samtal överlämna mediedata till rtcd, en separat medieserver (Mattermosts open source rtcd, version 0.17 eller senare). Sätt RTCD service URL (AM_CALLS_RTCD_SERVICE_URL), till exempel https://rtcd.example.com: alla samtal går då genom den, och klienter skickar sin mediedata till rtcd:s egen port istället för Antimatters. Autentiseringsuppgifter kan anges med AM_CALLS_RTCD_CLIENT_ID och AM_CALLS_RTCD_AUTH_KEY; utan dessa registrerar appen sig själv hos rtcd. Ingen licens krävs. Appen Samtal visar administratörer en varning som rekommenderar rtcd när en server ofta har mer än 50 personer i samtal samtidigt.

Transkription och live-undertexter

Antimatter kan transkribera samtal med ett tal-till-text-modell som du kör själv, och visa live-undertexter medan människor pratar. Antimatter använder vilken server som helst som erbjuder en OpenAI-kompatibel /v1/audio/transcriptions-endpoint, till exempel en Whisper-server på ditt nätverk. Ingen extra tjänst från Antimatter krävs.

Så funkar det

  • Värd för ett samtal startar transkriptionen med Transkribera samtalet i samtalskontrollerna. En Transkriberar-märkning informerar alla.
  • Varje deltagares app lyssnar på sin egen mikrofon, delar upp talet i korta bitar (upp till 12 sekunder, aldrig när ljudet är stängt av) och skickar dem till Antimatter, som vidarebefordrar dem till din tal-till-text-server.
  • Med live-undertexter aktiverade visas texten för varje bit som undertext för deltagarna direkt.
  • När transkriptionen slutar eller samtalet tar slut, postar boten för Samtal transkriptet som en textfil och en WebVTT-undertextfil, i samtalets tråd (i röstkanaler, i kanalen).
  • Med Sammanfatta transkriptioner aktiverat, postar även standardagenten i appen Agents en sammanfattning i tråden (se 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.
Efter samtalet, transkriptet och dess sammanfattning i samtalets tråd.

Så sätter du upp det

Sätt dessa på tjänsten 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
InställningVariabelVad som ska anges
Aktivera transkriptioner för samtal (Beta)AM_CALLS_ENABLE_TRANSCRIPTIONStrue
API för samtalstranskriberareAM_CALLS_TRANSCRIBE_APIopenai (visas som "OpenAI-kompatibel API (ingen jobbtjänst)")
URL för tal-till-text-APIAM_CALLS_TRANSCRIBE_API_OPEN_AIURLAPI:ns bas-URL, upp till och med /v1.
Tal-till-text-modellAM_CALLS_TRANSCRIBE_API_OPEN_AI_MODELModellnamnet som API:et känner till, till exempel whisper-1. Obligatoriskt.
Tal-till-text-API-nyckelAM_CALLS_TRANSCRIBE_API_OPEN_AI_KEYSkickas som en bearer-token. Lämna tomt om API:et inte kräver någon.
Aktivera live-undertexter (Beta)AM_CALLS_ENABLE_LIVE_CAPTIONStrue för undertexter under samtalet.
Live-undertexters språkAM_CALLS_LIVE_CAPTIONS_LANGUAGEDet talade språket, som en kod med två bokstäver (standard är en). Det skickas också till tal-till-text-API:et för transkriptioner, så ange det även om du inte använder undertexter.
Sammanfatta transkriptionerAM_CALLS_SUMMARIZE_TRANSCRIPTIONStrue för en AI-sammanfattning efter samtalet.
I Systemkonsolen visas inställningarna för transkriptioner först när Aktivera inspelningar av samtal är påslaget, även om denna typ av transkription inte kräver någon inspelning. Att ställa in dem med variablerna ovan undviker detta. Slå inte på inspelningar tillsammans med transkriberaren openai: att starta en inspelning skulle då försöka starta jobbtjänstens transkriberare och misslyckas.

Ljudet från alla som talar medan transkriptionen är påslaget skickas till den tal-till-text-server du har konfigurerat, och transkriptionen publiceras där alla i kanalen kan läsa den. Informera dina användare och håll servern på ditt eget nätverk om samtalen är konfidentiella.

Inspelningar

Inspelning av samtal (och transkription med den inbyggda whisper.cpp- eller Azure-transkriberaren) körs i separata containrar som startas av en jobbtjänst, Mattermosts öppen källkod calls-offloader, som du själv deployar bredvid Antimatter. Inställningarna är Aktivera inspelningar av samtal (AM_CALLS_ENABLE_RECORDINGS, avstängt som standard), Jobbtjänstens URL (AM_CALLS_JOB_SERVICE_URL), Maximal längd för inspelning av samtal (60 minuter som standard, 15 till 180) och Kvalitet för inspelning av samtal (låg, medel eller hög; medel som standard). Ingen licens krävs. När inspelningar är påslagna startar och stoppar värd för ett samtal en inspelning med Spela in samtalet i samtalskontrollerna; alla i samtalet ser att det spelas in, och inspelningen publiceras i samtalets tråd när den stoppas. Samtal i röstkanaler har ingen tråd och kan därför inte spelas in. För bara transkriptioner och undertexter är tal-till-text-inställningarna ovan enklare: de kräver ingen jobbtjänst.