Panggilan dan suara
Panggilan dan saluran suara menghantar audio, video dan kongsi skrin terus ke pelayan pada port mereka sendiri. Halaman ini merangkumi bahagian rangkaian, tetapan yang perlu diperiksa selepas pemasangan, dan transkripsi dengan model speech-to-text yang anda jalankan sendiri.
Bagaimana panggilan berfungsi
Panggilan disediakan oleh aplikasi Panggilan (id com.mattermost.calls), yang dipasang dan didayakan secara lalai. Saluran suara (aplikasi Saluran Suara, imej antimatter-next) adalah bilik panggilan kekal yang dibina atas Panggilan: ia memerlukan Panggilan untuk didayakan dan menggunakan tetapan, port dan pelayan yang sama.
Aplikasi Panggilan menjalankan pelayan media di dalam Antimatter. Aplikasi web, aplikasi desktop dan aplikasi mudah alih menyambungkannya dengan WebRTC:
- isyarat (signalling) melalui sambungan web biasa (proxy HTTPS anda);
- media (audio, video, kongsi skrin) tidak: ia terus ke pelayan pada port panggilan, 8443 UDP dan TCP secara lalai.
Tetapan ini terdapat di Konsol Sistem › Plugin › Panggilan. Setiap tetapan juga boleh diset dengan pemboleh ubah persekitaran AM_CALLS_ pada perkhidmatan antimatter, yang kemudian akan mengatasi Konsol Sistem dan mengunci tetapan tersebut. Nama lama MM_CALLS_ juga berfungsi.
Periksa ini selepas pemasangan
- Buka port panggilan. Benarkan 8443/udp dan 8443/tcp dalam tembok api pelayan dan pelayan awan anda.
- Periksa mod ujian. Mod ujian (
DefaultEnabled) adalah dimatikan secara lalai, jadi semua orang boleh memulakan panggilan. Nyalakan Buka dalam Konsol Sistem › Plugin › Panggilan untuk membenarkan hanya pentadbir sistem memulakan panggilan dalam saluran semasa anda memeriksa sama ada panggilan berfungsi, kemudian matikan semula. Pembolehubah ialahAM_CALLS_DEFAULT_ENABLED:truebermaksud mod ujian dimatikan. Pelayar yang dipindahkan dari Mattermost mengekalkan pilihan yang disimpan dalam konfigurasinya. - Tetapkan video. Benarkan video (
EnableVideo,AM_CALLS_ENABLE_VIDEO) adalah dibuka secara lalai: orang boleh menyalakan kamera mereka di mana-mana panggilan dibenarkan, dalam mesej terus dan kumpulan serta dalam saluran. Dalam saluran suara, Benarkan video dalam saluran suara aplikasi Saluran Suara yang menentukan. Matikan dan tiada seorang pun boleh menyalakan kamera, walaupun dalam saluran suara. - Di belakang NAT, tetapkan alamat awam (bahagian seterusnya).
Di mana panggilan dibuka
Setiap komuniti mempunyai jenis, Tempat kerja atau Komuniti (lihat Jenis komuniti baharu). Saluran yang pentadbirnya tidak membuka atau mematikan panggilan akan mengikuti jenis komunitinya:
- dalam Tempat kerja, saluran mengikuti lalai pelayar: panggilan dibuka untuk semua orang semasa mod ujian dimatikan;
- dalam Komuniti, panggilan dimatikan dalam saluran: orang bercakap dalam saluran suara sebaliknya. Pentadbir saluran dan komuniti masih boleh membuka panggilan dalam saluran.
Tetapan saluran itu sendiri sentiasa menang. Mesej terus dan kumpulan tidak tergolong dalam komuniti: panggilan di sana dibuka untuk semua orang semasa mod ujian dimatikan. Perubahan jenis komuniti terpakai untuk panggilan dalam masa 30 saat.
Port, NAT dan STUN
| Tetapan | Pemboleh ubah | Lalai |
|---|---|---|
| Port Pelayan RTC (UDP) | AM_CALLS_UDP_SERVER_PORT | 8443 |
| Port Pelayan RTC (TCP) | AM_CALLS_TCP_SERVER_PORT | 8443 |
| Alamat Pelayan RTC (UDP), (TCP) | AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESS | kosong: semua alamat |
| Penimpaan Pelayan ICE | AM_CALLS_ICE_HOST_OVERRIDE | kosong: ditemui melalui STUN |
| Penimpaan Port Pelayan ICE | AM_CALLS_ICE_HOST_PORT_OVERRIDE | kosong: port pelayan |
| Peraturan Pelayan ICE | AM_CALLS_ICE_SERVERS_CONFIGS | [{"urls":["stun:stun.cloudflare.com:3478"]}] |
| (Eksperimental) Aktifkan sokongan IPv6 | (Konsol Sistem) | Tutup |
Port mesti berada antara 80 dan 49151. Dengan fail compose tapak, ubah CALLS_PORT dalam .env: ia menetapkan kedua-dua pemboleh ubah dan menerbitkan port, nombor yang sama pada hos dan dalam kontena. Klien cuba UDP terlebih dahulu dan kembali ke TCP pada port yang sama.
Alamat yang dihantar oleh klien untuk media
Pelayan memberitahu setiap klien alamat untuk menghantar media ("calon hos" mereka). Secara lalai, ia mencari alamat awam dengan bertanya kepada pelayan STUN, perkhidmatan awam yang membalas dengan alamat dan port tempat permintaan datang. Lalai ialah pelayan STUN awam Cloudflare, stun:stun.cloudflare.com:3478. Pelayan bukan satu-satunya yang menggunakannya: setiap klien yang menyertai panggilan juga bertanya kepadanya untuk alamat awam mereka sendiri. Pelayan STUN hanya melihat alamat IP dan port, bukan audio, video atau mesej panggilan.
Pelayan yang masih mempunyai pelayan STUN Mattermost (stun.global.calls.mattermost.com) disimpan dalam Peraturan Pelayan ICE, contohnya selepas berpindah dari Mattermost, menggunakan Cloudflare sebagai gantinya. Tetapan yang disimpan tidak diubah.
Tetapkan alamat sendiri apabila:
- pelayan berada di belakang NAT, atau mempunyai beberapa alamat awam: tetapkan Penimpaan Pelayan ICE kepada alamat IP awam (atau nama hos yang selesaikan kepadanya);
- NAT memetakan port awam yang berbeza kepada 8443: juga tetapkan Penimpaan Port Pelayan ICE kepada port awam tersebut;
- pelayan tiada akses Internet, atau anda tidak mahu pelayan dan klien menghubungi pelayan STUN luaran: tetapkan Penimpaan Pelayan ICE, dan kosongkan senarai STUN dengan
AM_CALLS_ICE_SERVERS_CONFIGS=[]. Dengan Penimpaan Pelayan ICE ditetapkan, pelayan tidak lagi bertanya kepada pelayan STUN untuk alamatnya; senarai kosong menghentikan klien daripada bertanya.
services:
antimatter:
environment:
AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
AM_CALLS_ICE_SERVERS_CONFIGS: "[]"
Untuk mengekalkan STUN tanpa pihak ketiga, jalankan pelayan STUN anda sendiri (pelayan TURN seperti coturn juga menjawab permintaan STUN) dan senaraikannya dalam Peraturan Pelayan ICE sebagai gantinya, seperti dalam contoh TURN di bawah.
Pada rangkaian tempatan sahaja, gunakan alamat LAN pelayan. Mula semula pelayan selepas mengubah port, alamat atau tetapan ICE, atau lumpuhkan dan aktifkan aplikasi Panggilan: pelayan media disetup apabila aplikasi bermula.
TURN, untuk tembok api ketat
Beberapa rangkaian menyekat kedua-dua UDP dan sambungan keluar ke port TCP yang luar biasa. Pengguna pada rangkaian sedemikian memerlukan pelayan TURN, yang meneruskan media melalui port yang boleh dicapai (sering kali 443). Antimatter tidak menyertakan pelayan TURN; jalankan pelayan TURN seperti coturn dan tambahkan ke ICE Servers Configurations, senarai JSON:
[
{"urls": ["stun:turn.example.com:3478"]},
{"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
- Dengan rahsia bersama (coturn's
use-auth-secret), letakkan rahsia yang sama dalam TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET): pelayan memberikan setiap klien kelayakan berjangka pendek, sah untuk TURN Credentials Expiration (minutes) (240 secara lalai). - Dengan kelayakan tetap, tambahkan
"username"dan"credential"ke entri TURN sebagai gantinya. - Server Side TURN (dimatikan secara lalai) juga menggunakan pelayan TURN untuk sambungan yang dimulakan oleh pelayan.
Tetapan panggilan lain
| Tetapan | Pemboleh ubah | Lalai | Fungsinya |
|---|---|---|---|
| Max call participants | AM_CALLS_MAX_CALL_PARTICIPANTS | 0 (tiada had) | Bilangan terbesar orang dalam satu panggilan. |
| Allow screen sharing | (Konsol Sistem) | hidup | Membenarkan peserta berkongsi skrin mereka. |
| Enable call ringing | AM_CALLS_ENABLE_RINGING | hidup | Membunyikan orang lain dalam mesej terus atau kumpulan apabila panggilan bermula di sana. |
| Enable simulcast for screen sharing (Experimental) | (Konsol Sistem) | Tutup | Menghantar perkongsian skrin dalam beberapa kualiti. |
| Enable AV1 codec for screen sharing (Experimental) | (Konsol Sistem) | Tutup | Diabaikan semasa simulcast dihidupkan. |
Aplikasi Saluran Suara mempunyai dua tetapan, di Konsol Sistem › Plugin › Saluran Suara: Sertai apabila membuka saluran suara (aktif secara lalai) dan Benarkan video dalam saluran suara (aktif secara lalai, tetapi lihat video di atas). Pentadbir komuniti menukar saluran menjadi saluran suara dalam tetapan saluran tersebut.
AM_CALLS_DISABLE=true. Saluran suara juga akan berhenti berfungsi.Pelayan yang lebih besar: rtcd luaran
Secara lalai, satu pelayan Antimatter membawa semua media panggilan. Untuk banyak panggilan serentak, atau untuk mengekalkan media di luar pelayan sembang, aplikasi Panggilan boleh menyerahkan media kepada rtcd, iaitu pelayan media berasingan (rtcd sumber terbuka Mattermost, versi 0.17 atau lebih baharu). Tetapkan RTCD service URL (AM_CALLS_RTCD_SERVICE_URL), sebagai contoh https://rtcd.example.com: semua panggilan kemudian akan melalui pelayan ini, dan klien akan menghantar media mereka ke port rtcd sendiri, bukan ke port Antimatter. Kelayakan boleh diberikan melalui AM_CALLS_RTCD_CLIENT_ID dan AM_CALLS_RTCD_AUTH_KEY; tanpa kelayakan ini, aplikasi akan mendaftarkan dirinya dengan rtcd. Tiada lesen diperlukan. Aplikasi Panggilan akan memaparkan amaran kepada Pentadbir yang mengesyorkan penggunaan rtcd apabila pelayan sering mempunyai lebih daripada 50 orang dalam panggilan serentak.
Transkripsi dan kapsyen langsung
Antimatter boleh mentranskripsi panggilan menggunakan model suara-ke-teks yang anda jalankan sendiri, dan memaparkan kapsyen langsung semasa orang bercakap. Antimatter menggunakan mana-mana pelayan yang menawarkan titik akhir /v1/audio/transcriptions yang serasi dengan OpenAI, seperti pelayan Whisper dalam rangkaian anda. Tiada perkhidmatan tambahan daripada Antimatter diperlukan.
Cara ia berfungsi
- Tuan rumah panggilan memulakan transkripsi dengan Transkripsikan panggilan dalam kawalan panggilan. Lencana Sedang ditranskripsi memaklumkan kepada semua orang.
- Aplikasi setiap peserta akan mendengar mikrofonnya sendiri, memotong suara kepada potongan pendek (sehingga 12 saat, dan tidak semasa senyap) dan menghantarnya ke Antimatter, yang kemudiannya meneruskannya ke pelayan suara-ke-teks anda.
- Dengan kapsyen langsung dihidupkan, teks setiap potongan akan dipaparkan kepada peserta sebagai kapsyen serta-merta.
- Apabila transkripsi dihentikan atau panggilan tamat, bot Panggilan akan memuat naik transkripsi sebagai fail teks dan fail subtitel WebVTT, dalam bebenang panggilan (dalam saluran suara, dalam saluran).
- Dengan Summarize transcriptions dihidupkan, ejen lalai aplikasi Ejen juga akan memuat naik ringkasan dalam bebenang (lihat AI).

Cara menetapkannya
Tetapkan ini pada perkhidmatan 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
| Tetapan | Pemboleh ubah | Apa yang perlu diisi |
|---|---|---|
| Enable call transcriptions (Beta) | AM_CALLS_ENABLE_TRANSCRIPTIONS | true |
| Call transcriber API | AM_CALLS_TRANSCRIBE_API | openai (dipaparkan sebagai "OpenAI-compatible API (no job service)") |
| Speech-to-text API URL | AM_CALLS_TRANSCRIBE_API_OPEN_AIURL | URL asas API, sehingga dan termasuk /v1. |
| Speech-to-text model | AM_CALLS_TRANSCRIBE_API_OPEN_AI_MODEL | Nama model seperti yang dikenali oleh API, sebagai contoh whisper-1. Diperlukan. |
| Speech-to-text API key | AM_CALLS_TRANSCRIBE_API_OPEN_AI_KEY | Dihantar sebagai token bearer. Kosongkan jika API tidak memerlukan kunci. |
| Benarkan kapsyen langsung (Beta) | AM_CALLS_ENABLE_LIVE_CAPTIONS | true untuk kapsyen semasa panggilan. |
| Bahasa kapsyen langsung | AM_CALLS_LIVE_CAPTIONS_LANGUAGE | Bahasa yang diucapkan, sebagai kod dua huruf (en secara lalai). Ia dihantar ke API suara-ke-teks untuk transkripsi juga, jadi tetapkannya walaupun tanpa kapsyen. |
| Rumuskan transkripsi | AM_CALLS_SUMMARIZE_TRANSCRIPTIONS | true untuk ringkasan AI selepas panggilan. |
openai: memulakan rakaman akan cuba memulakan transkrip perkhidmatan kerja dan gagal.Audio daripada semua orang yang bercakap semasa transkripsi dihidupkan dihantar ke pelayan suara-ke-teks yang anda tetapkan, dan transkripsi diposkan di tempat semua orang dalam saluran boleh membacanya. Beritahu pengguna anda, dan simpan pelayan itu dalam rangkaian anda sendiri jika panggilan bersifat sulit.
Rakaman
Rakaman panggilan (dan transkripsi menggunakan whisper.cpp atau transkripsi Azure terbina dalam) dijalankan dalam kontena berasingan yang dimulakan oleh perkhidmatan kerja, calls-offloader sumber terbuka Mattermost, yang anda pasang sendiri di sebelah Antimatter. Tetapan yang terlibat ialah Rakam panggilan (AM_CALLS_ENABLE_RECORDINGS, lalai: dimatikan), URL perkhidmatan kerja (AM_CALLS_JOB_SERVICE_URL), Masa rakaman panggilan maksimum (lalai: 60 minit, julat 15 hingga 180) dan Kualiti rakaman panggilan (rendah, sederhana atau tinggi; lalai: sederhana). Tiada lesen diperlukan. Apabila rakaman diaktifkan, hos panggilan memulakan dan menghentikan rakaman melalui Rakam panggilan dalam kawalan panggilan; semua orang dalam panggilan akan melihat bahawa rakaman sedang dijalankan, dan rakaman tersebut akan diposkan dalam bebenang panggilan apabila ia dihentikan. Panggilan dalam saluran suara tidak mempunyai bebenang, jadi ia tidak boleh dirakam. Untuk transkripsi dan kapsyen sahaja, tetapan teks-dari-suara di atas lebih ringkas: ia tidak memerlukan perkhidmatan kerja.