ODS
API ReferenceWebSocket RTC

Tổng quan tích hợp WebRTC

Tìm hiểu cơ chế đàm thoại trực tiếp trên trình duyệt web, phân biệt WebRTC với WebSocket và lựa chọn phương án tích hợp phù hợp cho CRM/ERP.

Trong các giải pháp Contact Center truyền thống, nhân viên bắt buộc phải sử dụng điện thoại bàn phần cứng (IP Phone) hoặc cài đặt các ứng dụng gọi thoại độc lập (Softphone như Zoiper, MicroSIP) trên máy tính. Với sự phát triển của công nghệ WebRTC, tổng đài ODS cho phép biến chính tab trình duyệt web của hệ thống CRM/ERP thành một thiết bị đầu cuối thoại hoàn chỉnh, giúp nhân viên nghe/gọi trực tiếp bằng tai nghe máy tính mà không cần cài thêm phần mềm ngoài.

Tài liệu này cung cấp bức tranh toàn cảnh về kiến trúc WebRTC trong hệ thống tổng đài ODS, phân định rõ vai trò của từng công nghệ và hướng dẫn doanh nghiệp lựa chọn phương án triển khai phù hợp nhất.


1. WebRTC là gì?

WebRTC (Web Real-Time Communication) là bộ chuẩn công nghệ mở do W3C và IETF xây dựng, cho phép các trình duyệt web hiện đại (Chrome, Edge, Firefox, Safari) và ứng dụng di động thiết lập kênh giao tiếp âm thanh, video và dữ liệu theo thời gian thực (Real-Time Communication - RTC) mà không cần cài đặt plugin hay phần mềm hỗ trợ.

Trong ngữ cảnh thoại doanh nghiệp:

  • Trình duyệt đóng vai trò thu âm thanh từ microphone của nhân viên, mã hóa thành các gói tin thoại và giải mã âm thanh từ đối phương phát ra loa/tai nghe.
  • Vai trò trong hệ thống ODS: Trình duyệt hoạt động như một SIP client trên web (Webphone) tham gia vào mạng tổng đài.
  • Lưu ý cốt lõi: WebRTC không phải là giao thức đăng ký tài khoản SIP. Bản thân WebRTC chỉ xử lý việc truyền nhận luồng âm thanh/hình ảnh (Media). Để một máy nhánh có thể đăng ký số nội bộ, bấm số gọi đi hay nhận cuộc gọi đến, hệ thống bắt buộc phải sử dụng một giao thức báo hiệu (Signaling), cụ thể ở đây là giao thức SIP vận chuyển qua Secure WebSocket (SIP over WSS).

2. WebRTC được ứng dụng trong tổng đài ảo như thế nào?

Một cuộc gọi thoại qua trình duyệt web không hoạt động đơn lẻ mà là sự phối hợp chặt chẽ giữa 5 thành phần kiến trúc:

Kiến trúc kết nối WebRTC & SIP over WSS
1. Trình duyệt Nhân viên (CRM Frontend)SIP Client (Webphone)• JsSIP / SIP.js / Widget SDK• Quản lý SIP REGISTER (Máy lẻ)• INVITE, Ringing, Call ControlWebRTC Audio Device• Thu âm từ Microphone (G.711 / Opus)• Phát âm thanh đối phương ra Loa/Tai nghe• Thỏa thuận SDP Codec hai chiều⚠️ Bắt buộc HTTPS để cấp quyền MicỨng dụng Nghiệp vụ CRM / ERP• Giao diện bàn phím gọi / danh bạ• Nút bấm gọi Click-to-Call• Popup thông tin khách hàngPhụ thuộc tab trình duyệt hoạt động2. Hạ tầng Tổng đài ODS CloudSIP Proxy / SBC Gatewaywss://rtc.cloudfone.vn:4433• Tiếp nhận kết nối WebSocket WSS• Xác thực Digest Authentication SIP• Quản lý trạng thái máy nhánh onlinePBX Core & Media Gateway• Chuyển đổi mã hóa WebRTC ⟷ SIP• SRTP (Web) ⟷ RTP / G.711 (Telco)• Định tuyến Ring Group / IVR / Queue• Ghi âm cuộc gọi tự độngUDP Port Range: 10000 - 20000Kênh âm thanh trực tiếp (Direct Media)Quản trị & Sự kiện bổ trợ• REST API: Click-to-Call, GetCallLogs• Webhook HTTP POST: Sự kiện cuộc gọi3. Đầu cuối & Mạng TelcoHạ tầng Nhà mạng (PSTN)• Viettel, VNPT, MobiFone...• SIP Trunking đầu sốKhách hàng nhận/gọi:• Điện thoại di động• Điện thoại cố địnhĐầu cuối nội bộ khác• IP Phone để bàn (Yealink, Grandstream)• Softphone cài máy tính (MicroSIP, Zoiper)• CloudFone App trên smartphoneĐàm thoại nội bộ miễn phíWSS (1)SRTP (2)SIP Trunk
Chú giải kết nối:
(1) Báo hiệu: SIP over WSS (Cổng 4433)
(2) Luồng âm thanh: WebRTC SRTP qua UDP
(3) Mạng viễn thông: SIP Trunking

Vai trò của từng thành phần:

  1. SIP Client (Webphone): Khối xử lý chạy trên trình duyệt (sử dụng thư viện JsSIP, SIP.js hoặc ODSPhone Widget), quản lý việc xác thực tài khoản máy nhánh (Register), khởi tạo cuộc gọi đi (Invite), thông báo chuông đến (Ringing) và ngắt kết nối (Bye).
  2. SIP over WSS (Secure WebSocket): Kênh truyền thông bảo mật hai chiều (kết nối tới wss://rtc.cloudfone.vn:4433) chuyên vận chuyển các bức điện báo hiệu SIP dạng văn bản giữa client và tổng đài ODS.
  3. WebRTC Media Stream (SRTP/RTP): Sau khi kênh báo hiệu SIP đàm phán thành công thông số phiên (qua giao thức SDP), trình duyệt và tổng đài thiết lập kênh truyền âm thanh trực tiếp (Direct Audio Media Stream). Toàn bộ dữ liệu thoại được mã hóa bảo mật.
  4. Hạ tầng tổng đài ODS (Cloud PBX): Tiếp nhận đăng ký của máy nhánh, quản lý trạng thái trực tuyến/bận, định tuyến cuộc gọi vào các nhóm trực (Ring Group / Queue) và kết nối xuyên suốt tới mạng viễn thông (PSTN).
  5. Hệ thống CRM / ERP: Ứng dụng nghiệp vụ của doanh nghiệp, thực hiện ánh xạ tài khoản người dùng đăng nhập với số máy lẻ tương ứng, lưu trữ dữ liệu khách hàng và kích hoạt giao diện gọi thoại.

Đăng ký máy nhánh trên Webphone:
Việc đăng ký máy nhánh trên webphone là phương thức biến trình duyệt thành một thiết bị đầu cuối thoại (terminal), tương đương với một máy điện thoại bàn IP Phone hoặc ứng dụng Softphone. Việc đăng ký này không đồng nghĩa sẽ tự động ngắt kết nối các thiết bị SIP đang chạy khác; chính sách cho phép một hay nhiều thiết bị cùng online trên một số máy nhánh phụ thuộc vào cấu hình gói cước tổng đài của doanh nghiệp.


3. So sánh hai phương thức tích hợp thoại

Khi đưa tính năng tổng đài vào CRM/ERP, doanh nghiệp thường cân nhắc giữa hai mô hình: Dùng Softphone/IP Phone ngoài kết hợp REST API/Webhook hoặc Dùng WebRTC trực tiếp trên trình duyệt.

Tiêu chí1. Softphone / IP Phone + REST API2. Webphone WebRTC trên trình duyệt
Nơi nhân viên nghe & nóiTrên máy điện thoại IP Phone vật lý hoặc ứng dụng Softphone cài riêng trên máy tính/điện thoại.Trực tiếp trên tab trình duyệt web đang mở CRM (dùng tai nghe/micro máy tính).
Yêu cầu phần mềm / thiết bịBắt buộc phải có thiết bị điện thoại bàn hoặc cài đặt phần mềm ngoài (Zoiper, MicroSIP, CloudFone App).Không cần phần mềm ngoài. Chỉ cần trình duyệt web hiện đại có hỗ trợ WebRTC.
Cách CRM khởi tạo cuộc gọi điBackend CRM gửi yêu cầu qua REST API Click-to-Call V1. Tổng đài sẽ gọi về máy nhánh nhân viên trước, nhân viên nhấc máy thì tổng đài mới quay số gọi khách hàng.Nhân viên bấm số trên bàn phím web hoặc bấm biểu tượng gọi trong CRM. Cuộc gọi kết nối thẳng từ trình duyệt ra khách hàng.
Cách tiếp nhận cuộc gọi đếnThiết bị IP Phone/Softphone đổ chuông. CRM có thể nhận sự kiện qua Popup Webhook để tự động bật cửa sổ thông tin khách hàng.Bàn phím thoại trên web tự đổ chuông và hiện thông báo cuộc gọi đến ngay trên màn hình CRM để nhân viên bấm Trả lời.
Vai trò của REST API & WebhookLà cầu nối bắt buộc để ra lệnh gọi và đồng bộ dữ liệu.Được dùng bổ trợ để tra cứu nhật ký (GetCallLogs), tạo máy nhánh hoặc nhận webhook mở popup CRM.
Công việc đội DEV phải làmLập trình backend để gọi REST API và tiếp nhận HTTP Webhook. Khá đơn giản và nhanh chóng.Tích hợp module WebRTC vào Frontend (xử lý quyền micro, vòng đời kết nối WebSocket, sự kiện cuộc gọi) hoặc nhúng Widget có sẵn.
Phụ thuộc môi trường webKhông phụ thuộc. Cuộc gọi vẫn hoạt động bình thường ngay cả khi nhân viên tắt hoặc tải lại trang web CRM.Phụ thuộc vào tab trình duyệt. Nếu nhân viên tắt tab CRM hoặc máy tính rơi vào chế độ ngủ (sleep), kết nối thoại sẽ bị ngắt. Bắt buộc phải chạy trên HTTPS để cấp quyền micro.
Trường hợp phù hợp nhấtĐội ngũ telesales chuyên nghiệp ngồi cố định có trang bị điện thoại bàn IP Phone chuyên dụng, hoặc nhân viên thường xuyên di chuyển ngoài hiện trường.Đội ngũ tư vấn viên, chăm sóc khách hàng làm việc liên tục trên web CRM, doanh nghiệp muốn triển khai nhanh cho nhân sự mà không phải cài đặt cấu hình từng máy.

Những hiểu lầm kỹ thuật phổ biến:

  • REST API / Webhook không tự truyền âm thanh: REST API chỉ gửi lệnh điều khiển nghiệp vụ (bảo tổng đài gọi số nào), Webhook chỉ gửi thông tin sự kiện dạng JSON. Cả hai kênh này không thể tự đưa âm thanh thoại vào loa trình duyệt.
  • WebRTC không thay thế REST API: WebRTC chỉ phụ trách nghe/nói thời gian thực. Các tác vụ như truy xuất nhật ký cuộc gọi đầy đủ, tải file ghi âm hay tự động tạo máy nhánh từ hệ thống HRM vẫn cần sử dụng các REST API của ODS. Hai giải pháp này thường được kết hợp nhịp nhàng trong một hệ thống CRM hoàn chỉnh.
  • Chất lượng thoại: Không thể khẳng định giải pháp nào luôn có chất lượng âm thanh tốt hơn. Chất lượng cuộc gọi thực tế phụ thuộc lớn vào đường truyền mạng internet, chất lượng tai nghe/micro của nhân viên và mức độ tối ưu phần cứng.

4. Lựa chọn phương thức triển khai WebRTC

Nếu doanh nghiệp lựa chọn hướng đi WebRTC để đàm thoại trực tiếp trên trình duyệt, ODS hỗ trợ 2 phương thức triển khai tùy thuộc vào nguồn lực và mức độ tùy biến mong muốn:

Phương án A: Tự xây dựng Webphone bằng thư viện mở (JsSIP / SIP.js)

  • Bản chất: JsSIP và SIP.js là các thư viện lập trình giao thức SIP Client thuần túy cho JavaScript. Chúng không phải là sản phẩm webphone có sẵn giao diện, mà chỉ cung cấp các hàm API để kết nối WebSocket, xử lý bản tin SIP và tương tác với WebRTC.
  • Ưu điểm: Doanh nghiệp có toàn quyền làm chủ mã nguồn, tự do thiết kế giao diện bàn phím gọi thoại (UI/UX) theo phong cách riêng của CRM, nhúng sâu trạng thái cuộc gọi vào các quy trình nghiệp vụ phức tạp.
  • Thách thức: Đội ngũ lập trình viên phải tự chịu trách nhiệm toàn bộ về việc quản lý vòng đời phiên gọi, xử lý luồng MediaStream, cấp phát thiết bị thu âm, xử lý lỗi mạng khi ngắt kết nối và bảo trì cập nhật khi các trình duyệt thay đổi chính sách bảo mật WebRTC.

Phương án B: Nhúng module ODSPhone Widget có sẵn

  • Bản chất: ODS đóng gói sẵn một bàn phím thoại hoàn chỉnh (bao gồm cả giao diện quay số, nút bấm, bảng điều khiển cuộc gọi và lõi xử lý WebRTC) thành một tệp thư viện duy nhất (odsphone.js).
  • Ưu điểm: Tích hợp cực kỳ nhanh chóng (chỉ cần nhúng script và khai báo cấu hình), không cần kiến thức chuyên sâu về SIP hay WebRTC, tự động nhận các bản cập nhật và tối ưu âm thanh từ ODS.
  • Thách thức: Giao diện và các nút chức năng hoạt động theo thiết kế tiêu chuẩn của ODS; doanh nghiệp chỉ có thể tùy chỉnh trong phạm vi các tham số cấu hình mà SDK hỗ trợ (như vị trí, kích thước, màu chủ đạo).

5. Thông tin kết nối cần chuẩn bị

Khi triển khai kết nối WebRTC tới tổng đài ODS (dù tự lập trình qua thư viện hay sử dụng Widget), doanh nghiệp cần chuẩn bị bộ thông số kết nối sau:

Thông số kết nốiGiá trị quy chuẩnÝ nghĩa kỹ thuật
WebSocket URLwss://rtc.cloudfone.vn:4433Địa chỉ máy chủ WebSocket bảo mật tiếp nhận báo hiệu SIP. (Lưu ý: Không thêm /ws và không tự ý thay đổi cổng kết nối).
SIP URIsip:<MAY_LE>@<TENANT_DOMAIN>Định danh duy nhất của máy nhánh trên tổng đài (ví dụ: sip:[email protected]).
Username<MAY_LE>Số máy nhánh nội bộ của nhân viên (ví dụ: 101, 102). Lấy tại mục Nhân viên trên Portal quản trị tổng đài.
Password<MAT_KHAU_MAY_LE>Mật khẩu xác thực SIP tương ứng của máy nhánh đó.
Realm / Domain<TENANT_DOMAIN>Tên miền định danh tổng đài do ODS cấp, có dạng vtp000xxxx.cfvn.cloud.
ICE ServersKhông cần cấu hình bổ sungTheo cấu hình máy chủ chuẩn của ODS, client không cần khai báo danh sách STUN/TURN server bên ngoài.

Phân định thông tin kết nối: Các thông số trên là tài khoản SIP của máy nhánh, phục vụ cho việc đăng ký và thoại trực tiếp. Chúng hoàn toàn tách biệt với bộ thông tin quản trị REST API (ServiceCode, AuthUser, AuthKey). Tuyệt đối không dùng AuthKey của quản trị viên làm mật khẩu kết nối SIP trên Webphone.


6. Đọc tiếp & Hướng dẫn chi tiết

Dựa trên định hướng phát triển của dự án, bạn có thể lựa chọn xem tiếp hướng dẫn kỹ thuật chi tiết theo 2 bài viết sau: