XÂY DỰNG TỔNG đài ASTERISK CHO PHÒNG đại học TRƯỜNG đại học (có code) XÂY DỰNG TỔNG đài ASTERISK CHO PHÒNG đại học TRƯỜNG đại học (có code) XÂY DỰNG TỔNG đài ASTERISK CHO PHÒNG đại học TRƯỜNG đại học (có code) XÂY DỰNG TỔNG đài ASTERISK CHO PHÒNG đại học TRƯỜNG đại học (có code) XÂY DỰNG TỔNG đài ASTERISK CHO PHÒNG đại học TRƯỜNG đại học (có code)
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG TỔNG ĐÀI ASTERISK CHO PHÒNG ĐẠI HỌC TRƯỜNG ĐẠI HỌC MỤC LỤC DANH MỤC CÁC HÌNH VẼ IX DANH MỤC CÁC BẢNG BIỂU X DANH MỤC CÁC TỪ VIẾT TẮT XI CHƯƠNG TỔNG QUAN .1 1.1 ĐẶT VẤN ĐỀ: 1.2 MỤC TIÊU: 1.3 CÔNG VIỆC THỰC HIỆN .2 CHƯƠNG TỔNG QUAN VỀ VOIP .3 2.1 TỔNG QUAN VỀ VOIP: .3 2.1.1 Các thành phần tổng đài: .3 2.1.2 Giới thiệu chung VoIP: 2.1.3 Các mơ hình sử dụng VoIP: .5 2.2 CÁC GIAO THỨC TRONG VOIP: 2.2.1 Giao thức H.323: 2.2.2 Giao thức SIP: 10 2.2.3 Bảng so sánh SIP H.323: 13 CHƯƠNG TỔNG ĐÀI ASTERISK 14 3.1 GIỚI THIỆU TỔNG QUÁT: 14 3.1.1 Giới thiệu chung Asterisk: 14 3.1.2 Tổng đài IP-PBX: 15 3.2 CẤU TRÚC THƯ MỤC CỦA ASTERISK: .17 3.3 TÍNH NĂNG CỦA TỔNG ĐÀI ASTERISK: 19 3.4 CÁC MƠ HÌNH TỔNG ĐÀI ASTERISK: .19 3.4.1 Tổng đài IP-PBX: 19 3.4.2 Kết nối IP-PBX PBX: 20 3.4.3 Kết nối Asterisk Server: 20 CHƯƠNG MYSQL VÀ AGI TRONG ASTERISK 21 4.1 MYSQL: 21 4.2 AGI: .22 CHƯƠNG XÂY DỰNG CÁC DỊCH VỤ TRÊN TỔNG ĐÀI ASTERISK 23 5.1 SƠ ĐỒ NGỮ CẢNH: 23 5.1.1 Tư vấn tuyển sinh: 24 5.1.2 Tra cứu thông tin thời khóa biểu, lịch thi, điểm thi: .24 5.1.3 Demo ngữ cảnh: .28 5.2 CUỘC GỌI RA NGOÀI: 32 5.3 GỌI HỘI NGHỊ: 32 5.3.1 Người dùng Admin: .32 5.3.2 Người dùng User: .33 CHƯƠNG KẾT LUẬN 34 6.1 KẾT LUẬN .34 6.2 HƯỚNG PHÁT TRIỂN .34 TÀI LIỆU THAM KHẢO 35 PHỤ LỤC 36 DANH MỤC CÁC HÌNH 1-1: GIẢI PHÁP VOIP [10] .1 YHÌNH 2-1: CÁC THÀNH PHẦN CƠ BẢN CỦA TỔNG ĐÀI [1] HÌNH 2-2: KẾT NỐI KHI SỬ DỤNG INTERNET [3] HÌNH 2-3: MƠ HÌNH KẾT NỐI MẠNG NỐI BỘ [3] .6 HÌNH 2-4: MƠ HÌNH QUAN HỆ GIỮA CÁC GIAO THỨC TRONG H.323 YHÌNH 2-5: THIẾT LẬP CUỘC GỌI TRONG H.323 [3] HÌNH 2-6: MƠ HÌNH THIẾT LẬP CUỘC GỌI GIỮA USER [3] .12 HÌNH 3-1: CÂY THƯ MỤC ASTERISK 17 HÌNH 3-2: KẾT NỐI GIỮA IP-PBX VÀ PBX 20 YHÌNH 3-3: KẾT NỐI GIỮA CÁC SERVER ASTERISK 20 HÌNH 4-1: MƠ HÌNH KẾT NỐI ĐẾN DATABASE [6] 21 HÌNH 4-2: SƠ ĐỒ KẾT NỐI AGI 22 HÌNH 5-1: SƠ ĐỒ NGỮ CẢNH TỔNG THỂ 23 YHÌNH 5-2: SƠ ĐỒ NGỮ CẢNH TƯ VẤN TUYỂN SINH 24 HÌNH 5-3: SƠ ĐỒ NGỮ CẢNH THƠNG TIN TRA CỨU 24 HÌNH 5-4: SƠ ĐỒ NGỮ CẢNH TRA CỨU THỜI KHÓA BIỂU 25 HÌNH 5-5: SƠ ĐỒ NGỮ CẢNH TRA CỨU LỊCH THI 26 HÌNH 5-6: SƠ ĐỒ NGỮ CẢNH TRA CỨU ĐIỂM THI 27 HÌNH 5-7: LOG DỊCH VỤ TƯ VẤN TUYỂN SINH .28 HÌNH 5-8: LOG DỊCH VỤ TRA CỨU THỜI KHĨA BIỂU 29 HÌNH 5-9: LOG DỊCH VỤ TRA CỨU LỊCH THI 30 HÌNH 5-10: LOG DỊCH VỤ TRA CỨU ĐIỂM THI 31 HÌNH 5-11: LOG CUỘC GỌI RA .32 HÌNH 5-12: CUỘC GỌI HỘI NGHỊ VỚI QUYỀN ADMIN 33 HÌNH 5-12: CUỘC GỌI HỘI NGHỊ VỚI QUYỀN USER 33 DANH MỤC CÁC BẢNG BI BẢNG 2-1: SO SÁNH GIỮA SIP VÀ H.323 .13 BẢNG 3-1: SO SÁNH GIỮA PBX VÀ IP-PBX 16 YBẢNG 3-2: CHỨC NĂNG CÁC THƯ MỤC CHÍNH CỦA ASTERISK .17 DANH MỤC CÁC TỪ VIẾT TẮT CLI Command Line Interface CoS Class Of Service CRM Customer Relationship Management DoS Denial of Service DID Direct Inward Dialing DSN Data Source Name IP Internet Protocol IVR Interactive Voice Response LAN Local Area Network WAN Wide Area Network PBX Private Branch Exchange PSTN Public Switched Telephone Network QoS Quality of Services RTCP Real-Time Transport Control Protocol RTP Real-Time Transport Protocol SIP Session Initiation Protocol TCP/IP TCP/IP protocol suite UDP User Datagram Protocol VoIP Voice over Internet Protocol ĐỒ ÁN TỐT NGHIỆP Trang 1/51 CHƯƠNG TỔNG QUAN 1.1 Đặt vấn đề: Liên lạc, truyền thoại đóng vai trò quan trọng lĩnh vực truyền thông, xã hội phát triển mạnh nhu cầu sử dụng mạng Internet, tích hợp vào sở hạ tầng có sẵn để tiết kiệm chi phí gọi sử dụng tối ưu băng thông VoIP đời giải pháp cần thiết, trình phát triển khẳng định vị trí cơng nghệ viễn thơng quan tâm nay, không nhà phát triển, nhà sản xuất mà với người sử dụng dịch vụ VoIP VoIP vừa thực gọi thoại mạng điện thoại kênh truyền thống (PSTN) đồng thời truyền liệu sở mạng Internet Như vậy, tận dụng sức mạnh phát triển mạng IP vốn sử dụng để truyền liệu Có thể tích hợp mở rộng thêm dịch vụ giá trị gia tăng Hình 1-1: Giải pháp VoIP [10] 1.2 Mục tiêu: Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 2/51 Phát triển hệ thống đáp ứng nhu cầu người sử dụng, chia sẻ thông tin cách tiện lợi nhanh chóng Để đáp ứng nhu cầu, đề tài tập trung nghiêm cứu mã nguồn mở Asterisk, song song tích hợp xây dựng sử dụng tài nguyên database lưu trữ người dùng Các tính nghiên cứu, triển khai đề tài đồ án ứng dụng cho mơ hình trường đại học gồm chức năng: - Tính tổng đài IP PBX - Dịch vu tư vấn tuyển sinh - Dịch vụ tra cứu tra cứu thời khóa biểu, lịch thi, điểm thi - Dịch vụ tư vấn trực tiếp với điện thoại viên 1.3 Công việc thực - Tìm hiểu VoIP giao thức H.323 giao thức SIP - Xây dựng tổng đài Asterisk CentOS lệnh linux: Gọi nội bộ, gọi PSTN trunk, IVR, check time condition, voicemail… - Tìm hiểu MySQL tạo sở liệu database CHƯƠNG Xây dựng tổng đài Asterisk cho phòng đại học trường đại học TỔNG QUAN VỀ VOIP ĐỒ ÁN TỐT NGHIỆP Trang 3/51 2.1 Tổng Quan Về VoIP: 2.1.1 Các thành phần tổng đài: Một tổng đài thường bao gồm thành phần chính: - Khối xử lý trung tâm: điều khiển hoạt động hệ thống tổng đài nội Thông thường bao gồm: vi xử lý, nhớ RAM, ổ đĩa cứng EPROM để lưu trữ OS (thường sử dụng LINUX), chương trình điều hành tổng đài, sở liệu tổng đài (database),… Khối xử lý trung tâm thường hỗ trợ chức dự phòng nóng (redundancy) - Khối chuyển mạch: nhận xử lý yêu cầu kết nối thiết bị đầu cuối lại với Trong hệ thống tổng đài nội nay, khối điều khiển khối chuyển mạch thường tích hợp lại với - Khối thiết bị đầu cuối: cổng giao tiếp đầu cuối thuê bao, trung kế, nhân viên tổng đài,… Hình 2-1: Các thành phần tổng đài [1] 2.1.2 Giới thiệu chung VoIP: VoIP công nghệ truyền thoại sử dụng giao thức mạng IP, sở hạ tầng phải có mạng Internet VoIP công nghệ viễn thông quan tâm Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 4/51 không với nhà đầu tư, nhà sản xuất mà với người sử dụng dịch vụ VoIP VoIP điện thoại dịch vụ dải rộng (Broadband Telephony) làm thay đổi ngành điện thoại toàn giới Các dịch vụ VoIP cho phép gọi cho người dùng có loại dịch vụ, dịch vụ cho phép gọi dùng số điện thoại số nội bộ, đường dài, di động, quốc tế Nguyên tắc hoạt động VoIP việc số hố tín hiệu tiếng nói người, thực việc nén tín hiệu số, chia nhỏ gói cần truyền gói tin qua mạng truyền tới nơi nhận gói tin sau ráp lại theo thứ tự tin, giải mã tín hiệu thành tín hiệu tương tự khơi phục lại tiếng nói gần ban đầu 2.1.2.1 Ưu điểm: Điện thoại IP đời nhằm tối ưu hóa tính hiệu mạng truyền số liệu, khai thác tính linh hoạt phát triển ứng dụng qua giao thức IP áp dụng mạng Internet Các tiến công nghệ mang đến cho điện thoại IP ưu điểm sau: - Chi phí gọi: Các gọi miễn phí sử dụng chung loại dịch vụ thiết bị VoIP hay tổng đài IP, giá thành rẻ so với sử dụng gọi truyền thống PSTN - Tích hợp mạng thoại, mạng số liệu mạng báo hiệu: Tín hiệu thoại, số liệu báo hiệu mạng IP tiết kiệm chi phí đầu tư vào mạng riêng lẽ khác - Khả mở rộng: Các tổng PSTN hệ thống kín, khó để sửa chữa, thêm vào tính mở rộng Trong thiết bị mạng Internet thường có khả thêm vào tính dễ dàng mở rộng qua đường Internet có sẵn - Khả multimedia: Người sử dụng vừa thoại vừa sử dụng dịch vụ như: truyền file, chia sẻ liệu, video call… 2.1.2.2 Nhược điểm: Bên cạnh ưu điểm VoIP có mặt hạn chế sau: Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 37/51 disallow=all allow=ulaw,alaw [trunk_tel4vn] username=1175662330 type=friend fromuser=1175662330 secret=5683880962 host=sip.tel4vn.com nat=force_rport,comedia qualify=yes disallow=all allow=ulaw,alaw context=from-trunk port=50061 insecure=port,invite register => 1175662330:5683880962@sip.tel4vn.com:50061/02873020777 Extensions.conf: [general] static=yes writeprotect=no clearglobalvars=no [phone] exten => _1XXX,1,Noop(Call local) exten => _1XXX,n,Dial(SIP/${EXTEN},60) exten => _1XXX,n,VoiceMail(${EXTEN}@mailbox_tel4vn,b) exten => _1XXX,n,Hangup() ;goi IVR exten => 999,1,Noop(IVR) Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 38/51 exten => 999,n,Set(count=0) ; dat bien dem exten => 999,n,Goto(ivr-1,abc,1) ;Goto(ivr,dinh tuyen so exten,so pri) exten => _0Z.,1,Dial(SIP/trunk_tel4vn/${EXTEN},60) exten => _0Z.,n,Set(count=0) ; dat bien dem exten => _0Z.,n,Goto(ivr-1,abc,1) ;Goto(ivr,dinh tuyen so exten,so pri) exten => _0Z.,n,Hangup() ;hoi nghi exten => 3003,1,Noop(Call to Conferene tel4vn in TEL4VN context) exten => 3003,n,Set(CONF=tel4vn) exten => 3003,n,ConfBridge($ {CONF},tel4vn_bridge,tel4vn_user,tel4vn_user_menu) exten => 3003,n,Hangup() exten => 3004,1,Noop(Call to Conferene tel4vn in TEL4VN context) exten => 3004,n,Set(CONF=tel4vn) exten => 3004,n,ConfBridge($ {CONF},tel4vn_bridge,tel4vn_admin,tel4vn_admin_menu) include => outbound [outbound] exten => _0Z.,1,Dial(SIP/trunk_tel4vn/${EXTEN},60) exten => _0Z.,n,Hangup() [ivr-1] exten => abc,1,Noop(IVR 1) exten => abc,n,Progress() ; nghe loi chao chua tinh tien` exten => abc,n,Background(cauchao1,n) ;them option n de k tinh tien exten => abc,n,Background(cauchao2,n) exten => abc,n,WaitExten(5) ;cho bam phim ;goi so noi bo exten => _1XXX,1,Dial(SIP/${EXTEN},60,Tt) ;an phim Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 39/51 exten => 1,1,Noop(press 1) exten => 1,n,Goto(ivr-2,bcd,1) ;an phim exten => 2,1,Noop(press 2) exten => 2,n,Goto(ivr-3,dce,1) ;an phim exten => 3,1,Noop(prees 3) exten => 3,n,Goto(ivr-4,efg,1) ;khong bam phim, het gio cho` ; 't' dai dien cho het gio` exten => t,1,Noop(het thoi gian) exten => t,n,Set(count=$[${count} + 1]) exten => t,n,GotoIf($[${count} i,1,Noop(an sai phim) exten => i,n,Set(count=$[${count} + 1]) ;bam lan sai tat may exten => i,n,GotoIf($[${count} bcd,1,Noop(IVR 2) exten => bcd,n,Background(cau2) exten => bcd,n,WaitExten(0.5) exten => bcd,n,Background(cau3) exten => bcd,n,WaitExten(5) exten => 1,1,Noop(goi dien thoai vien) exten => 1,n,Dial(SIP/1002,60,Tt) exten => 2,1,Noop(tro lai IVR-2) exten => 2,n,Goto(ivr-2,bcd,1) exten => 3,1,Noop(tro lai IVR-1) Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 40/51 exten => 3,n,Goto(ivr-1,abc,1) ;khong bam phim, het gio cho` ; 't' dai dien cho het gio` exten => t,1,Noop(het thoi gian) exten => t,n,Set(count=$[${count} + 1]) exten => t,n,GotoIf($[${count} i,1,Noop(an sai phim) exten => i,n,Set(count=$[${count} + 1]) ;bam lan sai tat may exten => i,n,GotoIf($[${count} dce,1,Noop(IVR 3) exten => dce,n,Background(cau4) exten => dce,n,WaitExten(5) ; Tra cuu thoi khoa bieu exten => 1,1,Noop(thoi khoa bieu) exten => 1,n,Noop(nhap mssv) exten => 1,n,Read(MSSV,mssv) exten => 1,n,SayDigits(${MSSV}) exten => 1,n,AGI(tkbquang.php,${MSSV}) exten => 1,n,GotoIf($["${CHECK_MSSV}"="1"]?ivr-3,tkb,1) exten => 1,n,Noop(nhap lai mssv) exten => 1,n,Set(count=$[${count} + 1]) exten => 1,n,GotoIf($[${count} tkb,1,Noop(doc file) exten => tkb,n,AGI(tkbdidong.php,${MSSV}) ; Tra cuu lich thi Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 41/51 exten => 2,1,Noop(lich thi) exten => 2,n,Noop(nhap mssv) exten => 2,n,Read(MSSV,mssv) ;exten => 2,n,SayDigits(${MSSV}) ;dien tu exten => 2,n,AGI(lichthidientu3.php,${MSSV}) exten => 2,n,GotoIf($["${CHECK_MSSV}"="1"]?ivr-3,lichthidt3,1) exten => 2,n,Noop(nhap lai mssv) exten => 2,n,Set(count=$[${count} + 1]) exten => 2,n,GotoIf($[${count} lichthidt3,1,Noop(thong bao lich thi) exten => lichthidt3,n,Playback(dientu3ngay) exten => lichthidt3,n,SayAlpha(${NGAY}) exten => lichthidt3,n,Playback(thang) exten => lichthidt3,n,SayAlpha(${THANG}) exten => lichthidt3,n,Playback(luc) exten => lichthidt3,n,SayAlpha(${GIO}) exten => lichthidt3,n,Playback(gio) exten => lichthidt3,n,WaitExten(1) exten => lichthidt3,n,Goto(ivr-3,dce,1) exten => lichthidt3,n,AGI(lichthithongtin.php,${MSSV}) exten => lichthidt3,n,Playback(thongtinngay) exten => lichthidt3,n,SayAlpha(${NGAY}) exten => lichthidt3,n,Playback(thang) exten => lichthidt3,n,SayAlpha(${THANG}) exten => lichthidt3,n,Playback(luc) exten => lichthidt3,n,SayAlpha(${GIO}) exten => lichthidt3,n,Playback(gio) Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 42/51 exten => lichthidt3,n,WaitExten(1) exten => lichthidt3,n,Goto(ivr-3,dce,1) ; Tra cuu diem ; Kiem tra MSSV exten => 3,1,Noop(diem thi) exten => 3,n,Noop(nhap mssv) exten => 3,n,Read(MSSV,mssv) exten => 3,n,SayDigits(${MSSV}) exten => 3,n,AGI(mssv.php,${MSSV}) exten => 3,n,GotoIf($["${CHECK_MSSV}"="1"]?ivr-3,pas,1) ;nhap lai mssv exten => 3,n,Noop(nhap lai mssv) exten => 3,n,Set(count=$[${count} + 1]) exten => 3,n,GotoIf($[${count} pas,1,Noop(nhap pass) exten => pas,n,Read(PASS,pass) exten => pas,n,SayDigits(${PASS}) exten => pas,n,AGI(pass.php,${MSSV},${PASS}) exten => pas,n,GotoIf($["${CHECK_MSSV}"="0"]?ivr-3,saipas,1:ivr3,thongbao,1) ; nhap lai pass exten => saipas,1,Noop(nhap lai pass) exten => saipas,n,Set(count=$[${count} + 1]) exten => saipas,n,GotoIf($[${count} thongbao,1,Noop(thong bao diem) exten => thongbao,n,Playback(dientu1) Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 43/51 exten => thongbao,n,SayAlpha(${DT1}) exten => thongbao,n,Playback(kythuatso) exten => thongbao,n,SayAlpha(${KTS}) exten => thongbao,n,Playback(doan2) exten => thongbao,n,SayAlpha(${DA2}) exten => thongbao,n,WaitExten(1) exten => thongbao,n,Goto(ivr-3,dce,1) exten => 4,1,Noop(tro lai IVR-3) exten => 4,n,Goto(ivr-3,dce,1) exten => 5,1,Noop(tro lai IVR-1) exten => 5,n,Goto(ivr-1,abc,1) ;khong bam phim, het gio cho` ; 't' dai dien cho het gio` exten => t,1,Noop(het thoi gian) exten => t,n,Set(count=$[${count} + 1]) exten => t,n,GotoIf($[${count} i,1,Noop(an sai phim) exten => i,n,Set(count=$[${count} + 1]) ;bam lan sai tat may exten => i,n,GotoIf($[${count} efg,1,Noop(IVR 4) ; thoi gian lam viec ; check time format: gio, thu, ngay, thang ; gio: XX:XX-YY:YY => VD bat dau 8h ket thuc 17h la 08:00-17:00 ; thu: X-X mon tue wed thu fri sat sun => VD tu t2 den t6 la mon-fri ; ngay: XX-XX => VD 01-15 ; thang: X-X jan feb mar apr may jun jul aug sep oct nov dec Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ĐỒ ÁN TỐT NGHIỆP Trang 44/51 ; VD: 08:00-17:00,mon-fri,*,* ; GotoIfTime(time ? dung : sai) exten => efg,n,GotoIfTime(08:00-17:00,mon-sun,*,*?dunggio,s,1:saigio,s,1) [dunggio] exten => s,1,Noop(dung gio) exten => s,n,Dial(SIP/1002,60,Tt) exten => s,n,VoiceMail(1002@mailbox_tel4vn,b) ;voice mail so exten @ ten voicemail exten => s,n,Hangup() [saigio] exten => s,1,Noop(sai gio) exten => s,n,VoiceMail(1002@mailbox_tel4vn,b) ;voice mail so exten @ ten voicemail exten => s,n,Hangup() Voicemail.conf: [general] attach=yes fromstring=Tel4vn ;ten mail nhan sendvoicemail=yes emailonly=no emailsubject=Nhan mail tu ${VM_CIDNUM} ;ten tieu de ;trong mail emailbody=Chao ${VM_NAME}, \nBan nhan duoc loi nhan tu ${VM_CIDNUM} vao luc ${VM_DATE}.\nXem file dinh kem.\n\n Cam on [mailbox_tel4vn] 1001 => 1234, Ext 1001, quocdung3795@gmail.com 1002 => 1234, Ext 1002, quocdung3795@gamil.com Xây dựng tổng đài Asterisk cho phòng đại học trường đại học ;passwors, so Exten, mail ĐỒ ÁN TỐT NGHIỆP Trang 45/51 Connect.php: Mssv.php: #!/usr/bin/php -q