Cơ bản tổng đài nội bộ PBX cho người mới
Cách hoạt động của tổng đài nội bộ PBX cho người mới
Đây là bài viết tự note lại nguyên tắc cơ bản nhập môn về tổng đài, để giúp net admin dần dần quản trị voip, ae chuyên phần voice góp ý giúp.
Trong một hệ thống tổng đài nội bộ (PBX), ví dụ như FreePBX, nó chạy trên một máy chủ Linux và sử dụng Asterisk (phần mềm tổng đài) để xử lý cuộc gọi.
Các file quan trọng trong Asterisk
Hệ thống tổng đài có hai file quan trọng:
- sip.conf – Định nghĩa các số nội bộ được đặt cho điện thoại bàn.
- extensions.conf – Quy tắc xử lý cuộc gọi, xác định cách các số nội bộ có thể gọi nhau, thời gian rung chuông, ....
Cách điện thoại bàn kết nối với tổng đài
Mỗi điện thoại IP (hoặc softphone) cần có:
✔ IP của tổng đài để kết nối, ít nhất cần ping thông, và mở port firewall UDP 5060
✔ Số nội bộ + mật khẩu, quy định trong file sip.conf
Khi nhập đúng thông tin, điện thoại sẽ hiển thị dạng như "REGISTERED", “ON HOOK” (đăng ký thành công). Nếu nhập sai, nó sẽ báo "FAILED".
Ví dụ một số nội bộ trong file sip.conf:
[1600]
type=friend
host=dynamic
secret=pass1600
context=internal
callerid="Nhan vien 1600"
(Hoặc tạo trên giao diện của tổng đài nó cũng cập nhật vào file này)
Điện thoại dùng số 1600, mật khẩu "pass1600", sẽ kết nối vào tổng đài PBX.
Để điện thoại gọi nhau, cần thiết lập trong extensions.conf
Nếu muốn các số 1600, 1601, 1602... gọi nhau, cần quy hoạch trong file extensions.conf:
[internal]
exten => _16XX,1,Dial(SIP/${EXTEN},20)
same => n,Hangup()
Giải thích:
- _16XX cho phép gọi các số từ 1600 đến 1699.
- Dial(SIP/${EXTEN},20) gọi đúng số nội bộ sẽ đổ chuông trong 20 giây.
Ví dụ, điện thoại số 1600 có thể gọi 1601, 1602… và ngược lại.
Nếu muốn nhóm số cùng đổ chuông?
Bạn có thể thiết lập nhóm trong extensions.conf:
exten => 1000,1,Dial(SIP/1600&SIP/1601&SIP/1602,20)
Khi ai đó gọi số 1000, cả 1600, 1601, 1602 sẽ đổ chuông cùng lúc.
Kết luận
✔ sip.conf – Khai báo số nội bộ & điện thoại kết nối tổng đài.
✔ extensions.conf – Quy định số nào gọi được số nào.
✔ Điện thoại cần nhập đúng IP tổng đài + số + mật khẩu để kết nối (REGISTERED).
✔ Muốn số nội bộ gọi nhau? Cấu hình trong extensions.conf.
Cách tổng đài nội bộ (PBX) gọi ra mạng di động & nhận cuộc gọi từ ngoài vào
Gọi ra ngoài mạng di động
Để tổng đài nội bộ gọi ra số di động (09xxx, 08xxx, 07xxx...), ta cần:
✅ Thuê một SIP Gateway (SIP GW) của nhà mạng (Viettel, VNPT, FPT...)
✅ Khai báo trên tổng đài để kết nối đến SIP GW đó (tổng đài cần có ip public và thông được tới con SIPGW của nhà mạng)
👉 Khi có cuộc gọi từ điện thoại bàn nội bộ (1600, 1601...) ra ngoài mạng di động, luồng cuộc gọi sẽ là:
📞 Điện thoại bàn → Tổng đài nội bộ → SIP GW → Nhà mạng → Số di động cần gọi
🔹 Khai báo về SIP GW trên tổng đài nội bộ (file sip.conf)
Ví dụ, nếu ta thuê SIP GW của Viettel ( 203.113.130.10), khai báo như sau: (phần này nhà mạng sẽ cung cấp)
[my_sip_trunk]
type=peer
host=203.113.130.10 ; Địa chỉ SIP Gateway của nhà mạng
username=mycompany ; Username nhà mạng cấp (nếu có)
secret=mypass123 ; Mật khẩu SIP Trunk
insecure=very ; Không cần kiểm tra username/password nếu dùng IP Auth
qualify=yes ; Kiểm tra kết nối SIP Trunk có ổn định không
canreinvite=no ; Kiểm soát luồng RTP (thường đặt no)
disallow=all ; Chặn tất cả codec
allow=ulaw&alaw ; Chỉ cho phép codec ulaw và alaw
context=incoming_calls ; Chuyển cuộc gọi vào context xử lý
🔹 Ví dụ Khai báo file extension.conf để gọi ra ngoài
[outgoing_calls]
exten => _09XXXXXXXX,1,NoOp(Goi di dong: ${EXTEN})
same => n,Dial(SIP/${EXTEN}@my_sipgw,30)
same => n,Hangup()
📌 Giải thích:
- _09XXXXXXXX → Nhận diện các số 09xx-xxxxxx (số di động)
- Dial(SIP/${EXTEN}@my_sipgw,30) → Gửi cuộc gọi lên SIP GW của Viettel
- Nếu kết nối thành công → Điện thoại di động sẽ đổ chuông
- Nếu thất bại → Hệ thống tự ngắt cuộc gọi
Sau khi cấu hình xong, điện thoại bàn nội bộ (1600, 1601…) có thể bấm số di động để gọi ra ngoài!
Nhận cuộc gọi từ ngoài vào tổng đài nội bộ
Khi có người gọi từ mạng di động vào tổng đài nội bộ, ví dụ:
📞 Một số Viettel 0987xxx gọi đến tổng đài 1900-222-333
👉 Luồng cuộc gọi sẽ như sau:
📞 Số di động (Viettel) → Nhà mạng → SIP GW ISP→ Tổng đài nội bộ → Máy bàn (1600, 1601...)
Khi cuộc gọi đến tổng đài nội bộ, nó sẽ đọc file extensions.conf để quyết định, ví dụ
✔ Phát IVR (hướng dẫn tự động)
✔ Chuyển cuộc gọi đến nhóm máy nội bộ (1600, 1601...)
🔹 Ví dụ cấu hình tiếp nhận cuộc gọi trong extensions.conf
[incoming_calls]
exten => _1900222333,1,NoOp(Cuoc goi tu ${CALLERID(num)} vao 1900-222-333)
same => n,Answer()
same => n,Playback(ivr-greeting) ; Phát lời chào IVR (ghi âm sẵn)
same => n,Dial(SIP/1600,30) ; Gọi đến số nội bộ 1600, đổ chuông 30 giây
same => n,Voicemail(1600@default,u) ; Nếu không ai bắt máy, chuyển vào hộp thư thoại
same => n,Hangup()
📌 Giải thích:
- _1900222333 → Nhận diện số tổng đài 1900-222-333
- CALLERID(num) → Hiển thị số người gọi đến (VD: 0987xxxx)
- Playback(ivr-greeting) → Phát lời chào IVR (VD: "Xin chào, vui lòng chờ kết nối...")
- Dial(SIP/1600,30) → Đổ chuông số nội bộ 1600 trong 30 giây
- Voicemail(1600@default,u) → Nếu không ai nghe, chuyển vào hộp thư thoại
TÓM LẠI:
File quy định các số nội bộ sử dụng, các thông tin SIPGW,... thuộc file sip.conf
File quy tắc chuyển cuộc gọi, rung chuông, IVR… thuộc file extension.conf
Bài viết cùng danh mục
Danh mục bài viết
- Juniper
- Tài Nguyên LAB
- Wireshark
- FeedBack
- Multicast lab
- Security Infa
- Checkpoint
- Lab OSPF
- Router Logging
- LAB CCNA CCNP CÓ GIẢI
- DMVPN
- Mikrotik
- MPLS
- PFSENSE
- DUMP CCNA
- Điều khoản
- F5 LTM
- MONITOR NETWORK
- TOOL HỌC CCNA
- TƯ VẤN KHÓA HỌC
- PYTHON SCRIPT HỮU ÍCH
- IPv6
- Quality of Service
- QoS
- VXLAN
- SDWAN
- ISE
- Fortigate
- BGP
- MINH HỌA KHÁI NIỆM TRONG CCNA
- Bài tập CCNA CCNP (support Học viên)
- Phỏng vấn IT chứng khoán
- Layer2 CCNA
- Bài tập thiết kế mạng CCNA
- Linux
- EEM SCRIPT
- ASA LAB
- DHCP
- NEXUS
- Giao thức IS IS
- ANSIBLE
- PALO ALTO
- ARUBA SWITCH
- CÂU HỎI TỪ ĐỀ THI THẬT
- TỔNG ĐÀI
- WIFI
- CEH cho network admin
- CCNA HIỆU ỨNG ĐỘNG