ODS
API ReferenceWebSocket RTC

Kết nối WebRTC qua WSS

Thông số kết nối, cơ chế hoạt động và tài liệu tham khảo tích hợp tính năng nghe/gọi trực tiếp trên trình duyệt qua WebRTC.

Tài liệu này cung cấp thông số cấu hình và cơ chế kỹ thuật để lập trình viên tích hợp module thoại trực tiếp trên trình duyệt (CRM/ERP) thông qua SIP over Secure WebSocket (WSS) và WebRTC.

Định hướng tích hợp:
Đây là tài liệu thông số và cơ chế nền tảng để DEV tự phát triển module Softphone tùy biến theo hệ thống của doanh nghiệp; không phải là bộ webphone UI hoàn chỉnh sẵn sàng cho Production.


Ứng dụng và phạm vi triển khai

Tích hợp WebRTC cho phép ứng dụng web giao tiếp trực tiếp với tổng đài ODS mà không cần cài đặt phần mềm ngoài (như MicroSIP, Zoiper):

  • Click-to-Call: Bấm gọi trực tiếp từ hồ sơ khách hàng hoặc ticket trên CRM.
  • Tiếp nhận cuộc gọi (Screen Pop-up): Bắt sự kiện cuộc gọi đến để hiển thị thông tin người gọi ngay khi chuông reo.
  • Giao diện tùy biến: Tự thiết kế bàn phím số và trải nghiệm gọi đồng bộ theo Design System của doanh nghiệp.

Phân định trách nhiệm

  • ODS cung cấp: Cổng báo hiệu WSS, tổng đài SIP, hạ tầng Media Gateway chuyển đổi âm thanh và định tuyến viễn thông.
  • Doanh nghiệp phát triển (DEV): Quản lý thư viện SIP client (JsSIP / SIP.js), thiết kế giao diện bàn phím, xin quyền Microphone và xử lý thẻ âm thanh trên trình duyệt.

Thông số kết nối

Sử dụng chính xác các giá trị cấu hình sau khi khởi tạo kết nối:

Thông sốGiá trị quy chuẩnGhi chú kỹ thuật
WebSocket URLwss://rtc.cloudfone.vn:4433Điểm kết nối báo hiệu WSS. Không thêm /ws và không đổi cổng 4433.
SipURIsip:<MAY_LE>@<TENANT_DOMAIN>Định danh máy nhánh (ví dụ: sip:[email protected]).
Username<MAY_LE>Số máy lẻ nội bộ (lấy tại mục Nhân viên trên Portal tổng đài).
Password<MAT_KHAU_MAY_LE>Mật khẩu SIP của máy lẻ (không dùng mật khẩu đăng nhập CRM).
Realm<TENANT_DOMAIN>Tên miền tổng đài do ODS cấp. Không tự suy từ REST ServiceName.
ICE ServersKhông cần khai báo thêmCấu hình ODS hỗ trợ sẵn định tuyến media thông thường.

Lưu ý về ICE và tường lửa: Việc không cần khai báo thêm STUN/TURN server không đảm bảo 100% mọi mạng doanh nghiệp đều thông suốt. Nếu mạng nội bộ chặn các dải cổng UDP, âm thanh WebRTC vẫn có thể bị gián đoạn.


Cơ chế hoạt động và luồng kết nối

Hệ thống hoạt động dựa trên 2 kênh độc lập: Kênh báo hiệu (WSS) và Kênh âm thanh (WebRTC Media).

Các mốc trạng thái kết nối

Bốn mốc trạng thái kết nối WebRTC & Ranh giới kênh truyền
1WSS HandshakeMở kết nối WebSocket:wss://rtc.cloudfone.vnCổng: 4433Xác nhận đường truyềnTCP/TLS thông suốtTrạng thái: WSS Connected2SIP REGISTERXác thực máy nhánh:• Máy lẻ: extension (101)• Mật khẩu SIP máy lẻ• Realm (Tenant domain)Tổng đài trả 200 OKTrạng thái: SIP Registered3INVITE & RingingKhởi tạo & Thỏa thuận:• Gửi bản tin SIP INVITE• 180 Ringing (Đang đổ chuông)• Đàm phán SDP (Opus/PCMA)Tạo kênh thoại tiềm năngĐang đổ chuông (Early)4Đàm thoại AudioNhấc máy (200 OK):• Luồng SRTP 2 chiều qua UDP• Trực tiếp giữa Mic/Loa & PBX• Âm thanh KHÔNG qua WSSBYE để ngắt kết nốiTrạng thái: In Call (Active)⚡ Nguyên tắc 1: WSS connected ≠ SIP registeredMở thành công WebSocket (Bước 1) chỉ chứng minh mạng thông tới cổng 4433.Chỉ khi hoàn tất Bước 2 máy nhánh mới chính thức trực tuyến trên tổng đài.⚡ Nguyên tắc 2: SIP registered ≠ Đã thông âm thanhBáo hiệu SIP thành công nhưng nếu mạng chặn cổng UDP hoặc trình duyệtchưa được cấp quyền Microphone, cuộc gọi sẽ câm tiếng (One-way/No audio).
  1. WSS connected: Mở thành công kênh WebSocket tới máy chủ ODS (chứng minh mạng thông suốt tới cổng 4433).
  2. SIP registered: Tổng đài xác thực thành công máy nhánh (200 OK). Máy lẻ chính thức trực tuyến.
  3. Thiết lập cuộc gọi: Trao đổi bản tin SIP INVITE, 180 Ringing và đàm phán mô tả phiên qua SDP (Codec âm thanh).
  4. Truyền nhận Media: Khi người nhận nhấc máy (200 OK), luồng âm thanh truyền trực tiếp qua giao thức bảo mật SRTP/UDP giữa trình duyệt và ODS Media Gateway.
  5. Kết thúc cuộc gọi: Gửi bản tin BYE, ngắt luồng âm thanh và dọn dẹp phiên.

2 nguyên tắc cốt lõi:

  • WSS connected $\neq$ SIP registered: Mở socket thành công chưa chứng minh thông tin tài khoản hợp lệ.
  • SIP registered $\neq$ Đã thông âm thanh: Báo hiệu thành công nhưng nếu mạng chặn UDP hoặc micro bị từ chối, cuộc gọi vẫn bị câm tiếng. Âm thanh không đi qua kênh WebSocket.

Tài liệu tham khảo

Để bắt đầu phát triển client, bạn có thể lựa chọn một trong các thư viện SIP mã nguồn mở phổ biến và tra cứu tài liệu chính thức:

  • JsSIP Documentation (v3.10.x): Thư viện SIP client nhẹ, chuẩn RFC 3261, phổ biến trên Asterisk.
  • SIP.js Documentation: Thư viện SIP client hiện đại hỗ trợ TypeScript đầy đủ.
  • MDN WebRTC API: Tài liệu chuẩn của Mozilla về xử lý luồng MediaStream, RTCPeerConnection và bắt quyền Microphone.
  • Autoplay Policy Guide (Chrome/MDN): Hướng dẫn xử lý chính sách chặn âm thanh tự động của trình duyệt khi nhận cuộc gọi đến.

Ghi chú kiểm chứng:
Tài liệu này được biên soạn dựa trên thông số kỹ thuật chuẩn của hệ thống ODS. Trong quá trình viết tài liệu, hệ thống chưa kiểm thử đăng ký SIP / thực hiện cuộc gọi thực tế nhằm tuân thủ quy tắc an toàn, không tự ý phát sinh cước viễn thông khi chưa có môi trường thử nghiệm chuyên dụng.


Bài viết liên quan