Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 98 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
98
Dung lượng
2,08 MB
Nội dung
LỜI CAM ĐOAN Luận văn thạc sỹ nghiên cứu thực hướng dẫn Thầy giáo TS Phạm Đăng Hải Để hoàn thành luận văn này, tài liệu tham khảo liệt kê, cam đoan không chép toàn văn công trình thiết kế tốt nghiệp người khác Tác giả luận văn Đặng Tuấn Hùng MỤC LỤC DANH MỤC CÁC KÝ HIỆU, THUẬT NGỮ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Chương 1: TỔNG QUAN VỀ CÔNG NGHỆ VoIP 1.1 VoIP ? 1.2 VoIP làm việc ? 1.3 Cấu trúc mạng VoIP 1.3.1 Thiết bị đầu cuối 1.3.2 Mạng truy nhập IP 1.3.3 Gatekeeper 1.3.4 Gateway 1.4 Các mô hình kết nối mạng VoIP 1.4.1 Kết nối PC-PC 1.4.2 Kết nối PC-Phone 1.4.3 Kết nối Phone – Phone 1.5 Các yếu tố ảnh hưởng đến chất lượng mạng VoIP 1.5.1 Trễ (Delay) 1.5.2 Jitter 1.5.3 Mất gói tin (Packet Loss) 10 1.6 Ưu nhược điểm VoIP 10 1.6.1 Ưu điểm 10 1.6.2 Nhược điểm 11 1.7 Vấn đề bảo mật VoIP 11 1.7.1 Các cấp độ mà cấu trúc VoIP bị công 11 1.7.2 Một số hình thức công dịch vụ VoIP: 12 1.7.3 Một số công nghệ bảo mật VoIP: 14 Chương 2: TỔNG ĐÀI MÃ NGUỒN MỞ ASTERISK 17 2.1 Asterisk gì? 17 2.2 Giới thiệu số tính tổng đài Asterisk 20 2.2.1 Tính Voice Mail (Hộp thư thoại) 21 2.2.2 Call Forwarding (Chuyển gọi) 21 2.2.3 Caller ID (Hiển thị số gọi đến) 21 2.2.4 Automated Attendant (Chức tương tác thoại) 21 2.2.5 Time and Date 22 2.2.6 Call Parking 22 2.2.7 Remote Call Pickup (Nhận gọi từ xa) 22 2.2.8 Privacy Manager 22 2.2.9 Blacklist 23 2.2.10 Music On Hold (Nhạc chờ) 23 2.2.11 ACD - Automatic Call Distribution (Phân phối gọi tự động) 23 2.2.12 Meetme (Hệ thống hội thoại) 24 2.2.13 Speed Dial (Gọi số tắt) 24 2.3 Kiến trúc hoạt động Asterisk 24 2.4 Các giao thức báo hiệu Asterisk 26 2.4.1 Bộ giao thức H.323 27 2.4.2 Giao thức MGCP (Media Gateway Control Protocol) 31 2.4.3 Giao thức khởi tạo phiên SIP (Session Initiation Protocol) 33 2.4.4 Giao thức IAX ( Inter-Asterisk eXchange ) 40 2.4.5 IAX vs SIP 46 2.5 Các CODEC Asterisk 50 2.6 Cài đặt tổng đài Asterisk 51 2.6.1 Cài đặt hệ điều hành 51 2.6.2 Cài đặt Asterisk 52 2.7 Dialplan – “Trái tim Asterisk” 53 Chương 3: TRIỂN KHAI TỔNG ĐÀI ASTERISK CHO MỘT SỐ DOANH NGHIỆP 56 3.1 Công ty cổ phần iNET 56 3.2 Công ty truyền thông C&C 62 3.3 Học viện NIIT- iNET 75 PHỤ LỤC 84 Cấu hình kịch C&C 84 AGI sử dụng kịch công ty C&C 89 DANH MỤC CÁC KÝ HIỆU, THUẬT NGỮ VIẾT TẮT ADPCM Adaptive Differential Pulse Code Modulation API Application Programming Interface ATA Analog Terminal Adapter CA Call Agent CDR Call Detail Record GNU General Public License GSM Global System for Mobile Communications IAX Inter-Asterisk eXchange IETF Internet Engineering Task Force IP Internet Protocol ITU-T International Telecommunications Union - Telecommunication Standardization Sector IVR Interactive Voice Response MCU Multipoint Control Units MC Media Controller MGCP Media Gateway Control Protocol NAT Network Address Translate PBX Private Branch eXchange PSTN Public Switched Telephone Network RTCP Real-Time Control Protocol RTP Real-Time Protocol SIP Session Initiation Protocol SGCP Simple Gateway Control Protocol TCP Transmission Control Protocol UAC User Agent Client UAS User Agent Server UDP User Datagram Protocol DANH MỤC CÁC BẢNG Bảng 1.1 Một số CODEC VoIP Bảng 2.2 IAX Frame Type Hình 2.3 IAX Frame type Voice Data Hình 2.4 IAX Frame Type Control Hình 2.5 IAX Frame type IAX Control 42 43 43 43 DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình 1.1 Cấu trúc mạng VoIP 1.2 Kết nối PC - PC 1.3 Kết nối PC - Phone 1.4 Kết nối Phone - Phone 1.5 Độ trễ chấp nhận 1.6.Hiện tượng trễ mạng VoIP 1.7 Hiện tượng Jitter 2.8 Hệ thống PBX truyền thống 2.9 Hệ thống Asterisk 2.10 Hệ thống phân phối gọi tự động ACD 2.11 Kiến trúc Asterisk 2.12 Các giao thức VoIP mô hình OSI 2.13 Bộ giao thức H.323 2.14 Các thành phần mạng H.323 2.15 Quá trình thiết lập gọi H.323 2.16 Cấu trúc hệ thống MGCP 2.17 Quá trình thiết lập gọi MGCP 2.18 Các thành phần hệ thống SIP 2.19 Quá trình thiết lập gọi SIP kiểu Proxy 2.20 Quá trình thiết lập gọi SIP theo kiểu Redirect 2.21 Kết nối hai tổng đài theo giao thức IAX 2.22 IAX F-Frame 2.23 IAX M-Frame 2.24 Gói tin IAX REGREG 2.25 Gói tin IAX NEW 2.26 Quá trình thiết lập gọi IAX 2.27 Gói tin IAX gói tin SIP 2.28 Vấn đề NAT 2.29 Giải vấn đề NAT với STUN Server 2.30 Phương thức truyền thoại SIP ( canreinvite = yes ) 2.31 Phương thức truyền thoại IAX 2.32 PCM ( Pulse Code Modulation ) 3.1 Mô kịch gọi vào 3.2 Mô gọi nội 3.3 Cấu hình IP Hardphone GXP-2000 3.4 Kịch gọi vào số dịch vụ 3.5 Kịch nhà dự đoán tài ba 3.6 Kịch mũ tư 3.7 Giao diện phần mềm ScreenPop: Thông tin ghi 3.8 Giao diện phần mềm ScreenPop: Lịch sử gọi 5 9 19 20 23 25 26 28 28 30 31 33 34 38 39 40 41 41 44 44 45 47 48 48 49 49 50 60 61 62 64 65 66 74 75 LỜI NÓI ĐẦU Ngày nay, với bùng nổ Internet, loại hình dịch vụ dựa tảng mạng Internet xuất ngày nhiều Một dịch vụ bật Voice Over IP (VoIP) – công nghệ cho phép truyền thoại qua mạng IP Với ưu điểm bật mình, VoIP dần thay mạng điện thoại truyền thống toàn giới Một giải pháp xây dựng hệ thống VoIP quan tâm giải pháp sử dụng tổng đài Asterisk Asterisk phần mềm mã nguồn mở hoàn toàn miễn phí, chạy hệ điều hành Linux, cho phép thực tính tổng đài nội (PBX) mà có tính mà tổng đài nội Hiện nay, Asterisk đà phát triển nhanh, nhiều doanh nghiệp triển khai ứng dụng.Theo nhận định Jon maddog Hall - chủ tịch tổ chức Linux International, VoIP sử dụng giải pháp nguồn mở Asterisk có thị trường lớn Linux Tuy nhiên, việc triển khai ứng dụng Asterisk vào doanh nghiệp gặp nhiều khó khăn như: khó cài đặt, khó cấu hình Do vậy, em hy vọng với nghiên cứu phần giúp doanh nghiệp giảm thời gian nghiên cứu chi phí triển khai Em xin chân thành cảm ơn thầy giáo TS Phạm Đăng Hải nhiệt tình giúp đỡ để em hoàn thành đề tài Hà Nội, tháng 4/2014 Học viên Đặng Tuấn Hùng Chương 1: Tổng quan công nghệ VoIP Chương 1: TỔNG QUAN VỀ CÔNG NGHỆ VoIP Công nghệ VoIP năm 1995 công ty VocalTel đưa phần mềm điện thoại internet chạy máy tính cá nhân giống điện thoại PC ngày sử dụng card âm thanh, microphone loa Phần mềm gọi Internet Phone, sử dụng giao thức H323 giao thức SIP sử dụng phổ biến ngày Nhưng đó, mạng dải rộng, phần mềm sử dụng modem nên chất lượng thoại nhiều so với điện thoại thông thường Tuy nhiên, đời phần mềm đánh dấu mốc quan trọng việc đời điện thoại IP Ngày vấn đề liên quan đến chất lượng dịch vụ VoIP giải đáng kể, lưu lượng VoIP giành quyền ưu tiên so với loại lưu lượng khác liệu để đảm bảo chất lượng gọi Do đó, công nghệ VoIP đà phát triển mạnh với thị trường rộng lớn doanh số ngày cao 1.1 VoIP ? VoIP (Voice Over IP) công nghệ cho phép truyền thông tin thoại từ nơi sang nơi khác thông qua mạng sử dụng giao thức IP (Internet Protocol) VoIP thường biết đến số tên khác như: điện thoại Internet, điện thoại IP, điện thoại dải rộng (Broadband Telephony) … 1.2 VoIP làm việc ? Khi nói vào ống nghe hay microphone, giọng nói tạo tín hiệu điện từ, tín hiệu analog Tín hiệu analog chuyển sang tín hiệu số dùng thuật toán đặc biệt để chuyển đổi Ở điện thoại thông thường, tín hiệu thoại lấy mẫu với tần số KHz sau lượng tử hóa bit/mẫu truyền với tốc độ 64 KHz đến mạng chuyển mạch truyền tới đích Ở phía thu, tín hiệu giải mã thành tín hiệu ban đầu Công nghệ VoIP không hoàn toàn khác với điện thoại thông thường Đầu tiên, tín hiệu thoại số hóa, thiết bị khác có cách chuyển đổi khác Học viên: Đặng Tuấn Hùng Luận văn thạc sĩ Chương 1: Tổng quan công nghệ VoIP VoIP phone hay softphone (nếu dùng điện thoại analog thông thường cần Telephony Adapter) Nhưng sau thay truyền mạng PSTN qua trường chuyển mạch, tín hiệu thoại nén xuống tốc độ thấp đóng gói, truyền qua mạng IP Trong suốt tiến trình đó, giao thức SIP hay H323 dùng để điểu khiển (control) gọi thiết lập, quay số, ngắt kết nối… RTP dùng cho tính đảm bảo độ tin cậy trì chất lượng dịch vụ trinh truyền 1.3 Cấu trúc mạng VoIP Hình 1.1 Cấu trúc mạng VoIP Theo ngiên cứu ETSI (European Telecommunications Standard Institute), cấu hình chuẩn mạng điện thoại IP bao gồm phần tử sau: Thiết bị đầu cuối kết nối với mạng IP Mạng truy nhập IP Gateway Gatekeeper Học viên: Đặng Tuấn Hùng Luận văn thạc sĩ Chương 1: Tổng quan công nghệ VoIP Mạng chuyển mạch kênh Thiết bị đầu cuối kết nối với mạng chuyển mạch kênh Trong kết nối khác cấu hình mạng thêm bớt số phần tử 1.3.1 Thiết bị đầu cuối Thiết bị đầu cuối nút cuối cấu hình mạng điện thoại IP Nó kết nối với mạng IP sử dụng giao diện truy nhập Một thiết bị đầu cuối cho phép thuê bao mạng IP thực gọi tới thuê bao khác mạng chuyển mạch kênh Các gọi Gatekeeper mà thiết bị đầu cuối thuê bao đăng ký giám sát 1.3.2 Mạng truy nhập IP Là loại mạng liệu sử dụng chồng giao thức TCP/IP sử dụng giao thức IP cho lớp mạng (lớp 3) lớp truy nhập mạng (lớp 2) giao thức mạng LAN, x25, Frame Relay, PPP Mạng truy nhập IP cho phép thiết bị đầu cuối, Gateway, Gatekeeper truy nhập vào mạng IP thông qua sở hạ tầng sẵn có 1.3.3 Gatekeeper Gatekeeper phần tử mạng chịu trách nhiệm quản lý việc đăng ký, chấp nhận trạng thái thiết bị đầu cuối Gateway Gatekeeper tham gia vào việc quản lý vùng, xử lý gọi báo hiệu gọi Nó xác định đường dẫn để truyền báo hiệu gọi nội dung gọi Gatekeeper bao gồm khối chức sau: Chức chuyển đổi địa E.164 Chức dịch địa kênh thông tin Chức giao tiếp Gatekeeper Chức đăng ký Học viên: Đặng Tuấn Hùng Luận văn thạc sĩ Chương 3: Triển khai tổng đài Asterisk cho số doanh nghiệp [fromiax] exten=>_4XXX,1,Dial(IAX2/TpHoChiMinh/EXTEN:1},30,r) exten=> _4XXX,2,Congestion [from-internal] include => fromiax Thực tương tự với server chi nhánh Hồ Chí Minh: vi /etc/asterisk/iax.conf [HaNoi] type=friend username=TpHoChiMinh secret=password123 auth=plaintext host=230.12.12.5 context=fromiax peercontext=fromiax qualify=yes trunk=yes Học viên: Đặng Tuấn Hùng 77 Luận văn thạc sĩ Chương 3: Triển khai tổng đài Asterisk cho số doanh nghiệp Thêm context fromiax vào cuối file extension.conf: [fromiax] exten=>_3XXX,1,Dial(IAX2/HaNoi/${EXTEN:1},30,r) exten=> _3XXX,2,Congestion [from-internal] include => fromiax Nếu server chi nhánh kết nối internet, việc kết nối server hoàn thành Ta thực việc gọi miễn phí chi nhánh, từ chi nhánh gọi vào điện thoại pstn chi nhánh với mức cước nội tỉnh Thực tương tự có nhiều chi nhánh Học viên: Đặng Tuấn Hùng 78 Luận văn thạc sĩ KẾT LUẬN Theo nhận định ,VoIP sử dụng giải pháp nguồn mở Asterisk có thị trường đầy hứa hẹn Các công ty hay tổ chức nhỏ thiết lập hệ thống điện thoại đa năng, hỗ trợ đồng thời điện thoại thông thường (analog) điện thoại IP (VoIP) Asterisk giúp "hợp nhất" hai hệ thống mạng máy tính-điện thoại nội công ty hay tổ chức hòa nhập thông suốt với giới bên ngoài, mạng Internet lẫn viễn thông Luận văn tổng hợp từ kiến thức kinh nghiệm thực tế triển khai công ty: Công ty cổ phần iNET, công ty truyền thông C&C, học viện NIITiNET Qua đó, cung cấp: Phương pháp xây dựng tổng đài VoIP từ đơn giản đến phức tạp, từ quy mô nhỏ đến quy mô lớn Giải pháp hệ thống cho dịch vụ gọi điện qua internet giá rẻ Cấu hình chuẩn cho tổng đài sử dụng card luồng Sangoma, Digium với loại luồng thoại: ISDN 30B+D E1 sử dụng báo hiệu R2 Phương pháp sử dụng php AGI để thao tác với database thay sử dụng mysql-addons Điều đặc biệt, hiệu tổng đài có lưu lượng lớn, đọc ghi liệu liên tục Phần mềm iNETScreenPop phương pháp phát triển phần mềm giao tiếp với Asterisk với tính riêng Do thời gian ngắn nghiên cứu triển khai, nên luận văn không tránh khỏi thiếu sót, em mong nhận ý kiến đóng góp thầy cô bạn quan tâm tới lĩnh vực tổng đài IP Em xin chân thành cảm ơn Tiến sĩ Phạm Đăng Hải nhiệt tình hướng dẫn, giúp em hoàn thành đề tài TÀI LIỆU THAM KHẢO Flavio E Gonçalves, Revision: Luis F Gonçalves (2006), Asterisk PBX Configuration Guide Jeremy Cioara, CCIE No 11727; Mike Valentine, CCNA, CCNP, CCVP : CCNA Voice 640-461 Official Cert Guide Jim Van Meggelen, Leif Madsen, and Jared Smith (2007), Asterisk™: The Future of Telephony, Second Edition, http://www.asteriskguru.org/tutorial/ http://www.asterisk.vn http://www.goidienmienphi.com/faq-voip.htm http://www.pcworld.com.vn/pcworld/printArticle.asp?atcl_id=5f5e5d5e5e5f5c http://www.soft-switch.org/unicall/installing- mfcr2.html http://www.voip- info.org/ PHỤ LỤC Cấu hình kịch C&C [custom-1900561523] exten => s,1,Background(custom/ccsound/loichaotongdai) exten => s,n,WaitExten(3) exten => s,n,Background(custom/ccsound/loichaotongdai) exten => s,n,WaitExten(3) exten => s,n,Background(custom/ccsound/loichaotongdai) exten => s,n,WaitExten(3) exten => s,n,Hangup() exten => _[0-9],1, SET(TimeStart=STR_TO_DATE(\'${STRFTIME(${EPOCH}, Asia/Saigon,%d%m%Y_%H%M%S)}\'\,\'%d%m%Y_%H%i%s\')) exten => _[0-9],2,WaitExten(2) exten => _[0-9],3,SET(KeyPress=${EXTEN}) exten => _[0-9],4,Goto(custom-1900561523_${EXTEN},s,1) exten => h,1,DeadAGI(mysql_process.php,calllog, ${CALLERID(number)},${STARTLOG},${ServiceProvider},${PhoneType}) [custom-1900561523_1] exten => s,1,Background(custom/ccsound/1/welcome1) exten => s,2,AGI(mysql_process.php,srv1) exten => s,n,Noop(${Srv1_Content1}) exten => s,n,GotoIf($["${Srv1_Content1}" = ""]?done) exten => s,n,Noop(${Srv1_Answer1}) exten => s,n,Background(${Srv1_Content1}) exten => s,n,WaitExten(5) exten => s,n,Background(${Srv1_Content1}) exten => s,n,WaitExten(5) exten => s,n(done),AGI(mysql_process.php,report, ${CALLERID(number)},${TimeStart},${KeyPress},1) exten => s,n,Goto(custom-1900561523,s,1) exten => _[1-3],1,WaitExten(1) exten => _[1-3],2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => _[1-3],3,GotoIf($[${Srv1_Answer1} = ${EXTEN}]?custom1900561523_1_2,s,1:custom-1900561523_1_invalid,s,1) exten => i,1,WaitExten(1) exten => i,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => i,3,Goto(s,1) exten => *,1,WaitExten(1) exten => *,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => *,3,AGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => *,4,Goto(custom-1900561523,s,1) exten => h,1,DeadAGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => h,n,DeadAGI(mysql_process.php,calllog, ${CALLERID(number)},${STARTLOG},${ServiceProvider},${PhoneType}) [custom-1900561523_1_2] exten => s,1,Noop(${Srv1_Content2}) exten => s,n,GotoIf($["${Srv1_Content2}" = ""]?done) exten => s,n,Background(${Srv1_Content2}) exten => s,n,WaitExten(5) exten => s,n,Background(${Srv1_Content2}) exten => s,n,WaitExten(5) exten => s,n(done),AGI(mysql_process.php,report, ${CALLERID(number)},${TimeStart},${KeyPress},1) exten => s,n,Goto(custom-1900561523,s,1) exten => _[1-3],1,WaitExten(1) exten => _[1-3],2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => _[1-3],3,GotoIf($[${Srv1_Answer2} = ${EXTEN}]?custom1900561523_1_valid,s,1:custom-1900561523_1_invalid,s,1) exten => i,1,WaitExten(1) exten => i,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => i,3,Goto(custom-1900561523_1,s,1) exten => *,1,WaitExten(1) exten => *,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => *,3,AGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => *,4,Goto(custom-1900561523,s,1) exten => h,1,DeadAGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => h,n,DeadAGI(mysql_process.php,calllog, ${CALLERID(number)},${STARTLOG},${ServiceProvider},${PhoneType}) [custom-1900561523_1_invalid] exten => s,1,Background(custom/ccsound/1/invalid) exten => s,n,WaitExten(3) exten => s,n,AGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => s,n,Goto(custom-1900561523,s,1) exten => i,1,WaitExten(1) exten => i,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => i,3,Goto(custom-1900561523_1,s,1) exten => *,1,WaitExten(1) exten => *,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => *,3,AGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => *,4,Goto(custom-1900561523,s,1) exten => h,1,DeadAGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => h,n,DeadAGI(mysql_process.php,calllog, ${CALLERID(number)},${STARTLOG},${ServiceProvider},${PhoneType}) [custom-1900561523_1_valid] exten => s,1,Background(custom/ccsound/1/valid) exten => s,n,WaitExten(3) exten => s,n,AGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => s,n,Goto(custom-1900561523,s,1) exten => i,1,WaitExten(1) exten => i,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => i,3,Goto(custom-1900561523_1,s,1) exten => *,1,WaitExten(1) exten => *,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => *,3,AGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => *,4,Goto(custom-1900561523,s,1) exten => h,1,DeadAGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},1) exten => h,n,DeadAGI(mysql_process.php,calllog,${CALLERID(number)}, ${STARTLOG},${ServiceProvider},${PhoneType}) [custom-1900561523_2] exten => s,1,Background(custom/ccsound/2/welcome2) exten => s,2,AGI(mysql_process.php,srv2Msg) exten => s,n,GotoIf($["${Srv2_Msg}" = ""]?done) exten => s,n,Noop(${Srv2_Msg}) exten => s,n,Background(${Srv2_Msg}) exten => s,n,Background(custom/ccsound/2/nhanphim) exten => s,n,WaitExten(3) exten => s,n,Background(${Srv2_Msg}) exten => s,n,Background(custom/ccsound/2/nhanphim) exten => s,n,WaitExten(3) exten => s,n,Background(${Srv2_Msg}) exten => s,n,Background(custom/ccsound/2/nhanphim) exten => s,n,WaitExten(3) exten => s,n(done),AGI(mysql_process.php, report,${CALLERID(number)},${TimeStart},${KeyPress},2) exten => s,n,Goto(custom-1900561523,s,1) exten => 1,1,WaitExten(1) exten => 1,n,SET(KeyPress=${KeyPress}_${EXTEN}) exten => 1,n,System(mkdir -pm 775 /var/lib/asterisk/sounds/custom/ccRecord/2/${STRFTIME(${EPOCH}, Asia/Saigon,%d_%m_%Y)}) exten => 1,n,SET(RecordFile=/var/lib/asterisk/sounds/custom/ccRecord/2/${STRFTI ME(${EPOCH},Asia/Saigon,%d_%m_%Y)}/${CALLERID(number)}_${STRFTIME(${EP OCH},Asia/Saigon,%H%M%S)}) exten => 1,n,WaitExten(2) exten => 1,n,Record(${RecordFile}.wav) exten => 1,n,AGI(mysql_process.php,srv2Rec,${Srv2_MsgID}, ${CALLERID(number)},${RecordFile}.wav) exten => 1,n,Background(custom/ccsound/2/chucmung) exten => 1,n,WaitExten(5) exten => 1,n,AGI(mysql_process.php,report,${CALLERID(number)}, ${TimeStart},${KeyPress},2) exten => 1,n,Goto(custom-1900561523,s,1) exten => 11,1,Goto(1,1) exten => 0,1,WaitExten(1) exten => 0,n,SET(KeyPress=${KeyPress}_${EXTEN}) exten => 0,n,Background(${RecordFile}) exten => 0,n,WaitExten(5) exten => 0,n,AGI(mysql_process.php,report,${CALLERID(number)},${TimeStart},${Ke yPress},2) exten => 0,n,Goto(custom-1900561523,s,1) exten => i,1,WaitExten(1) exten => i,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => i,3,Goto(s,1) exten => *,1,WaitExten(1) exten => *,2,SET(KeyPress=${KeyPress}_${EXTEN}) exten => *,3,AGI(mysql_process.php,report,${CALLERID(number)},${TimeStart},${Ke yPress},2) exten => *,4,Goto(custom-1900561523,s,1) exten => h,1,DeadAGI(mysql_process.php,report,${CALLERID(number)},${TimeStart}, ${KeyPress},2) exten => h,n,DeadAGI(mysql_process.php,calllog,${CALLERID(number)},${STARTLOG}, ${ServiceProvider},${PhoneType}) AGI sử dụng kịch công ty C&C mysql.process.php: #!/usr/bin/php -q