Cuộc gọi và thoại

Cuộc gọi và kênh thoại gửi âm thanh, video và chia sẻ màn hình trực tiếp đến máy chủ trên cổng riêng của chúng. Trang này bao gồm phần mạng, các cài đặt cần kiểm tra sau khi cài đặt, và bản chép lời bằng mô hình chuyển giọng nói thành văn bản do bạn tự chạy.

Cách hoạt động của cuộc gọi

Cuộc gọi được cung cấp bởi ứng dụng Calls (id com.mattermost.calls), được cài đặt và bật theo mặc định. Kênh thoại (ứng dụng Voice Channels, ảnh antimatter-next) là các phòng cuộc gọi vĩnh viễn được xây dựng dựa trên Calls: chúng cần Calls được bật và sử dụng cùng các cài đặt, cổng và máy chủ.

Ứng dụng Calls chạy một máy chủ media bên trong Antimatter. Ứng dụng web, ứng dụng máy tính để bàn và các ứng dụng di động kết nối với nó bằng WebRTC:

  • tín hiệu (signalling) đi qua kết nối web thông thường (proxy HTTPS của bạn);
  • media (âm thanh, video, chia sẻ màn hình) không đi qua đó: nó đi trực tiếp đến máy chủ trên cổng cuộc gọi, mặc định là 8443 UDP và TCP.

Các cài đặt nằm trong Bảng điều khiển Hệ thống › Các plugin › Calls. Mỗi cài đặt cũng có thể được thiết lập bằng một biến môi trường AM_CALLS_ trên dịch vụ antimatter, khi đó nó sẽ ưu tiên hơn Bảng điều khiển Hệ thống và khóa cài đặt đó. Các tên cũ MM_CALLS_ cũng hoạt động.

Kiểm tra những điều này sau khi cài đặt

  1. Mở cổng cuộc gọi. Cho phép 8443/udp và 8443/tcp trong tường lửa của máy chủ và nhà cung cấp cloud của bạn.
  2. Kiểm tra chế độ kiểm tra. Chế độ kiểm tra (DefaultEnabled) tắt theo mặc định, vì vậy mọi người đều có thể bắt đầu cuộc gọi. Bật Bật trong Bảng điều khiển Hệ thống › Các plugin › Calls để chỉ cho phép quản trị viên hệ thống bắt đầu cuộc gọi trong các kênh trong khi bạn kiểm tra xem cuộc gọi có hoạt động không, sau đó tắt nó lại. Biến là AM_CALLS_DEFAULT_ENABLED: true có nghĩa là chế độ kiểm tra tắt. Máy chủ được chuyển từ Mattermost sẽ giữ lại lựa chọn đã lưu trong cấu hình của nó.
  3. Quyết định về video. Bật video (EnableVideo, AM_CALLS_ENABLE_VIDEO) bật theo mặc định: mọi người có thể bật camera ở bất cứ nơi nào cuộc gọi được bật, trong tin nhắn trực tiếp, tin nhắn nhóm và trong các kênh. Trong kênh thoại, Cho phép video trong kênh thoại của ứng dụng Voice Channels sẽ quyết định. Tắt nó và không ai có thể bật camera, ngay cả trong kênh thoại.
  4. Đằng sau NAT, thiết lập địa chỉ công khai (phần tiếp theo).

Nơi cuộc gọi được bật

Mỗi cộng đồng đều có một loại, Nơi làm việc hoặc Cộng đồng (xem Loại cộng đồng mới). Kênh mà quản trị viên chưa bật hoặc tắt cuộc gọi sẽ tuân theo loại của cộng đồng đó:

  • trong một Nơi làm việc, các kênh tuân theo mặc định của máy chủ: cuộc gọi được bật cho tất cả mọi người khi chế độ thử nghiệm đang tắt;
  • trong một Cộng đồng, cuộc gọi sẽ tắt trong các kênh: mọi người sẽ trò chuyện trong các kênh thoại thay thế. Quản trị viên của kênh và cộng đồng vẫn có thể bật cuộc gọi trong một kênh.

Cài đặt riêng của kênh luôn có hiệu lực cao hơn. Tin nhắn trực tiếp và tin nhắn nhóm không thuộc về một cộng đồng: cuộc gọi ở đó sẽ được bật cho tất cả mọi người khi chế độ thử nghiệm đang tắt. Thay đổi loại của một cộng đồng sẽ áp dụng cho cuộc gọi trong vòng 30 giây.

Cổng, NAT và STUN

Cài đặtBiếnMặc định
Cổng máy chủ RTC (UDP)AM_CALLS_UDP_SERVER_PORT8443
Cổng máy chủ RTC (TCP)AM_CALLS_TCP_SERVER_PORT8443
Địa chỉ máy chủ RTC (UDP), (TCP)AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESStrống: tất cả các địa chỉ
Đóng băng địa chỉ ICEAM_CALLS_ICE_HOST_OVERRIDEtrống: tìm thấy thông qua STUN
Đóng băng cổng ICEAM_CALLS_ICE_HOST_PORT_OVERRIDEtrống: cổng của máy chủ
Cấu hình máy chủ ICEAM_CALLS_ICE_SERVERS_CONFIGS[{"urls":["stun:stun.cloudflare.com:3478"]}]
(Thí nghiệm) Bật hỗ trợ IPv6(Bảng điều khiển Hệ thống)Tắt

Cổng phải nằm trong khoảng từ 80 đến 49151. Với tệp compose của trang web, hãy thay đổi CALLS_PORT trong .env: nó sẽ thiết lập cả hai biến và công bố cổng, cùng một số trên máy chủ và trong container. Máy khách sẽ cố gắng UDP trước và chuyển sang TCP trên cùng một cổng nếu thất bại.

Địa chỉ mà máy khách gửi phương tiện đến

Máy chủ sẽ thông báo cho mỗi máy khách địa chỉ để gửi phương tiện đến ("ứng viên host" của nó). Mặc định, nó sẽ tìm địa chỉ công khai của mình bằng cách hỏi một máy chủ STUN, một dịch vụ công khai trả lời với địa chỉ và cổng mà yêu cầu đến từ. Mặc định là máy chủ STUN công khai của Cloudflare, stun:stun.cloudflare.com:3478. Máy chủ không phải là người duy nhất sử dụng nó: mỗi máy khách tham gia cuộc gọi cũng sẽ hỏi nó về địa chỉ công khai của chính mình. Máy chủ STUN chỉ nhìn thấy địa chỉ IP và cổng, không bao giờ nghe âm thanh, video hoặc tin nhắn của cuộc gọi.

Một máy chủ vẫn còn lưu máy chủ STUN của Mattermost (stun.global.calls.mattermost.com) trong Cấu hình máy chủ ICE, ví dụ sau khi chuyển từ Mattermost, sẽ sử dụng của Cloudflare thay thế. Cài đặt đã lưu sẽ không bị thay đổi.

Tự thiết lập địa chỉ khi:

  • máy chủ nằm sau NAT, hoặc có nhiều địa chỉ công khai: thiết lập Đóng băng địa chỉ ICE thành địa chỉ IP công khai (hoặc tên máy chủ phân giải đến đó);
  • NAT ánh xạ một cổng công khai khác đến 8443: cũng thiết lập Đóng băng cổng ICE thành cổng công khai đó;
  • máy chủ không có quyền truy cập Internet, hoặc bạn không muốn máy chủ và các client liên hệ với máy chủ STUN bên ngoài: hãy đặt ICE Host Override và làm trống danh sách STUN bằng AM_CALLS_ICE_SERVERS_CONFIGS=[]. Khi đã đặt ICE Host Override, máy chủ sẽ không còn yêu cầu máy chủ STUN về địa chỉ của nó; danh sách trống sẽ ngăn các client thực hiện điều này.
services:
  antimatter:
    environment:
      AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
      AM_CALLS_ICE_SERVERS_CONFIGS: "[]"

Để duy trì STUN mà không cần bên thứ ba, hãy tự chạy một máy chủ STUN (một máy chủ TURN như coturn cũng phản hồi các yêu cầu STUN) và liệt kê nó trong ICE Servers Configurations thay thế, như trong ví dụ TURN bên dưới.

Trên mạng cục bộ, hãy sử dụng địa chỉ LAN của máy chủ. Khởi động lại máy chủ sau khi thay đổi cổng, địa chỉ hoặc cài đặt ICE, hoặc tắt rồi bật lại ứng dụng Calls: máy chủ media được thiết lập khi ứng dụng khởi động.

TURN, cho các tường lửa nghiêm ngặt

Một số mạng chặn cả UDP và các kết nối đi ra đến các cổng TCP không phổ biến. Người dùng trên những mạng này cần một máy chủ TURN, máy chủ này sẽ chuyển tiếp media qua một cổng mà họ có thể truy cập (thường là 443). Antimatter không bao gồm một máy chủ TURN; hãy chạy một máy chủ TURN như coturn và thêm nó vào ICE Servers Configurations, một danh sách JSON:

[
  {"urls": ["stun:turn.example.com:3478"]},
  {"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
  • Với một bí mật chung (coturn's use-auth-secret), hãy đặt cùng một bí mật đó vào TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET): máy chủ sẽ cấp cho mỗi client các thông tin xác thực có thời hạn ngắn, hợp lệ trong TURN Credentials Expiration (minutes) (mặc định là 240 phút).
  • Với thông tin xác thực cố định, hãy thêm "username" và "credential" vào mục TURN thay thế.
  • Server Side TURN (mặc định là tắt) cũng sử dụng các máy chủ TURN cho các kết nối do máy chủ khởi tạo.

Các cài đặt cuộc gọi khác

Cài đặtBiếnMặc địnhChức năng
Max call participantsAM_CALLS_MAX_CALL_PARTICIPANTS0 (không giới hạn)Số lượng người tối đa trong một cuộc gọi.
Allow screen sharing(Bảng điều khiển Hệ thống)onCho phép người tham gia chia sẻ màn hình của họ.
Enable call ringingAM_CALLS_ENABLE_RINGINGonRung cho những người khác trong một tin nhắn trực tiếp hoặc nhóm khi một cuộc gọi bắt đầu ở đó.
Enable simulcast for screen sharing (Experimental)(Bảng điều khiển Hệ thống)TắtGửi các bản chia sẻ màn hình ở nhiều chất lượng khác nhau.
Enable AV1 codec for screen sharing (Experimental)(Bảng điều khiển Hệ thống)TắtBị bỏ qua khi simulcast đang bật.

Ứng dụng Voice Channels có hai cài đặt, trong System Console › Plugins › Voice Channels: Join when opening a voice channel (mặc định là bật) và Allow video in voice channels (mặc định là bật, nhưng xem phần video ở trên). Quản trị viên cộng đồng chuyển đổi một kênh thành kênh thoại trong cài đặt của kênh đó.

Để tắt hoàn toàn tính năng cuộc gọi, hãy vô hiệu hóa ứng dụng Calls trong Bảng điều khiển Hệ thống › Các plugin › Quản lý Plugin, hoặc đặt AM_CALLS_DISABLE=true. Khi đó, các kênh thoại cũng sẽ ngừng hoạt động.

Máy chủ lớn hơn: rtcd bên ngoài

Mặc định, một máy chủ Antimatter xử lý toàn bộ phương tiện của cuộc gọi. Với nhiều cuộc gọi đồng thời, hoặc để tách phương tiện khỏi máy chủ trò chuyện, ứng dụng Calls có thể chuyển phương tiện cho rtcd, một máy chủ phương tiện riêng (mã nguồn mở của Mattermost rtcd, phiên bản 0.17 trở lên). Đặt RTCD service URL (AM_CALLS_RTCD_SERVICE_URL), ví dụ https://rtcd.example.com: khi đó mọi cuộc gọi đều đi qua nó, và các client gửi phương tiện của mình đến cổng riêng của rtcd thay vì cổng của Antimatter. Có thể cung cấp thông tin xác thực bằng AM_CALLS_RTCD_CLIENT_ID và AM_CALLS_RTCD_AUTH_KEY; nếu không, ứng dụng sẽ tự đăng ký với rtcd. Không cần giấy phép. Ứng dụng Calls sẽ hiển thị cảnh báo cho quản trị viên, khuyến nghị sử dụng rtcd khi máy chủ thường xuyên có hơn 50 người tham gia cuộc gọi cùng lúc.

Bản chép lời và phụ đề trực tiếp

Antimatter có thể chép lời cuộc gọi bằng mô hình chuyển giọng nói thành văn bản do bạn tự chạy, và hiển thị phụ đề trực tiếp trong khi mọi người đang nói. Antimatter sử dụng bất kỳ máy chủ nào cung cấp điểm cuối /v1/audio/transcriptions tương thích với OpenAI, chẳng hạn như một máy chủ Whisper trên mạng của bạn. Không cần dịch vụ bổ sung từ Antimatter.

Cách hoạt động

  • Người chủ trì cuộc gọi bắt đầu chép lời bằng cách chọn Chép lời cuộc gọi trong các điều khiển cuộc gọi. Huy hiệu Đang chép lời sẽ thông báo cho tất cả mọi người.
  • Ứng dụng của mỗi người tham gia sẽ thu âm từ micro của họ, cắt giọng nói thành các đoạn ngắn (tối đa 12 giây, không bao giờ khi đang tắt tiếng) và gửi chúng đến Antimatter, nơi sẽ chuyển tiếp chúng đến máy chủ chuyển giọng nói thành văn bản của bạn.
  • Khi bật phụ đề trực tiếp, văn bản của mỗi đoạn sẽ được hiển thị ngay lập tức cho người tham gia dưới dạng phụ đề.
  • Khi việc chép lời kết thúc hoặc cuộc gọi kết thúc, bot của Calls sẽ đăng bản chép lời dưới dạng tệp văn bản và tệp phụ đề WebVTT vào chủ đề của cuộc gọi (trong các kênh thoại, vào kênh).
  • Khi bật Tóm tắt bản chép lời, trợ lý mặc định của ứng dụng Agents cũng sẽ đăng một bản tóm tắt vào chủ đề (xem 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.
Sau cuộc gọi, bản chép lời và bản tóm tắt của nó trong chủ đề của cuộc gọi.

Cấu hình

Đặt các tùy chọn sau trên dịch vụ 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
Cài đặtBiếnNội dung cần nhập
Bật chép lời cuộc gọi (Beta)AM_CALLS_ENABLE_TRANSCRIPTIONStrue
API chép lời cuộc gọiAM_CALLS_TRANSCRIBE_APIopenai (hiển thị là "OpenAI-compatible API (no job service)")
URL API chuyển giọng nói thành văn bảnAM_CALLS_TRANSCRIBE_API_OPEN_AIURLURL gốc của API, bao gồm cả /v1.
Mô hình chuyển giọng nói thành văn bảnAM_CALLS_TRANSCRIBE_API_OPEN_AI_MODELTên mô hình theo cách API biết đến, ví dụ whisper-1. Bắt buộc.
Khóa API chuyển giọng nói thành văn bảnAM_CALLS_TRANSCRIBE_API_OPEN_AI_KEYĐược gửi dưới dạng token bearer. Để trống nếu API không yêu cầu.
Bật phụ đề trực tiếp (Beta)AM_CALLS_ENABLE_LIVE_CAPTIONStrue để hiển thị phụ đề trong cuộc gọi.
Ngôn ngữ phụ đề trực tiếpAM_CALLS_LIVE_CAPTIONS_LANGUAGENgôn ngữ được nói, dưới dạng mã hai chữ cái (mặc định là en). Mã này cũng được gửi đến API chuyển giọng nói thành văn bản cho mục đích tạo bản chép lời, vì vậy hãy đặt nó ngay cả khi không bật phụ đề.
Tóm tắt bản chép lờiAM_CALLS_SUMMARIZE_TRANSCRIPTIONStrue để có bản tóm tắt bằng AI sau cuộc gọi.
Trong Bảng điều khiển Hệ thống, các cài đặt bản chép lời chỉ xuất hiện khi Bật bản ghi cuộc gọi được bật, mặc dù loại bản chép lời này không cần bản ghi. Việc đặt các cài đặt bằng các biến ở trên giúp tránh điều này. Không bật bản ghi cùng với trình chuyển giọng nói thành văn bản openai: khi đó, việc bắt đầu bản ghi sẽ cố gắng khởi động trình chuyển giọng nói thành văn bản của dịch vụ tác vụ và thất bại.

Âm thanh của tất cả những người nói khi bản chép lời đang bật sẽ được gửi đến máy chủ chuyển giọng nói thành văn bản mà bạn đã cấu hình, và bản chép lời sẽ được đăng ở nơi mọi người trong kênh có thể đọc. Hãy thông báo cho người dùng của bạn và giữ máy chủ đó trong mạng riêng của bạn nếu các cuộc gọi là bí mật.

Bản ghi

Việc ghi âm cuộc gọi (và chuyển giọng nói thành văn bản bằng trình chuyển giọng nói thành văn bản tích hợp whisper.cpp hoặc Azure) được thực hiện trong các container riêng biệt được khởi động bởi một dịch vụ tác vụ, calls-offloader mã nguồn mở của Mattermost, mà bạn tự triển khai bên cạnh Antimatter. Các cài đặt bao gồm Bật bản ghi cuộc gọi (AM_CALLS_ENABLE_RECORDINGS, mặc định là tắt), URL dịch vụ tác vụ (AM_CALLS_JOB_SERVICE_URL), Thời lượng bản ghi cuộc gọi tối đa (mặc định là 60 phút, từ 15 đến 180) và Chất lượng bản ghi cuộc gọi (thấp, trung bình hoặc cao; mặc định là trung bình). Không cần giấy phép. Khi bản ghi được bật, người chủ trì cuộc gọi sẽ bắt đầu và dừng bản ghi bằng Ghi âm cuộc gọi trong các điều khiển cuộc gọi; mọi người trong cuộc gọi sẽ thấy rằng cuộc gọi đang được ghi âm, và bản ghi sẽ được đăng trong chủ đề của cuộc gọi khi nó dừng lại. Các cuộc gọi trong kênh thoại không có chủ đề, vì vậy chúng không thể được ghi âm. Đối với chỉ bản chép lời và phụ đề, cấu hình chuyển giọng nói thành văn bản ở trên đơn giản hơn: nó không cần dịch vụ tác vụ.