Sau khi cài đặt Drive DAHDI cho card X100P ta tiến hành thực hiện 1 số lệnh cấu hình file để card này có thể giao tiếp được với PSTN.
Load Drive cho card X100P :
Modprobewcfxo
Thực hiện sau để tạo ra file :/etc/dahdi/system.conf cho việc cấu hình sau này cho Card:
Dahdi_gencof-vvvv
Thực hiện lệnh sau để xem thong tin về gói cài đặt Dahdi và thông tin các kênh mà Dahdi đang hỗ trợ:
Dahdi_cfg-vvv
Hình 5.2 : Lệnh dahdi cfg-vvv.
Để đảm bảo Asterisk đã nhận dạng Card giao tiếp X100P ta cần tiến hành thực hiện lệnh kiểm tra sau:
root@ubuntu:~#dahdi scan
Hình 5.3 :Lệnh dahdi_scan. root@ubuntu:~#dahdi_tool
Hình 5.4: Hệ điều hành đã nhận được Card X100P. Ubuntu*CLI>dahdi show status
Hình 5.5:Trạng thái hiện tại của Card X100P.
•Nếu Alarms = OK cho biết bạn đã gắn thẻ line PSTN vào Card rồi. •Nếu Alarms = RED cho biết bạn chưa gắn line PSTN.
•Nếu Alarms = RED cho biết bạn chưa chạy lệnh “dahdi_genconf”, “dahdi_cfg”.
Hình 5.6 : Các kênh hỗ trợ khi gắn Card.
Sau khi Card đã được nhận dạng thì ta cần tiến hành cấu hình một số thông số trong file config sau để giúp cho Card hoạt động (các thông số không được đề cập đến được xem như là để mặc định).
Trong file : /etc/dahdi/system.conf
#span 1:WCFXO/0 “WildcardX100P Board 1”(MASTER) RED Fxsks = 1
Echocanceller = mg2,1 #Global data
Loadzone = us Defaultzone = us
Trong file :/etc/asterisk/chan_dahdi.conf Laguage = en Usecallerid = yes Echocancel = yes Echocancelwhenbridge = no Echotraining = 800 #include dahdi-channels.conf
Trong file :/etc/asterisk/dahdi-channels.conf
;span 1: WCFXO/0 “Wildcard X100P Board 1”(MASTER) RED ;;;line = “1 WCFXO/0/0”
Callerid = asreceived Group = 0 Context = from-pstn Channel =>1 Callerid = Group = Context = default
Χη νγ 6. TRIỂN KHAI HỆ THỐNG VOIP 6.1. Giới thiệu về mô hình triển khai
Tuỳ theo nhu cầu, VoIP có thể được sử dụng dưới nhiều mô hình kết nối khác nhau.Ở đây chúng tôi xây dựng mô hình gồm có:
Tổng đài IP PBX: kết nối giữa các đầu cuối với nhau, có thể là các máy tính
trong mạng LAN có cài đặt softphone, các IP phone kết nối với mạng LAN qua giao tiếp Ethernet RJ45 hoặc các điện thoại analog kết nối đến mạng LAN qua bộ chuyển tiếp ATA và kết nối đến server Asterisk trong cùng mạng LAN. Hoặc kết nối với mạng điện thoại PSTN bên ngoài thông qua card giao tiếp TDM. Một số giao tiếp TDM do Digium sản xuất thường có dạng TDMxyB, trong đó x biểu diễn cho số lượng port FXS và y thể hiện cho số lượng port FXO như card TDM22B có 2 port giao tiếp FXS và 2 port giao tiếp FXO.
Các thiết bị đầu cuối: được kết nối đến server Asterisk thông qua mạng
LAN, không phải kéo đường dây riêng cho các máy nội bộ như tổng đài PBX truyền thống, tiết kiệm chi phí đáng kể cho hệ thống điện thoại nội bộ. Đối với các máy tính đã có sẵn trong mạng LAN, chỉ cần cài đặt softphone cùng với sound card và headphone, micro. Đối với các IP phone có hỗ trợ sẵn giao tiếp Ethernet với 2 cổng RJ45, một kết nối với mạng LAN, một kết nối với máy tính PC, do đó dễ dàng kết nối vào mạng LAN bằng cáp mạng. Trường hợp không có cổng mạng thì IP phone được đấu nối trực tiếp với mạng LAN thông qua port RJ45 và máy tính được nối với mạng LAN thông qua IP phone với cổng RJ 45 to PC , tiết kiệm rất nhiều chi phí kéo cáp.
Ngoài ra, IP PBX Asterisk còn có khả năng mở rộng các số nội bộ, không chỉ giới hạn trong một mạng LAN mà có thể kết nối rộng rãi ra bên ngoài thông qua Internet hoặc VPN (Vitual Private Network)
Trước khi đi vào giới thiệu về việc thiết lập cuộc gọi VoIP, ta đi vào giới thiệu các thành chính trong mạng mà chúng ta tiến hành khảo sát như sau:
6.1.1. Yêu cầu
Kết nối giữa các server Asterisk: Mô hình kết nối các server Asterisk phải
phù hợp với các công ty có nhiều chi nhánh đặt tại nhiều nơi, giúp tiết kiệm chi phí liên lạc đường dài giữa các văn phòng với nhau.
Kết nối IP PBX với PBX: Đối với trường hợp đã có hệ thống tổng đài PBX
và đã hết dung lượng nhưng muốn mở rộng thêm các số nội bộ thì mô hình phải đáp ứng dễ dàng để giúp tiết kiệm chi phí đầu tư tổng đài PBX mới, giảm thiểu chi phí và nhân công kéo cáp. IP PBX Asterisk sẽ kết nối hệ thống mạng nội bộ mới với tổng đài PBX hiện có.
Hệ thống phải đáp ứng các tính năng cơ bản như :
Cuộc gọi VoIP giữa các máy nhánh trong toàn bộ công ty là hoàn toàn miễn phí.
Tất cả các máy nhánh trong toàn bộ công ty ( văn phòng chính, chi nhánh) có thể gọi PSTN đến các thuê bao di động và cố định trong và ngoài nước.
Gọi VIDEO: ứng dụng này sẽ cho phép thuê bao có thể sử dụng chức năng
video.
IVR Server: cho phép thực hiện các cuộc gọi rẽ nhánh tuỳ theo tương tác của người gọi, tương tự như hệ thống dịch vụ 1800 và 1900 của mạng mobifone cung cấp.
Voice Mail: tạo hộp thư thoại, cho phép khách hàng lựa chọn hộp thư thoại tuỳ theo tương tác của người gọi.
Ứng dụng phân phối cuộc gọi tự động ACD: phân phối cuộc gọi tự động
ACD (Automatic Call Distribution), dành cho các nhu cầu chăm sóc, hỗ trợ khách hàng hay tiếp nhận phản hồi từ khách hàng. (giống dịch vụ 18001091 của các đài hỗ trợ khách hàng của Vinaphone hoặc 1080, 116 của Viễn thông tỉnh, thành phố).
Ứng dụng Billing : ứng dụng này cho phép chung ta thực hiện việc tính cước phí cho các cuộc gọi ra và các cuộc gọi vào.
Quản lý chi tiết cuộc gọi : thông tin máy, thời gian, cuộc gọi đến, gọi đi, gọi nhỡ…
Mở rộng trong tương lai : các số máy nhánh ở các tỉnh khác, các chi nhánh ở nước ngoài có thể đăng ký vào tổng đài để gọi VoIP, gọi PSTN ( giảm cước cuộc gọi).
Và các tính năng khác.
6.1.2. Mô hình xây dựng
Hình 6.1: Kiến trúc mạng VoIP nghiên cứu
6.1.3. Các thiết bị cần có trong hệ thống tổng đài : Điện thoại IP :
• Điện thoại AT-510
• Hỗ trợ 3 tài khoản : 2 tài khoản SIP, 1 tài khoản IAX2 • Cổng kết nối RJ45 : 1 LAN port + 1 WAN port
Card chuyển đổi PSTN : TDM-400P
• Khả năng kết nối 4 lines bưu điện PSTN • Kết nối máy tính thông qua cổng PCI slot 5V • Hỗ trợ Voice mail, IVR, Caller ID, Conference • Loại bỏ tiếng vọng Echo.
Tổng đài Asterisk :
• Dùng máy tính PC để cài đặt phần mềm tổng đài IP • Phần mềm tổng đài Asterisk
• Cấu hình đặc trưng của máy tính :
o CPU : Xeon 3.0 Ghz
o RAM : 2 GB
o HDD : 100 Gbyte
o LAN card : 10/100MB • Asterisk Server
• Lưu trữ, phục hồi file cài đặt thông số.
Tổng đài VoIPSwitch :
• Dùng máy tính PC để cài đặt phần mềm tổng đài VoIPSwitch. • Phần mềm tổng đài VoIPSwitch.
• Cấu hình đặc trưng của máy tính : • CPU : Xeon 3.0 Ghz • RAM : 3 GB • HDD : 100 Gbyte • LAN card : 10/100/1000MB • VoIPSwitch Server Softtphone IP :
• Phần mềm tổng X-lite: điện thoại Softphone có hỗ trợ giao thức SIP, được đăng kí với Asterisk Server, VoIPSwitch server với số thuê bao 1111 và 2222
Các thiết bị mạng IP:
• 3 Router: được cấu hình với địa chỉ IP là 192.168.1.1/24, 192.168.2.1/24 và 192.168.2.1/24 được nối với ISP VDC thông qua modem ADSL.
• Switch: dùng để kết nối các thiết bị máy tính lại với nhau
6.2. Cài đặt A2billing
A2Billing, kết hợp với Asterisk, tạo nên hệ thống VoIP có tính cước tuyệt vời, mà lại hoàn toàn miễn phí. Bản A2Billing 1.7.1 có nhiều cải tiến, và một trong số đó là script đơn giản hóa quá trình cài đặt (tạo database,cài đặt file âm thanh cho a2billing). 6.2.1. Yêu cầu hệ thống • Elastix 2.3.0 (Asterisk 1.6) • A2billing 1.7.1 source. • Database: MySQL. • Linux: CentOS 5. • PHP 5.
• Web server (apache).
6.2.2. Hướng dẫn cài đặt
• Cài các gói phụ thuộc:
# yum -y install perl-DBD-Pg subversion php
• Tải A2Billing
# mkdir /usr/local/src/a2billing # cd /usr/local/src/a2billing
• Chép và giải nén a2billing vào thư mục /usr/local/src/a2billing
# tar xvzf A2Billing_1.7.1.tar.gz
•Bắt đầu cài đặt
# cd /usr/local/src/a2billing/DataBase/mysql-5.x # bash install-db.sh
Install A2Billing DataBase
Enter Database Name :mya2billing Enter Hostname :localhost
Enter UserName :root Enter Password :passw0rd
mysql --user=root --password=passw0rd --host=localhost mya2billing # ln -s /usr/local/src/a2billing/a2billing.conf /etc/
# vi /etc/a2billing.conf [database]
hostname = localhost
; port for postgres is 5432 by default port = 3306
user = a2billinguser password = a2billing dbname = mya2billing
; dbtype setting can either be mysql or postgres dbtype = mysql
# chmod 777 /etc/asterisk
# touch /etc/asterisk/additional_a2billing_iax.conf # touch /etc/asterisk/additional_a2billing_sip.conf
# echo #include additional_a2billing_sip.conf >> /etc/asterisk/sip.conf # echo #include additional_a2billing_iax.conf >> /etc/asterisk/iax.conf # chown -Rf asterisk /etc/asterisk/additional_a2billing_iax.conf
# chown -Rf asterisk /etc/asterisk/additional_a2billing_sip.conf # cd /usr/local/src/a2billing/addons/sounds/
# bash /usr/local/src/a2billing/addons/sounds/install_a2b_sounds.sh # vi /etc/asterisk/manager.conf
; Asterisk Call Management support [general] enabled = yes port = 5038 bindaddr = 0.0.0.0 [myasterisk] secret=mycode read=system,call,log,verbose,command,agent,user write=system,call,log,verbose,command,agent,user [admin] secret = amp111 deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read = system,call,log,verbose,command,agent,user write = system,call,log,verbose,command,agent,user #include manager_additional.conf #include manager_custom.conf # mkdir -p /usr/share/asterisk/agi-bin # ln -s /usr/local/src/a2billing/AGI/a2billing.php /usr/share/asterisk/agibin/a2billing.php # ln -s /usr/local/src/a2billing/AGI/lib /usr/share/asterisk/agi-bin/lib
# ln -s /usr/local/src/a2billing/AGI/a2billing.php /var/lib/asterisNew update #ln-s/usr/local/src/a2billing/AGI/a2billing_monitoring.php
/var/lib/asterisk/agi-bin/
# ln -s /usr/local/src/a2billing/AGI /var/lib/asterisk/agi-bin/ # chown -R asterisk.asterisk /var/lib/asterisk/agi-bin/
# chown -R asterisk.asterisk /usr/local/src/a2billing # chmod +x /usr/share/asterisk/agi-bin/a2billing.php # mkdir /var/www/html/a2billing
# chown asterisk.asterisk /var/www/html/a2billing # ln -s /usr/local/src/a2billing/admin /var/www/html/a2billing/admin # ln -s /usr/local/src/a2billing/agent /var/www/html/a2billing/agent # ln -s /usr/local/src/a2billing/customer /var/www/html/a2billing/customer # ln -s /usr/local/src/a2billing/common /var/www/html/a2billing/common # chmod 755 /usr/local/src/a2billing/admin/templates_c # chmod 755 /usr/local/src/a2billing/customer/templates_c # chmod 755 /usr/local/src/a2billing/agent/templates_c
# chown -Rf asterisk.asterisk /usr/local/src/a2billing/admin/templates_c # chown -Rf asterisk.asterisk /usr/local/src/a2billing/customer/templates_c # chown -Rf asterisk.asterisk /usr/local/src/a2billing/agent/templates_c
Bây giờ ta có thể truy cập a2billing thông qua trình duyệt web () và login với quyền admin. User và Password mặc định là
User: root
Pass: changepassword • Tiếp tục cài
# vi /etc/asterisk/extensions_custom.conf
and add the following contexts at the end #include extensions_a2billing.conf
create a file extensions_a2billing.conf and put following in it [a2billing] exten => _X.,1,Answer exten => _X.,2,Wait(2) exten => _X.,3,DeadAGI(a2billing.php) exten => _X.,4,Wait(2) exten => _X.,5,Hangup [did] exten => _X.,1,DeadAGI(a2billing.php|1|did) # vi /etc/crontab
and add following 06* * * php /usr/local/src/a2billing/Cronjobs/currencies_update_yahoo.php 061** php /usr/local/src/a2billing/Cronjobs/a2billing_subscription_fee.php 0** * * php /usr/local/src/a2billing/Cronjobs/a2billing_notify_account.php 0 2 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_bill_diduse.php 012* * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_process.php 0 6 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_billing.php */5****php/usr/local/src/a2billing/Cronjobs/a2billing_batch_autodialer 0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_alarm.php
• Tạo các thư mục và file log cần thiết
# mkdir -p /var/lib/a2billing/script # mkdir -p /var/run/a2billing # touch /var/log/asterisk/a2billing-daemon-callback.log # touch /var/log/a2billing-daemon-callback.log # touch /var/log/cront_a2b_alarm.log # touch /var/log/cront_a2b_autorefill.log # touch /var/log/cront_a2b_batch_process.log # touch /var/log/cront_a2b_bill_diduse.log # touch /var/log/cront_a2b_subscription_fee.log # touch /var/log/cront_a2b_currency_update.log # touch /var/log/cront_a2b_invoice.log # touch /var/log/a2billing_paypal.log # touch /var/log/a2billing_epayment.log # touch /var/log/api_ecommerce_request.log # touch /var/log/api_callback_request.log # touch /var/log/a2billing_agi.log • Tạo Dialplan
Thêm dialplan sau vào extensions_custom.conf (hoặc extensions.conf nếu không dùng FreePBX.
[a2billing] exten => _X.,1,Answer exten => _X.,n,Wait(1) exten => _X.,n,DeadAGI(a2billing.php) exten => _X.,n,Wait(1) exten => _X.,n,Hangup [did] exten => _X.,1,Answer exten => _X.,n,Wait(1) exten => _X.,n,DeadAGI(a2billing.php|1|did) exten => _X.,n,Wait(1)
Bạn có thể truy cập A2billing qua tài khoản Admin với tài khoản mặc định sau : User: root
Pass:changepassword
Hình 6.2: Đăng nhập vào A2B Admin
Hình 6.3: Giao diện Admin của A2Billing
6.3. Cấu hình A2billing
Khi chúng ta đã hoàn thành phần này, chúng tôi sẽ có thể thực hiện các cộng việc sau đây:
• Một người dùng cục bộ có thể gọi bất kỳ người sử dụng khác trong cục bộ và được lập hoá đơn cho các cuộc gọi điện thoại
• Mức giá khác nhau có thể được áp dụng cho người dùng khác nhau (thành viên được ưu đãi hoặc không ưu đãi).
• Một người dùng cục bộ có thể quay số ra (thông qua các nhà cung cấp VoIP) và được lập hoá đơn cho các cuộc gọi điện thoại
• Người dùng (ngoài mạng) có thể gọi cho bất kỳ người dùng cục bộ.
6.3.1. Tạo Dialplan
File Extensions.conf chính là nơi chứa dialplan Asterisk.Các cuộc gọi tương tác với phần mềm A2billing cần phải được xử lý bên trong của một hoặc nhiều bối cảnh a2billing liên quan. Các cuộc gọi đến ngữ cảnh được xử lý bằng cách sử dụng
các kịch bản a2billing.php(nằm trong thư mục cài đặt a2billing). Trong mô hình này, chúng tôi tạo ra hai bối cảnh khác nhau :
• Bối cảnh đầu tiên [a2billing] xử lý tất cả các cuộc gọi từ khách hàng VoIP của chúng tôi. Khi một cuộc gọi đến bất kỳ số mở rộng _X.(2 hay nhiều số). • Bối cảnh thứ hai [did], sẽ được sử dụng định tuyến các cuộc gọi trở lại cho
người sử dụng.Các cuộc gọi cho khách hàng (DID) được xử lý bên trong của bối cảnh [did]. Kịch bản a2billing.php trong chế độ [did] chịu trách nhiệm định tuyến cuộc gọi trở lại một trong những người dùng của chúng ta.
Chỉnh sửa extension.conf (/etc/asterisk) và thêm hai phần mở rộng sau: [a2billing] ; CallingCard application exten => _X.,1,Answer exten => _X.,2,Wait,2 exten => _X.,3,DeadAGI,a2billing.php exten => _X.,4,Wait,2 exten => _X.,5,Hangup [did] ; CallingCard application exten => _X.,1,Answer exten => _X.,2,Wait,2 exten => _X.,3,DeadAGI(a2billing.php|1|did) exten => _X.,4,Wait,2 exten => _X.,5,Hangup
6.3.2. Tạo nhà cung cấp (Providers) và Trunks
Providers là các nhà cung cấp dịch vụ thoại để giúp cho công ty có thể liên lạc ra bên ngoài. Hiện tại ta có hai nhà cung cấp dịch vụ phổ biến đó là PSTN Provider với đường Line điện thoại truyền thống, và VoIP Provider liên lạc thông qua đường truyền Internet.
Bây giờ chúng ta sẽ cấu hình A2Billing thông qua giao diện web của nó.Trong kịch bản của chúng tôi, chúng tôi sẽ tạo ra các nhà cung cấp sau đây:
• PBX sẽ có một nhà cung cấp VoIP (VOIP PROVIDER) để tiếp cận với thế giới bên ngoài. WA_OUT sẽ sử dụng công nghệ SIP.
• PBX sẽ cũng có một nhà cung cấp địa phương (PSTN PROVIDER) để tiếp cận người dùng cục bộ.
Một hệ thống có thể có quyền truy cập đến một hoặc nhiều nhà cung cấp để tiếp cận thế giới VoIP. Mỗi nhà cung cấp có thể thực hiện một hoặc nhiều công nghệ định tuyến VoIP (Trunk).Chúng tôi sẽ tạo ra một nhà cung cấp với một Trunk có sử dụng giao thức SIP.
Hình 6.4: List Provider được thiết lập
Sau khi tạo hai Providers xong ta tiến hành tạo Trunk .Đầu tiên ta sẽ tạo một ZAP Trunk với nhà cung cấp dịch vụ PSTN, điền vào những thông tin sau:
• VoIP-Provider: PSTN Provider (tên nhà cung cấp dịch vụ PSTN đã tạo • ở trên).
• Label: PSTN Trunk (tên của Trunk).
• Provider Tech: DAHDI (do ta cài gói Dahdi hỗ trợ cho Card giao tiếp PSTN).
• Provider IP: 1 (tên của đường ra PSTN ta đã đặt trong FreePBX). • Additional Parameter: để trống.