Κλήσεις και φωνή
Οι κλήσεις και τα φωνητικά κανάλια στέλνουν ήχο, βίντεο και κοινή χρήση οθόνης απευθείας στον διακομιστή, μέσω της δικής τους θύρας. Αυτή η σελίδα καλύπτει τη δικτυακή πλευρά, τις ρυθμίσεις που πρέπει να ελέγξετε μετά την εγκατάσταση, και τη μεταγραφή με ένα μοντέλο αναγνώρισης ομιλίας που εκτελείτε εσείς.
Πώς λειτουργούν οι κλήσεις
Οι κλήσεις παρέχονται από την εφαρμογή Calls (id com.mattermost.calls), η οποία εγκαθίσταται και ενεργοποιείται από προεπιλογή. Τα φωνητικά κανάλια (η εφαρμογή Voice Channels, εικόνα antimatter-next) είναι μόνιμοι χώροι κλήσεων βασισμένοι στις Calls: απαιτούν να είναι ενεργοποιημένες οι Calls και χρησιμοποιούν τις ίδιες ρυθμίσεις, θύρες και διακομιστές.
Η εφαρμογή Calls εκτελεί έναν διακομιστή μέσων εντός του Antimatter. Η εφαρμογή για τον περιηγητή, η επιτραπέζια εφαρμογή και οι κινητές εφαρμογές συνδέονται σε αυτόν μέσω WebRTC:
- η σήμανση (signalling) περνάει από τη συνήθη σύνδεση του δικτύου (το HTTPS proxy σας);
- τα μέσα (ήχος, βίντεο, κοινή χρήση οθόνης) όχι: πηγαίνουν απευθείας στον διακομιστή μέσω της θύρας κλήσεων, 8443 UDP και TCP από προεπιλογή.
Οι ρυθμίσεις βρίσκονται στο Κονσόλα συστήματος › Προσθήκες › Κλήσεις. Κάθε μία από αυτές μπορεί επίσης να ρυθμιστεί με μια μεταβλητή περιβάλλοντος AM_CALLS_ στην υπηρεσία antimatter, η οποία τότε υπερισχύει της Κονσόλας συστήματος και κλειδώνει τη ρύθμιση εκεί. Λειτουργούν επίσης οι παλαιότερες ονομασίες MM_CALLS_.
Ελέγξτε αυτά μετά την εγκατάσταση
- Ανοίξτε τη θύρα κλήσεων. Επιτρέψτε 8443/udp και 8443/tcp στο τείχος προστασίας του διακομιστή και του προμηθευτή σας στο cloud.
- Ελέγξτε τη δοκιμαστική λειτουργία. Η δοκιμαστική λειτουργία (
DefaultEnabled) είναι απενεργοποιημένη από προεπιλογή, οπότε όλοι μπορούν να ξεκινήσουν κλήσεις. Ενεργοποιήστε την (Ενεργό) από Κονσόλα συστήματος › Προσθήκες › Κλήσεις για να μπορούν μόνο οι διαχειριστές συστήματος να ξεκινούν κλήσεις σε κανάλια, ενώ ελέγχετε ότι οι κλήσεις λειτουργούν, και στη συνέχεια απενεργοποιήστε την ξανά. Η μεταβλητή είναιAM_CALLS_DEFAULT_ENABLED: η τιμήtrueσημαίνει ότι η δοκιμαστική λειτουργία είναι απενεργοποιημένη. Ένας διακομιστής που μεταφέρθηκε από Mattermost διατηρεί την επιλογή που έχει αποθηκευτεί στη ρύθμισή του. - Αποφασίστε για το βίντεο. Η επιλογή Ενεργοποίηση βίντεο (
EnableVideo,AM_CALLS_ENABLE_VIDEO) είναι ενεργοποιημένη από προεπιλογή: οι χρήστες μπορούν να ενεργοποιήσουν την κάμερά τους παντού όπου οι κλήσεις είναι ενεργοποιημένες, σε άμεσα και ομαδικά μηνύματα και σε κανάλια. Στα φωνητικά κανάλια, το Επιτρέπει βίντεο σε φωνητικά κανάλια της εφαρμογής Φωνητικά κανάλια αποφασίζει. Αν την απενεργοποιήσετε, κανείς δεν μπορεί να ενεργοποιήσει κάμερα, ούτε καν σε φωνητικά κανάλια. - Πίσω από NAT, ορίστε τη δημόσια διεύθυνση (επόμενη ενότητα).
Πού είναι ενεργοποιημένες οι κλήσεις
Κάθε κοινότητα έχει έναν τύπο, Χώρο εργασίας ή Συντεχνία (δείτε Συντεχνία ή χώρος εργασίας). Ένα κανάλι του οποίου οι διαχειριστές δεν έχουν ενεργοποιήσει ή απενεργοποιήσει τις κλήσεις ακολουθεί τον τύπο της κοινότητάς του:
- σε έναν χώρο εργασίας, τα κανάλια ακολουθούν την προεπιλογή του διακομιστή: οι κλήσεις είναι ενεργές για όλους όσο η λειτουργία δοκιμής είναι απενεργοποιημένη·
- σε μια συντεχνία, οι κλήσεις είναι απενεργοποιημένες στα κανάλια: οι χρήστες μιλούν σε φωνητικά κανάλια. Οι διαχειριστές καναλιών και κοινοτήτων μπορούν ακόμα να ενεργοποιήσουν τις κλήσεις σε ένα κανάλι.
Η δική του ρύθμιση ενός καναλιού υπερισχύει πάντα. Τα άμεσα και ομαδικά μηνύματα δεν ανήκουν σε κοινότητα: οι κλήσεις εκεί είναι ενεργοποιημένες για όλους όσο η λειτουργία δοκιμής είναι απενεργοποιημένη. Μια αλλαγή του τύπου μιας κοινότητας εφαρμόζεται στις κλήσεις εντός 30 δευτερολέπτων.
Θύρες, NAT και STUN
| Ρύθμιση | Μεταβλητή | Προεπιλογή |
|---|---|---|
| Θύρα διακομιστή RTC (UDP) | AM_CALLS_UDP_SERVER_PORT | 8443 |
| Θύρα διακομιστή RTC (TCP) | AM_CALLS_TCP_SERVER_PORT | 8443 |
| Διεύθυνση διακομιστή RTC (UDP), (TCP) | AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESS | κενή: όλες οι διευθύνσεις |
| Επικάλυψη διεύθυνσης ICE Host | AM_CALLS_ICE_HOST_OVERRIDE | κενό: εντοπίζεται μέσω STUN |
| Επικάλυψη θύρας ICE Host | AM_CALLS_ICE_HOST_PORT_OVERRIDE | κενό: η θύρα του διακομιστή |
| Διαμορφώσεις διακομιστών ICE | AM_CALLS_ICE_SERVERS_CONFIGS | [{"urls":["stun:stun.cloudflare.com:3478"]}] |
| (Πειραματικό) Ενεργοποίηση υποστήριξης IPv6 | (Κονσόλα συστήματος) | απενεργοποιημένη |
Οι θύρες πρέπει να είναι μεταξύ 80 και 49151. Με το αρχείο compose του χώρου, αλλάξτε το CALLS_PORT στο .env: ορίζει και τις δύο μεταβλητές και εκθέτει τη θύρα, με τον ίδιο αριθμό στον υπολογιστή και στον container. Οι πελάτες δοκιμάζουν πρώτα UDP και στη συνέχεια TCP στην ίδια θύρα.
Η διεύθυνση στην οποία οι πελάτες στέλνουν τα μέσα
Ο διακομιστής ενημερώνει κάθε πελάτη για τη διεύθυνση στην οποία πρέπει να στείλει τα μέσα (τον «host candidate»). Εξ ορισμού, εντοπίζει τη δημόσια διεύθυνσή του ρωτώντας έναν διακομιστή STUN, δημόσια υπηρεσία που απαντά με τη διεύθυνση και τη θύρα από την οποία προήλθε το αίτημα. Η προεπιλογή είναι ο δημόσιος διακομιστής STUN της Cloudflare, stun:stun.cloudflare.com:3478. Ο διακομιστής δεν είναι ο μόνος που τον χρησιμοποιεί: κάθε πελάτης που συμμετέχει σε κλήση ρωτά επίσης για τη δημόσια διεύθυνσή του. Ο διακομιστής STUN βλέπει μόνο διευθύνσεις IP και θύρες, ποτέ ήχο, βίντεο ή μηνύματα κλήσης.
Ένας διακομιστής που έχει αποθηκευμένο τον διακομιστή STUN της Mattermost (stun.global.calls.mattermost.com) στις Διαμορφώσεις διακομιστών ICE, για παράδειγμα μετά από μεταφορά από Mattermost, χρησιμοποιεί αντί για αυτόν τον της Cloudflare. Η αποθηκευμένη ρύθμιση δεν αλλάζει.
Ορίστε τη διεύθυνση εσείς όταν:
- ο διακομιστής βρίσκεται πίσω από NAT ή έχει πολλές δημόσιες διευθύνσεις: ορίστε Επικάλυψη διεύθυνσης ICE Host στη δημόσια διεύθυνση IP (ή σε hostname που αντιστοιχεί σε αυτήν);
- το NAT αντιστοιχίζει μια διαφορετική δημόσια θύρα στην 8443: ορίστε επίσης Επικάλυψη θύρας ICE Host σε αυτήν τη δημόσια θύρα;
- ο διακομιστής δεν έχει πρόσβαση στο Internet ή δεν θέλετε ο διακομιστής και οι πελάτες να επικοινωνούν με εξωτερικό διακομιστή STUN: ορίστε Επικάλυψη διεύθυνσης ICE Host και αδειάστε τη λίστα STUN με
AM_CALLS_ICE_SERVERS_CONFIGS=[]. Με ορισμένη Επικάλυψη διεύθυνσης ICE Host, ο διακομιστής δεν ρωτά πλέον διακομιστή STUN για τη διεύθυνσή του; η κενή λίστα εμποδίζει τους πελάτες να ρωτούν έναν.
services:
antimatter:
environment:
AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
AM_CALLS_ICE_SERVERS_CONFIGS: "[]"
Για να διατηρήσετε STUN χωρίς τρίτο μέρος, εκτελέστε δικό σας διακομιστή STUN (ένας διακομιστής TURN όπως ο coturn απαντά επίσης σε αιτήματα STUN) και αναφέρετε τον στις Διαμορφώσεις διακομιστών ICE αντί για τον προεπιλεγμένο, όπως στο παράδειγμα TURN παρακάτω.
Σε τοπικό δίκτυο μόνο, χρησιμοποιήστε τη διεύθυνση LAN του διακομιστή. Επανεκκινήστε τον διακομιστή μετά από αλλαγές σε θύρες, διευθύνσεις ή ρυθμίσεις ICE, ή απενεργοποιήστε και ενεργοποιήστε την εφαρμογή Calls: ο διακομιστής μέσων διαμορφώνεται κατά την εκκίνηση της εφαρμογής.
TURN, για αυστηρά τείχη προστασίας
Ορισμένα δίκτυα μπλοκάρουν τόσο το UDP όσο και τις εξερχόμενες συνδέσεις σε ασυνήθιστες θύρες TCP. Οι χρήστες σε τέτοια δίκτυα χρειάζονται έναν διακομιστή TURN, ο οποίος μεσολαβεί στη ροή των μέσων μέσω μιας θύρας στην οποία μπορούν να έχουν πρόσβαση (συχνά η 443). Το Antimatter δεν περιλαμβάνει έναν τέτοιο διακομιστή. Εκτελέστε έναν διακομιστή TURN, όπως το coturn, και προσθέστε τον στη ρύθμιση ICE Servers Configurations, που είναι μια λίστα JSON:
[
{"urls": ["stun:turn.example.com:3478"]},
{"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
- Σε περίπτωση χρήσης κοινού μυστικού (το
use-auth-secretτου coturn), εισάγετε το ίδιο μυστικό στο πεδίο TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET): ο διακομιστής παρέχει σε κάθε πελάτη βραχυχρόνια διαπιστευτήρια, έγκυρα για TURN Credentials Expiration (minutes) (προεπιλογή 240 λεπτά). - Σε περίπτωση σταθερών διαπιστευτηρίων, προσθέστε τα πεδία
"username"και"credential"στην εγγραφή του TURN αντί για μυστικό. - Η ρύθμιση Server Side TURN (απενεργοποιημένη από προεπιλογή) χρησιμοποιεί επίσης τους διακομιστές TURN για τις συνδέσεις που ξεκινά ο διακομιστής.
Άλλες ρυθμίσεις κλήσεων
| Ρύθμιση | Μεταβλητή | Προεπιλογή | Λειτουργία |
|---|---|---|---|
| Max call participants | AM_CALLS_MAX_CALL_PARTICIPANTS | 0 (χωρίς όριο) | Ο μέγιστος αριθμός ατόμων σε μία κλήση. |
| Allow screen sharing | (Κονσόλα συστήματος) | ενεργοποιημένο | Επιτρέπει στους συμμετέχοντες να μοιραστούν την οθόνη τους. |
| Enable call ringing | AM_CALLS_ENABLE_RINGING | ενεργοποιημένο | Καλέζει (ring) τα υπόλοιπα πρόσωπα σε άμεσο ή ομαδικό μήνυμα όταν ξεκινά κλήση σε αυτό. |
| Enable simulcast for screen sharing (Experimental) | (Κονσόλα συστήματος) | απενεργοποιημένη | Αποστέλλει τις κοινές χρήσεις οθόνης σε πολλαπλές ποιότητες. |
| Enable AV1 codec for screen sharing (Experimental) | (Κονσόλα συστήματος) | απενεργοποιημένη | Αγνοείται όταν το simulcast είναι ενεργοποιημένο. |
Η εφαρμογή Φωνητικά κανάλια έχει δύο ρυθμίσεις, στην Κονσόλα συστήματος › Προσθήκες › Φωνητικά κανάλια: Συμμετοχή κατά το άνοιγμα ενός φωνητικού καναλιού (ενεργή από προεπιλογή) και Να επιτρέπεται το βίντεο στα φωνητικά κανάλια (ενεργή από προεπιλογή, αλλά δείτε το βίντεο παραπάνω). Η Φωνή είναι ένας τύπος καναλιού, που επιλέγεται κατά τη δημιουργία του καναλιού (δείτε Δημιουργία καναλιού)· δεν υπάρχει μεταγενέστερο βήμα «μετατροπής σε φωνητικό κανάλι». Αυτές οι δύο ρυθμίσεις ισχύουν και για κάθε φωνητικό κανάλι. Η δημιουργία ενός τέτοιου καναλιού απαιτεί την ενεργή εφαρμογή Φωνητικά κανάλια· χωρίς αυτήν, η επιλογή Φωνή είναι απενεργοποιημένη στο παράθυρο δημιουργίας καναλιού.

AM_CALLS_DISABLE=true. Τα φωνητικά κανάλια τότε σταματούν επίσης να λειτουργούν.Μεγαλύτεροι διακομιστές: εξωτερικό rtcd
Εξ ορισμού, ένας διακομιστής Antimatter μεταφέρει όλα τα μέσα (media) των κλήσεων. Για πολλές ταυτόχρονες κλήσεις, ή για να κρατήσετε τα μέσα εκτός του διακομιστή συνομιλίας, η εφαρμογή Calls μπορεί να αναθέσει τα media σε rtcd, έναν ξεχωριστό διακομιστή μέσων (το open-source rtcd της Mattermost, έκδοση 0.17 ή νεότερη). Ρυθμίστε το URL υπηρεσίας RTCD (AM_CALLS_RTCD_SERVICE_URL), για παράδειγμα https://rtcd.example.com: τότε όλες οι κλήσεις περνούν από αυτόν, και τα πελάτες στέλνουν τα media τους στην δική του θύρα αντί για του Antimatter. Οι διαπιστευτήρια μπορούν να δοθούν με AM_CALLS_RTCD_CLIENT_ID και AM_CALLS_RTCD_AUTH_KEY· χωρίς αυτά, η εφαρμογή εγγράφεται από μόνη της στο rtcd. Δεν απαιτείται άδεια. Η εφαρμογή Calls εμφανίζει στους διαχειριστές μια προειδοποίηση που συνιστά το rtcd όταν ένας διακομιστής έχει συχνά περισσότερους από 50 ανθρώπους σε κλήσεις ταυτόχρονα.
Μεταγραφή και ζωντανοί υπότιτλοι
Το Antimatter μπορεί να μεταγράφει κλήσεις με ένα μοντέλο ομιλίας-σε-κείμενο που εκτελείτε εσείς, και να εμφανίζει ζωντανούς υπότιτλους ενώ οι χρήστες μιλούν. Το Antimatter χρησιμοποιεί οποιονδήποτε διακομιστή που προσφέρει ένα OpenAI-συμβατό /v1/audio/transcriptions endpoint, όπως ένας διακομιστής Whisper στο δίκτυό σας. Δεν απαιτείται επιπλέον υπηρεσία από το Antimatter.
Πώς λειτουργεί
- Ο οικοδεσπότης μιας κλήσης ξεκινά τη μεταγραφή με Μεταγραφή της κλήσης στους ελέγχους κλήσης. Ένα σήμα Μεταγράφεται ενημερώνει όλους.
- Η εφαρμογή κάθε συμμετέχονα ακούει το δικό του μικρόφωνο, κόβει την ομιλία σε σύντομα κομμάτια (έως 12 δευτερόλεπτα, ποτέ ενώ είναι σε σίγαση) και τα στέλνει στο Antimatter, το οποίο τα προωθεί στον διακομιστή ομιλίας-σε-κείμενο.
- Με τους ζωντανούς υπότιτλους ενεργοποιημένους, το κείμενο κάθε κομματιού εμφανίζεται στους συμμετέχοντες ως υπότιτλος αμέσως.
- Όταν σταματά η μεταγραφή ή τελειώνει η κλήση, το bot Calls δημοσιεύει τη μεταγραφή ως αρχείο κειμένου και αρχείο υποτίτλων WebVTT, στο νήμα της κλήσης (στα φωνητικά κανάλια, στο κανάλι).
- Με ενεργοποιημένη τη ρύθμιση Σύνοψη μεταγραφών, ο προεπιλεγμένος πράκτορας της εφαρμογής AI chat δημοσιεύει επίσης μια σύνοψη στο νήμα (δείτε AI).

Ρύθμιση
Ρυθμίστε τα εξής στην υπηρεσία 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
| Ρύθμιση | Μεταβλητή | Τι να εισάγετε |
|---|---|---|
| Ενεργοποίηση μεταγραφών κλήσεων (Beta) | AM_CALLS_ENABLE_TRANSCRIPTIONS | true |
| API μεταγραφής κλήσεων | AM_CALLS_TRANSCRIBE_API | openai (εμφανίζεται ως "OpenAI-συμβατό API (χωρίς υπηρεσία εργασιών)") |
| URL API ομιλίας-σε-κείμενο | AM_CALLS_TRANSCRIBE_API_OPEN_AIURL | Το βασικό URL της API, έως και συμπεριλαμβανομένου του /v1. |
| Μοντέλο ομιλίας-σε-κείμενο | AM_CALLS_TRANSCRIBE_API_OPEN_AI_MODEL | Το όνομα του μοντέλου όπως το γνωρίζει η API, για παράδειγμα whisper-1. Υποχρεωτικό. |
| Κλειδί API ομιλίας-σε-κείμενο | AM_CALLS_TRANSCRIBE_API_OPEN_AI_KEY | Στέλνεται ως bearer token. Αφήστε το κενό αν η API δεν απαιτεί κλειδί. |
| Ενεργοποίηση ζωντανών υποτίτλων (Beta) | AM_CALLS_ENABLE_LIVE_CAPTIONS | true για υποτίτλους κατά τη διάρκεια της κλήσης. |
| Γλώσσα ζωντανών υποτίτλων | AM_CALLS_LIVE_CAPTIONS_LANGUAGE | Η ομιλούμενη γλώσσα, ως κωδικός δύο γραμμάτων (en από προεπιλογή). Αποστέλλεται και στο API μετατροπής ομιλίας σε κείμενο για τις μεταγραφές, οπότε ορίστε την ακόμη και αν δεν χρησιμοποιείτε υποτίτλους. |
| Σύνοψη μεταγραφών | AM_CALLS_SUMMARIZE_TRANSCRIPTIONS | true για σύνοψη με τεχνητή νοημοσύνη μετά την κλήση. |
openai: η έναρξη μιας εγγραφής θα προσπαθούσε τότε να εκκινήσει τον μεταγραφέα της υπηρεσίας εργασιών και θα απέτυχε.Το ήχος όλων όσων μιλούν ενώ η μεταγραφή είναι ενεργοποιημένη αποστέλλεται στον διακομιστή μετατροπής ομιλίας σε κείμενο που έχετε ρυθμίσει, και η μεταγραφή δημοσιεύεται σε σημείο όπου μπορούν να την διαβάσουν όλοι στο κανάλι. Ενημερώστε τους χρήστες σας και διατηρήστε αυτόν τον διακομιστή στο δικό σας δίκτυο εάν οι κλήσεις είναι εμπιστευτικές.
Εγγραφές
Η εγγραφή κλήσεων (και η μεταγραφή με τους ενσωματωμένους μεταγραφείς whisper.cpp ή Azure) εκτελείται σε ξεχωριστά containers που εκκινούνται από μια υπηρεσία εργασιών, το ανοιχτού κώδικα calls-offloader του Mattermost, το οποίο αναπτύσσετε μόνοι σας δίπλα στο Antimatter. Οι ρυθμίσεις είναι Ενεργοποίηση εγγραφών κλήσεων (AM_CALLS_ENABLE_RECORDINGS, απενεργοποιημένη από προεπιλογή), URL υπηρεσίας εργασιών (AM_CALLS_JOB_SERVICE_URL), Μέγιστη διάρκεια εγγραφής κλήσης (60 λεπτά από προεπιλογή, από 15 έως 180) και Ποιότητα εγγραφής κλήσης (χαμηλή, μέτρια ή υψηλή· μέτρια από προεπιλογή). Δεν απαιτείται άδεια χρήσης. Μόλις οι εγγραφές είναι ενεργές, ο οικοδεσπότης μιας κλήσης ξεκινά και σταματά μια εγγραφή με την επιλογή Εγγραφή κλήσης στα χειριστήρια της κλήσης· όλοι στην κλήση βλέπουν ότι γίνεται εγγραφή και η εγγραφή δημοσιεύεται στο νήμα της κλήσης όταν σταματήσει. Οι κλήσεις σε φωνητικά κανάλια δεν έχουν νήμα, επομένως δεν μπορούν να εγγραφούν. Για μεταγραφές και υπότιτλους μόνο, η ρύθμιση μετατροπής ομιλίας σε κείμενο παραπάνω είναι απλούστερη: δεν απαιτεί υπηρεσία εργασιών.