[{"data":1,"prerenderedAt":188},["ShallowReactive",2],{"course-rust-voip-janus-media-server":3,"courses-list":22},{"slug":4,"title":5,"shortDescription":6,"description":7,"category":8,"level":9,"totalDuration":10,"totalLessons":11,"tags":12,"updatedAt":13,"rating":14,"reviewCount":15,"thumbnail":16,"instructor":17,"lessons":21},"rust-voip-janus-media-server","Rust VoIP: Janus Media Server","Chinh phục VoIP với khóa học \"Lập trình VoIP với Rust: Janus Media Server\". Bước tiếp từ nền tảng WebRTC P2P để xây dựng các hệ thống Media Server quy mô lớn, có khả năng scale thực tế và dùng trong production. Bạn sẽ làm chủ Janus Audiobridge để giải quyết triệt để các bài toán về băng thông, ghi âm tập trung và kết nối đa phương thức từ App-to-App đến SIP","Nâng tầm ứng dụng WebRTC của bạn lên quy mô Production\nNếu bạn đã hiểu cách các trình duyệt kết nối trực tiếp qua WebRTC P2P, thì đây chính là bước đi tiếp theo để đưa ứng dụng của bạn vào thực tế\n\nMô hình P2P rất tuyệt vời cho các kết nối đơn giản, nhưng khi đối mặt với các bài toán lớn hơn, nó bộc lộ 4 hạn chế nghiêm trọng:\n1. Khả năng mở rộng: Với 10 người dùng, hệ thống P2P cần tới 90 kết nối trực tiếp, khiến việc mở rộng là gần như không thể\n2. Tốn tài nguyên: Client phải upload đồng thời nhiều luồng media, gây ngốn CPU và nhanh hết pin, đặc biệt là trên thiết bị di động\n3. Không thể ghi âm tập trung: Media truyền trực tiếp giữa các peer nên không có cách nào ghi lại cuộc gọi một cách tập trung tại server\n4. Vấn đề NAT: Khoảng 15% người dùng gặp lỗi kết nối do NAT nghiêm ngặt\n\nGiải pháp đột phá với Janus Media Server\nKhóa học này sẽ hướng dẫn bạn sử dụng Janus Media Server – một thành phần trung gian mạnh mẽ để thay thế mô hình kết nối trực tiếp\n. Thay vì gửi dữ liệu cho nhau, tất cả client sẽ gửi media lên server để server xử lý và phân phối lại\nChúng ta sẽ tập trung sâu vào kiến trúc Modular của Janus, đặc biệt là Audiobridge plugin\nCơ chế Mixing: Server sẽ trộn (mix) các luồng audio lại thành một luồng duy nhất, giúp giảm đáng kể băng thông và tải cho phía người dùng\n\nKhả năng Scale: Hệ thống có thể đáp ứng hàng trăm, thậm chí hàng nghìn người dùng cùng lúc\n\nBạn sẽ học được gì?\nXuyên suốt khóa học, chúng ta sẽ cùng nhau lập trình bằng ngôn ngữ Rust để xây dựng một hệ thống hoàn chỉnh với các tính năng thực tế nhất:\n\nCall App to App: Kết nối giọng nói giữa hai ứng dụng WebRTC.\nCall App to SIP: Tích hợp gọi từ Web\u002FApp sang hệ thống tổng đài SIP truyền thống.\nCall SIP to App: Nhận cuộc gọi ngược lại từ hệ thống SIP về Web\u002FApp.\nAuto Callout: Phát triển hệ thống tự động gọi ra chuyên nghiệp.\n\nMục tiêu khóa học\nToàn bộ nội dung được thiết kế theo lộ trình từ cơ bản đến nâng cao, giúp bạn không chỉ hiểu về mặt lý thuyết mà còn có đủ kỹ năng để tự tay xây dựng một hệ thống Voice IP thực tế.","Backend","Intermediate","3",0,"[\"janus\",\"kamailio\",\"rtpengine\",\"b2bua\",\"rust\",\"bytebuffer\"]","2026-04-09 14:18:48",4,190,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775728211540-3d1f7ec5-ba21-4176-9aa3-ca9775e232ba.png",{"name":18,"title":19,"bio":20},"ByteBuffer","Coder cỏ tại DTS Group và IPA Solutions","Chuyên gia về Rust và hệ thống VoIP\u002FWebRTC. Nhiều năm kinh nghiệm xây dựng các hệ thống real-time communication với hiệu năng cao và độ trễ thấp.",[],[23,35,175,185],{"slug":24,"title":25,"shortDescription":26,"description":27,"category":8,"level":28,"totalDuration":29,"totalLessons":11,"tags":30,"updatedAt":31,"rating":11,"reviewCount":11,"thumbnail":32,"instructor":33,"lessons":34},"rust-voip-freeswitch-media-server","Rust VoIP: Freeswitch Media Server","Khám phá sức mạnh của FreeSWITCH trong việc xây dựng hệ thống VoIP production-ready. Từ nền tảng WebRTC P2P, bạn sẽ tiến tới kiến trúc Media Server có khả năng scale lớn, xử lý hàng nghìn cuộc gọi đồng thời.","FreeSWITCH mang lại những tính năng mạnh mẽ:\n\n1. Xử lý SIP call linh hoạt (inbound\u002Foutbound, gateway, trunking)\n2. Hỗ trợ codec đa dạng (Opus, G.711, G.729…)\n3. Conference (multi-party call) với khả năng scale cao\n4. IVR (Interactive Voice Response) tùy biến bằng XML\u002FLua\n5. Ghi âm cuộc gọi (call recording) và media processing\n6. Event Socket (ESL) cho phép control realtime từ backend (Rust, Java…)\n7. Tích hợp WebRTC ↔ SIP bridge\n8. Load balancing & clustering cho hệ thống lớn\n\nPhù hợp để xây dựng các hệ thống như call center, voice app, hoặc bridge giữa WebRTC và hạ tầng viễn thông truyền thống.","Advanced","4","[\"freeswitch\",\"rust\",\"bytebuffer\"]","2026-04-11 13:07:57","https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775912828865-ef7f2462-4ba9-4256-b115-8ee175030134.png",{"name":18,"title":19,"bio":20},[],{"slug":36,"title":37,"shortDescription":38,"description":39,"category":8,"level":9,"totalDuration":40,"totalLessons":41,"tags":42,"updatedAt":43,"rating":44,"reviewCount":45,"thumbnail":46,"instructor":47,"lessons":48},"rust-webrtc-p2p","WebRTC Peer to Peer với Rust","Xây dựng Signaling Server bằng Rust để thiết lập cuộc gọi audio\u002Fvideo P2P giữa hai trình duyệt với WebRTC.","Khóa học thực chiến giúp bạn xây dựng từ đầu một Signaling Server bằng Rust, xử lý các cuộc gọi audio\u002Fvideo trực tiếp giữa hai trình duyệt thông qua WebRTC Peer-to-Peer mà không cần Media Server.\n\nBạn sẽ nắm vững kiến trúc WebRTC signaling, cách trao đổi SDP Offer\u002FAnswer và ICE Candidates giữa các peer thông qua WebSocket. Khóa học sử dụng Axum + Tokio cho backend, MongoDB để lưu trữ dữ liệu, và JWT để xác thực người dùng.\n\nĐây là Phần 1 trong series 7 phần về Lập trình Rust với VoIP, bao gồm: WebRTC P2P, Media Server (Janus, LiveKit, Kurento, Asterisk, FreePBX), và hệ thống CRM\u002FQueue\u002Fnhạc chờ\u002Fchuyển tiếp cuộc gọi.\n\nYêu cầu tiên quyết: Kiến thức cơ bản về Rust (Ownership, Lifetimes, Traits, Async\u002FAwait).","5 giờ",16,"[\"Rust\",\"WebRTC\",\"VoIP\",\"P2P\",\"Axum\",\"Tokio\",\"WebSocket\",\"MongoDB\",\"JWT\"]","2026-04-10 00:15:52",4.8,320,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775495865592-4cdf9be1-d9ed-459c-b59b-178041ba66b5.png",{"name":18,"title":19,"bio":20},[49,57,65,73,80,88,96,104,112,120,128,136,144,152,160,168],{"slug":50,"title":51,"description":52,"duration":53,"youtubeId":54,"order":55,"thumbnail":56},"gioi-thieu-khoa-hoc","Rust WebRTC P2P #1 - Giới thiệu khóa học","Chào mừng bạn đến với series Rust VoIP! Trong bài mở đầu, bạn sẽ nắm được bức tranh toàn cảnh: mục tiêu xây dựng Signaling Server bằng Rust, kiến trúc P2P (Browser ↔ Rust Server ↔ Browser), tech stack sử dụng (Axum, Tokio, WebSocket, MongoDB, JWT), và lộ trình 7 phần của toàn bộ series từ WebRTC đến CRM\u002FQueue.","5:29","Gj9wYJ57qfA",1,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775495174815-9cda6d98-4692-4476-815d-0437bad01c59.webp",{"slug":58,"title":59,"description":60,"duration":61,"youtubeId":62,"order":63,"thumbnail":64},"voip-la-gi-webrtc-la-gi","Rust WebRTC P2P #2 - VoIP là gì? WebRTC là gì?","Hiểu bản chất VoIP — công nghệ truyền thoại\u002Fvideo qua mạng IP đứng sau Skype, Zoom, Google Meet. Sau đó khám phá WebRTC — bộ tiêu chuẩn cho phép trình duyệt giao tiếp trực tiếp peer-to-peer: media đi thẳng giữa hai browser, server chỉ làm nhiệm vụ signaling duy nhất.","7:13","Ih1lcfZwzeE",2,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775495227568-62ba7951-3528-4c10-973d-13f726732f56.webp",{"slug":66,"title":67,"description":68,"duration":69,"youtubeId":70,"order":71,"thumbnail":72},"sip-overview-why-rust","Rust WebRTC P2P #3 - SIP overview + Why choose Rust","So sánh SIP (giao thức signaling truyền thống trong telephony) với WebRTC signaling nhẹ hơn, phù hợp browser. Đi sâu vào 4 lý do chọn Rust: hiệu năng không GC pause, safety ngăn data race từ compile time (Arc, DashMap, mpsc), async mạnh mẽ với Tokio, và cơ chế bắt buộc xử lý lỗi — yếu tố sống còn khi server chịu hơn 100K cuộc gọi\u002Fngày.","3:23","SVOsqmEs2SQ",3,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775495301130-3cedf79b-354f-4035-bad9-1d2166099956.webp",{"slug":74,"title":75,"description":76,"duration":77,"youtubeId":78,"order":14,"thumbnail":79},"install-rust-rustrover-cargo","Rust WebRTC P2P #4 - Install Rust + RustRover + Cargo Commands","Thực hành cài đặt Rust Toolchain qua rustup.rs trên Windows\u002FLinux\u002FmacOS và xác thực bằng rustc, cargo, rustup. Khám phá RustRover — IDE chuyên biệt giúp code Rust nhanh hơn VS Code. Làm quen 4 lệnh Cargo thiết yếu: cargo new, cargo build, cargo build --release và cargo run.","7:36","Pzj8FiXvmwo","https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775495334946-b2e8a644-6797-4a0a-8aa8-bc9f6926fb1b.webp",{"slug":81,"title":82,"description":83,"duration":84,"youtubeId":85,"order":86,"thumbnail":87},"hello-world-tokio-runtime-cargo-toml","Rust WebRTC P2P #5 - Hello World + Tokio Runtime + Cargo.toml","Khám phá Cargo.toml — trái tim quản lý dependencies của mọi dự án Rust. Khai báo các thư viện sẽ dùng xuyên suốt khóa học: Axum, Tokio, Serde, DashMap, UUID, Log4rs, Anyhow. Cấu hình Tokio Runtime biến hàm main thành async, tận dụng thread pool xử lý hàng nghìn kết nối đồng thời. Kết thúc bằng việc chạy thành công project Hello World đầu tiên.","5:13","HIcUJYrI_7U",5,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775495371395-6e99fb8b-7734-479f-9386-6a4bc75d6cff.webp",{"slug":89,"title":90,"description":91,"duration":92,"youtubeId":93,"order":94,"thumbnail":95},"axum-server-config-loading","Rust WebRTC P2P #6 - Axum Server + Config Loading","Chào mừng bạn quay trở lại với series WebRTC Peer-to-Peer (P2P) với Rust\n\nTrong phần 6 này:\nChúng ta bắt đầu xây dựng backend\n→ Thiết lập hệ thống cấu hình (Config)\n→ Khởi tạo Axum HTTP Server","42:44","DmHrozL4its",6,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775495482671-3d9accc9-dbe7-45e4-bdaa-2b4361dc3b34.webp",{"slug":97,"title":98,"description":99,"duration":100,"youtubeId":101,"order":102,"thumbnail":103},"mongodb-logging-with-log4rs","Rust WebRTC P2P #7 - MongoDB + Logging with log4rs","Chào mừng bạn quay trở lại với series WebRTC Peer-to-Peer (P2P) bằng Rust\n\nTrong video 7 này:\nChúng ta hoàn thiện nền tảng Signaling Server với 2 phần quan trọng:\n- Cấu hình MongoDB\n- Thiết lập hệ thống Logging với log4rs","15:44","K9D_tT1iJQ8",7,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775495650431-ec57a6c7-3937-48b5-ac5d-7c2b105d32b4.webp",{"slug":105,"title":106,"description":107,"duration":108,"youtubeId":109,"order":110,"thumbnail":111},"create-websocket-endpoint-with-axum","Rust WebRTC P2P #8 - Create WebSocket Endpoint with Axum","WebSocket là giao thức giữ kết nối hai chiều liên tục — khác HTTP request\u002Fresponse. Trong signaling server, mỗi user kết nối WebSocket và giữ kết nối suốt session\n","15:45","dX4phlMs4b4",8,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775574741518-39f6b0a5-0899-4775-bae8-2c07da84f8ee.webp",{"slug":113,"title":114,"description":115,"duration":116,"youtubeId":117,"order":118,"thumbnail":119},"connectionstate-client-online-management","Rust WebRTC P2P #9 - ConnectionState — Client Online management","Chào mừng bạn quay trở lại với series WebRTC Peer-to-Peer (P2P) bằng Rust\n\nTrong phần 9 này:\nChúng ta xây dựng một thành phần cốt lõi của Signaling Server\n→ Quản lý trạng thái kết nối (Connection State)\n→ Quản lý danh sách user đang online","8:46","DSWewq_Ft48",9,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775657276388-20da4fcb-6126-4224-b333-16adac68afe2.webp",{"slug":121,"title":122,"description":123,"duration":124,"youtubeId":125,"order":126,"thumbnail":127},"message-routing-dispatcher-pattern","Rust WebRTC P2P #10 - Message Routing — Dispatcher Pattern","Trong phần 10 này, chúng ta sẽ tiến hành chuẩn hóa cách thức trao đổi dữ liệu giữa Client và Server thông qua WebSocket bằng cách xây dựng hệ thống Message Routing và áp dụng Dispatcher Pattern.","9:37","w1o6z46nbgs",10,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775726962635-205922a3-435d-455d-bf21-f41c57ca7436.webp",{"slug":129,"title":130,"description":131,"duration":132,"youtubeId":133,"order":134,"thumbnail":135},"nginx-config-deploy-live-on-vps","Rust WebRTC P2P #11 - Nginx Config + Deploy Live on VPS","Chúng ta đưa Signaling Server từ local lên VPS thực tế\n→ Cấu hình domain\n→ Setup Nginx\n→ Thiết lập HTTPS (SSL)","16:28","CQKW3uUgm_Y",11,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775831831726-148865ca-dcbf-4682-9e0b-41435a17be0d.jpg",{"slug":137,"title":138,"description":139,"duration":140,"youtubeId":141,"order":142,"thumbnail":143},"user-model-mongodb-queries","Rust WebRTC P2P #12 - User Model + MongoDB Queries","Trong phần này, mình bắt đầu xây dựng Data Layer cho hệ thống, bao gồm User Model và các truy vấn MongoDB. Đây là nền tảng quan trọng để triển khai Login và Authentication cho cả REST API và WebSocket server.","4:34","Ov54lD682Kw",12,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775911639340-b03d16cc-a0a8-4233-a5e1-50a94743f954.png",{"slug":145,"title":146,"description":147,"duration":148,"youtubeId":149,"order":150,"thumbnail":151},"login-service-jwt-argon2","Rust WebRTC P2P #13 - Login Service + JWT + Argon2","Trong phần 13 này, chúng ta triển khai một trong những tính năng quan trọng nhất của backend: Login Service. Mục tiêu là xây dựng cơ chế xác thực an toàn, sử dụng JWT và các tiêu chuẩn bảo mật hiện đại để bảo vệ thông tin người dùng.","22:03","sICzdbRpwnw",13,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775983603748-ad6186f1-5c2f-4cf2-8e07-29b6880a9c55.png",{"slug":153,"title":154,"description":155,"duration":156,"youtubeId":157,"order":158,"thumbnail":159},"auth-middleware-http-websocket-auth-flow","Rust WebRTC P2P #14 - Auth Middleware HTTP + WebSocket Auth Flow","Trong phần 14 này, chúng ta thực hiện một bước rất quan trọng để bảo vệ hệ thống: xây dựng Middleware cho HTTP Server và thiết lập luồng xác thực cho WebSocket. Đây là lớp bảo vệ giúp đảm bảo chỉ những người dùng hợp lệ mới có thể truy cập API và thiết lập kết nối signaling.","50:35","Maz-uKSzoto",14,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1776072985484-4936c485-dfcb-4919-8b83-6e364e6a1255.webp",{"slug":161,"title":162,"description":163,"duration":164,"youtubeId":165,"order":166,"thumbnail":167},"demo-login-websocket-auth-tu-postman","Rust WebRTC P2P #15 - Demo Login + WebSocket Auth từ Postman","Trong phần 15 này, chúng ta thực hiện demo toàn bộ quy trình xác thực đã xây dựng ở các phần trước. Sử dụng Postman để mô phỏng client, chúng ta sẽ kiểm tra cách server xử lý token thông qua cả HTTP và WebSocket.","5:12","8GmuMOpl_JQ",15,"https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1776176649415-701f3222-2da2-43a7-b9ad-7f52a41386b4.webp",{"slug":169,"title":170,"description":171,"duration":172,"youtubeId":173,"order":41,"thumbnail":174},"state-pattern-p2pcallstatehandler-trait","Rust WebRTC P2P #16 - State Pattern — P2PCallStateHandler Trait","Trong phần 16 này, chúng ta đi vào một thành phần rất quan trọng trong kiến trúc của signaling server: State Pattern. Đây là phần “trái tim” giúp điều khiển toàn bộ luồng xử lý của một cuộc gọi, từ lúc bắt đầu cho đến khi kết thúc.","12:04","6BrjxQmROU0","https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1776240875283-0880cb67-c8fd-4f77-975f-0d05d3fa6394.png",{"slug":176,"title":177,"shortDescription":178,"description":179,"category":8,"level":28,"totalDuration":29,"totalLessons":11,"tags":180,"updatedAt":181,"rating":11,"reviewCount":11,"thumbnail":182,"instructor":183,"lessons":184},"rust-voip-asterisk-media-server","Rust VoIP: Asterisk Media Server","Làm chủ công nghệ VoIP với khóa học \"Lập trình VoIP với Rust: Asterisk Media Server\". Vượt qua những giới hạn của WebRTC P2P để xây dựng hệ thống tổng đài và media server chuyên nghiệp. Khám phá sức mạnh của Asterisk kết hợp cùng Rust để xử lý các bài toán quy mô lớn, từ gọi App-to-App đến tích hợp hệ thống SIP và Auto Callout mạnh mẽ.","Từ WebRTC P2P đến Hệ thống Media Server thực thụ\nNếu bạn đã hiểu cách kết nối trực tiếp giữa các trình duyệt qua WebRTC P2P, bạn sẽ nhận ra rằng mô hình đó chỉ là bước khởi đầu\n. Để xây dựng những ứng dụng Voice IP có thể scale lớn và dùng trong sản xuất (production), chúng ta cần một giải pháp mạnh mẽ hơn để giải quyết 4 vấn đề cốt lõi của P2P:\n\n- Khả năng mở rộng không giới hạn: Thay vì để 10 người tạo ra 90 kết nối chéo gây nghẽn mạng\n, chúng ta sẽ tập trung mọi luồng media về một điểm duy nhất.\n- Tối ưu tài nguyên thiết bị: Giảm tải tối đa CPU và pin cho người dùng mobile bằng cách không bắt thiết bị phải upload nhiều luồng media cùng lúc\n- Ghi âm tập trung (Centralized Recording): Dễ dàng lưu trữ và quản lý mọi cuộc gọi ngay tại server, điều mà mô hình P2P gần như không thể thực hiện\n- Vượt qua rào cản NAT: Xử lý triệt để vấn đề NAT nghiêm ngặt (NAT strict) vốn chiếm tới 15% người dùng, giúp kết nối luôn thông suốt mà không làm tăng chi phí relay phức tạp.\n\nTại sao lại là Asterisk và Rust?\nTrong khóa học này, chúng ta sẽ sử dụng Asterisk — một tượng đài trong thế giới VoIP — làm Media Server trung gian. Thay vì để các peer kết nối trực tiếp, tất cả client sẽ gửi dữ liệu lên Asterisk để server xử lý và phân phối lại.\n\nViệc kết hợp với ngôn ngữ Rust mang lại hiệu suất tối ưu và tính an toàn cao khi xây dựng các logic điều khiển cuộc gọi. Asterisk đóng vai trò là \"trái tim\" xử lý WebRTC, signaling và networking, giúp hệ thống dễ dàng scale lên hàng trăm, thậm chí hàng nghìn người dùng\n\nNội dung thực hành trọng tâm\nKhóa học sẽ dẫn dắt bạn đi từ những bước cơ bản nhất đến khi hoàn thiện một hệ thống Voice IP thực tế với đầy đủ các tính năng\n\n1. Call App to App: Lập trình cuộc gọi giữa hai ứng dụng WebRTC thông qua Asterisk.\n2. Call App to SIP: Kết nối thế giới Web\u002FApp với hệ thống tổng đài SIP truyền thống.\n3. Call SIP to App: Nhận cuộc gọi ngược lại từ các đầu số SIP về trình duyệt hoặc ứng dụng di động.\n4. Auto Callout: Xây dựng hệ thống tự động gọi ra chuyên nghiệp phục vụ cho thông báo hoặc CSKH.\n\nKết quả đạt được\nToàn bộ khóa học được thiết kế để bạn có thể tự mình xây dựng, vận hành và triển khai một hệ thống VoIP thực tế\n. Đây không chỉ là lý thuyết, mà là những kỹ năng thực chiến để bạn làm chủ công nghệ truyền thông thời gian thực.","[\"asterisk\",\"rust\",\"b2bua\",\"kamailio\"]","2026-04-09 14:19:52","https:\u002F\u002Fpub-cd0f133a6f7640ca947255f10fb6c328.r2.dev\u002Fthumbnails\u002F1775728872332-8cae7a0a-719d-4c6f-bf67-8829e2a9cf42.png",{"name":18,"title":19,"bio":20},[],{"slug":4,"title":5,"shortDescription":6,"description":7,"category":8,"level":9,"totalDuration":10,"totalLessons":11,"tags":12,"updatedAt":13,"rating":14,"reviewCount":15,"thumbnail":16,"instructor":186,"lessons":187},{"name":18,"title":19,"bio":20},[],1776241156918]