Đề tài nghiên cứu khoa học Hệ thống cung cấp và tích hợp dịch vụ thông tin trình bày nội dung về hệ thống Asterisk, cấu hình Card Digium TDM400P, ứng dụng dotProject, chương trình Asterisk AGI và cấu hình Asterisk với MySQL. Để biết rõ hơn về nội dung chi tiết, mời các bạn cùng tham khảo.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO NGHIÊN CỨU KHOA HỌC Đề Tài : Hệ thống cung cấp tích hợp dịch vụ thơng tin Giáo viên hướng dẫn: Phạm Thọ Hồn Sinh viên thực hiện: Đào Quang Minh Lớp: K54 B Hà nội 04/2008 Báo cáo NCKH 2008 HƯỚNG NGHIÊN CỨU VÀ PHÁT TRIỂN Hệ thống cung cấp tích hợp dịch vụ thông tin xoay quanh ứng dụng liên quan đến hệ thống tổng đài cá nhân Asterisk Hệ thống sử dụng Asterisk trung tâm phân phối cung cấp dịch vụ thông tin thông qua kết hợp với tính cao cấp mà Asterisk hỗ trợ Asterisk Voicemail (cho phép gửi tin nhắn thoại tổng đài Asterisk), Asterisk Festival (tích hợp cộng nghệ mã nguồn mở text-to-speech Festival vào Asterisk), Asterisk DUNDi (cho phép kết nối nhiều Asterisk Server lại với nhau) v.v… Từ tính cao cấp xây dựng vơ vàn ứng dụng thực tiễn Hệ thống quản lý công việc kết hợp thoại (Asterisk Voicemail), Hệ thống đọc thông tin qua tổng đài (Asterisk Festival) hay Hệ thống gọi điện thoại quốc tế (Asterisk DUNDi) v.v… Trước hết, Asterisk hệ thống tổng đài cá nhân, cho phép thiết lập hệ thống điện thoại cá nhân thông qua mạng LAN dễ dàng thuận tiện, với chi phí khơng có Trên thực tế, nhu cầu gọi điện thoại miễn phí tổ chức cần thiết, chi phí cho việc triển khai hệ thống miễn phí tiết kiệm không nhỏ cho tổ chức cá nhân có nhu cầu, hệ thống tổng đài cá nhân Asterisk lựa chọn cho nhà ứng dụng phần mềm Hiện tại, việc cấu hình thoại cho nhu cầu gọi điện thoại mạng LAN, Internet hay gửi voicemail thực Cấu hình Asterisk cho phép kết nối với hệ thống PSTN thông qua điện thoại thông thường để triển khai số dịch vụ thành công Hướng phát triển tập trung vào Asterisk Festival, xây dựng hệ thống đọc điểm cho sinh viên học sinh Sinh viên thực hiện: Đào Quang Minh – K54B Page Báo cáo NCKH 2008 MỤC LỤC Asterisk……………………………………………………………… 1.1 Tổng quan…………………………………………………………4 Một số khái niệm liên quan………………………………………5 Một số ngữ cảnh ứng dụng……………………………………….8 1.2 Kiến trúc………………………………………………………… 1.3 Các tính bản……………………………………………10 1.4 Tổ chức thư mục………………… ……………………………12 1.5 Cài đặt……………………………… …………………………15 1.5.1 Yêu cầu hệ thống………………………………………… 15 1.5.2 Các bước cài đặt………………………………………… 15 a) Các gói Linux…………………………………… 15 b) Mã nguồn phần mềm………………………………… 16 c) Zaptel………………………………………………… 17 d) Libpri………………………………………………… 17 e) Cài đặt Asterisk……………………………………….17 f) Asterisk Add-ons………………………………………18 g) Asterisk Sounds……………………………………….18 Các lỗi mắc phải cách xử lý…………………………………18 Cấu hình Card Digium TDM400P…………………………………19 2.1 Lắp đặt phần cứng………………………………………………19 2.2 Cài đặt driver……………………………………………………21 2.3 Cấu hình Asterisk sử dụng card……………………………….21 dotProject……………………………………………………………22 3.1 Tổng quan……………………………………………………….22 3.2 Cấu trúc………………………………………………………….22 3.3 Tích hợp Asterisk VoiceMail………………………………… 24 Asterisk AGI……………………………………………………… 26 4.1 Tổng quan……………………………………………………….26 4.2 Nguyên tắc hoạt động………………………………………… 27 a) Giao tiếp AGI chuẩn…………………………………………….27 b) Gọi AGI từ dialplan…………………………………………… 27 c) Tạo AGI với PHP……………………………………………….27 Cấu hình Asterisk với MySQL………………………………… 33 Cấu hình Asterisk lưu trữ voicemail sở liệu……… 35 Sinh viên thực hiện: Đào Quang Minh – K54B Page Báo cáo NCKH 2008 Asterisk 1.1 Tổng quan Asterisk Asterisk hệ thống chuyển mạch mềm, mã nguồn mở, viết ngôn ngữ C chạy hệ điều hành Linux thực tất tính tổng đài cá nhân (Private Branch eXchange) truyền thống, thêm vào nhiều tính mà PBX thơng thường khơng thể có kết hợp chuyển mạch VOIP chuyển mạch TDM, khả tùy biến đáp ứng thay đổi nhu cầu người sử dụng,… Asterisk đời vào năm 1999 Mark-Spencer liên tục phát triển từ đến bời cộng đồng mã nguồn mở.Phiên Asterisk 1.4 Hiện tất công ty phân phối sản phẩm tổng đài cá nhân thường cung cấp sản phẩm gói kín, với chức giới hạn, trường hợp muốn mở rộng hệ thống khách hàng phải trả thêm khoản phí tương đối lớn Vì lý lợi nhuận công ty không cung cấp cho khác hàng tùy biến chức năng, mà họ muốn khách hàng phải lệ thuộc vào qui trình sản xuất họ Tuy nhiên, với đời Asterisk điều thay đổi Đúng với tính chất phần mềm mã nguồn mở, Asterisk cung cấp cho chế tùy biến mềm dẻo linh hoạt, với Asterisk tự xây dựng hệ thống mà không gặp phải giới hạn Hiện nay, thực tế PBX xây dựng Asterisk nhiều doanh nghiệp triển khai ứng dụng Đây xu hướng tất yếu tất cơng ty có mạng máy tính,mạng điện thoại riêng có ln ln có nhu cầu liên lạc với công việc phòng ban, chi nhánh, với Asterisk, cơng ty giảm thiểu chi phí liên lạc,thậm chí khơng phải tốn chi phí liên lạc máy mạng nội công ty Không giới hạn phạm vi công ty, tổ chức mà Asterisk cung cấp khả giao tiếp với , mạng PSTN mạng VOIP, cho phép gọi điện tới tất số điện thoại có mạng PSTN softfone, IP phone mạng VOIP Thơng qua hình vẽ đây, có nhìn chung, tổng quan hệ thống Asterisk: Sinh viên thực hiện: Đào Quang Minh – K54B Page Báo cáo NCKH 2008 Hình : Sơ đồ tổng quát Asterisk Qua thấy khả giao tiếp phong phú hệ thống, giao tiếp với mạng PSTN, nhà cung cấp dịch vụ VOIP, giao tiếp với điện thoại analog thông thường, điện thoại IP, điểm mạnh, ưu việt Asterisk!!! Một số khái niệm liên quan o PSTN - Public Switched Telephone Network: mạng chuyển mạch điện thoại cơng cộng hay nói cách khác mạng kết nối tất hệ thống tổng đài chuyển mạchmạch PSTN phát triển chuẩn ITU (International Engineering Task Force Union) mạng Internet phát triển chuẩn IETF (Internet Engineering Task Force) Cả hai mạng sử dụng địa để định tuyến gọi, PSTN sử dụng số điện thoại để chuyển mạch gọi tổng đài điện thoại mạng Internet, địa IP sử dụng để định tuyến gói thoại o PBX - Private branch exchange: hệ thống tổng đài nội đặt nhà thuê bao, từ Automatic muốn nói đến hệ thống tổng đài điện tử tự động đa số tổng đài PBX điện tử tự động nên từ thực khơng cần thiết PBX với mục tiêu chia sẻ nhiều thuê bao nội gọi giới bên ngồi thơng qua vài đường trung kế hay nói cách khác PBX hệ thống trung chuyển đường dây điện thoại bên ngồi từ cơng ty điện thoại máy điện thoại nội tổng đài PBX Vì nên số lượng máy điện thoại nội nhiều số đường dây Sinh viên thực hiện: Đào Quang Minh – K54B Page Báo cáo NCKH 2008 nối đến PBX từ bên PBX thực chuyển mạch gọi máy điện thoại nội với với máy điện thoại bên ngồi thơng qua đường trung kế Đồng thời thực chuyển mạch gọi điện thoại từ bên vào máy điện thoại nội Ngoài việc chuyển mạch gọi PBX cung cấp nhiều tính sử dụng cho nhiều mục đích khác khách hàng mà thân đường dây điện thoại từ công ty điện thoại kết nối đến thực được, tính tương tác thoại(IVR), Voicemail, phân phối gọi tự động(ADC)… Hiện với việc phát triển mạnh mẽ công nghệ VoIP, có thêm thuật ngữ IP PBX Đây hệ thống chuyển mạch PBX với công nghệ Voip o VoIP - Voice Over Internet Protocol: công nghệ cho phép truyền thoại sử dụng giao thức mạng IP, sở hạ tầng sẵn có mạng Internet VoIP công nghệ viễn thông quan tâm không nhà khai thác, nhà sản xuất mà với người sử dụng dịch vụ VoIP vừa thực loại gọi mạng điện thoại kênh truyền thống (PSTN) đồng thời truyền liệu sở mạng truyền liệu Do ưu điểm giá thành dịch vụ tích hợp nhiều loại hình dịch vụ nên VoIP triển khai cách rộng rãi o TDM - Time Division Multiplexing: kỹ thuật ghép kênh phân chia thời gian tín hiệu truyền đồng thời đường truyền, TDM sử dụng chuyển thoại hệ thống mạng PSTN, Có hai chuẩn ghép kênh TDM E1 với 30 kênh thoại khung tốc độ 2Mbps T1 với 24 kênh thoại tốc độ 1,5Mbps o FXO (Foreign Exchange Office) FXS (Foreign Exchange Station): hai hình thức báo hiệu giao tiếp TDM FXO thiết bị nhận tín hiệu từ tổng đài gửi đến dòng chng, tín hiệu nhấc/gác máy, tín hiệu mời quay số, gửi nhận tín hiệu… FXO giống máy fax hay modem dial-up 56K dùng để kết nối với đường dây điện thoại FXS thiết bị nơi cung cấp đường dây điện thoại, FXS cung cấp tín hiệu mời quay số (dialtone), dòng chng, hồi âm chng (ring tone) Trong đường dây analog, FXS cung cấp dòng chng điện áp cho điện thoại hoạt động Card TDM sử dụng hệ thống Asterisk thường tích hợp vừa thiết bị FXO vừa thiết bị FXS, FXO để kết nối với đường dây điện thoại FXS dùng để kết nối với máy điện thoại analog thông thường dùng để chuyển mạch gọi TDM qua hệ thống Asterisk o SIP - Session Initiation Protocol: giao thức Internet dành cho báo hiệu VoIP phát triển IETF cung cấp vài chức giống hệ thống báo hiệu số dựa Sinh viên thực hiện: Đào Quang Minh – K54B Page Báo cáo NCKH 2008 IP Chức báo hiệu thoại chuyển tải hai kênh riêng Giao thức SIP thực chức thiết lập báo hiệu gọi (tín hiệu mời quay số, tín hiệu bận, …) Trong giao thức SIP có chức Proxy để linh hoạt thiết lập gọi Proxy Server làm nhiệm vụ ghi nhận tất số điện thoại phía client đăng ký đến qua tin “registration” Khi client khác thực gọi client số điện thoại cần gọi đâu nên thơng qua Proxy Server để tìm kiếm thiết lập gọi o RTP (Real Time Protocol) NAT (Network Address Translators): Các gọi Internet với giao thức SIP chia thành gói thoại chuyển qua giao thức RTP RTP giao thức không thực chuyển gói thoại qua Internet mà có video Một gọi thơng thường có hai hướng thông tin nhận phát, RTP làm việc chuyển gói liệu thoại hai hướng Còn NAT trở ngại lớn giao thức RTP Mạng sử dụng NAT mạng chia sẻ nhiều địa IP nội với địa IP công cộng để kết nối với giới bên ngồi NAT dùng để chia sẻ nhiều máy tính mạng LAN nội sử dụng Internet, mà máy tính nội gặp khó khăn việc thực gọi VoIP qua Internet Đó vấn đề trở ngại truyền thoại qua giao thức RTP Trong giao thức RTP biết thoại chuyển hai đường khác đường phát đường thu, vấn đề NAT nằm chỗ tín hiệu thoại từ bên vào bên qua giao thức RTP khơng thực chiều ngược lại thực tốt Hay nói cách khác vấn đề NAT làm cho gọi từ Internet đàm thoại vào máy nội qua NAT khơng nghe trường hợp gọi từ máy nội máy Internet nghe tốt Vấn đề giải Asterisk việc khai báo thông số NAT=yes file sip.conf o IAX - Inter Asterisk eXchange: giao thức báo hiệu VoIP phát triển tác giả phần mềm Asterisk để khắc phục hạn chế giao thức SIP Không giống giao thức SIP chuyển tải thoại báo hai kênh khác nhau, IAX Sinh viên thực hiện: Đào Quang Minh – K54B Page Báo cáo NCKH 2008 chuyển kênh, giải vấn đề NAT giao thức SIP Mặt khác IAX giao thức tối ưu việc sử dụng băng thông, cho phép nhiều gói liệu IP header, chế chuyển tải nhiều gọi gói IP gọi Trunk Một số ngữ cảnh ứng dụng Asterisk Từ máy mạng LAN máy chủ Asterisk gọi điện cho Từ máy mạng LAN máy chủ Asterisk gọi cho máy khác mạng LAN máy chủ Asterisk khác Sinh viên thực hiện: Đào Quang Minh – K54B Page Báo cáo NCKH 2008 Từ máy điện thoại mạng LAN máy chủ Asterisk gọi qua Internet cho thuê bao điện thoại PSTN qua máy chủ Asterisk khác đặt nơi khác 1.2 Kiến trúc Asterisk Về kiến trúc Asterisk kết hợp tảng công nghệ điện thoại ứng dụng điện thoại: công nghệ điện thoại cho VoIP SIP, H323, IAX, MGCP… công nghệ điện thoại cho hệ thống chuyển mạch-mạch TDM T1, E1, ISDN giao tiếp đường truyền thoại Analog Các ứng dụng thoại chuyển mạch gọi, tương tác thoại, caller ID, voicemail, chuyển gọi… Sinh viên thực hiện: Đào Quang Minh – K54B Page Báo cáo NCKH 2008 Asterisk có số chức đóng vai trò quan trọng hệ thống chuyển mạch gọi, Khi khởi động hệ thống Asterisk chức Dynamic Module Loader thực nạp driver thiết bị, nạp kênh giao tiếp, format, codec ứng dụng liên quan, đồng thời hàm API liên kết nạp vào hệ thống Sau hệ thống PBX Switching Core Asterisk chuyển sang trạng thái sẵn sàng hoạt động chuyển mạch gọi, gọi chuyển mạch tùy vào kế hoạch quay số (Dialplan) thực cấu hình file extension.conf Chức Application Launchar để rung chuông thuê bao, quay số, định hướng gọi, kết nối với hộp thư thoại… Scheduler and I/O Manager đảm nhiệm ứng dụng nâng cao, chức phát triển cộng đồng phát triển Asterisk Codec Translator xác nhận kênh nén liệu ứng với chuẩn khác kết hợp liên lạc với Tất gọi định hướng qua hệ thống Asterisk thông qua giao tiếp SIP, Zaptel IAX Nên hệ thống Asterisk phải đảm trách nhiệm vụ liên kết giao tiếp khác để xử lý gọi Hệ thống bao gồm chức API Codec translator API: hàm đảm nhiệm thực thi giải nén chuẩn khác G711, GMS, G729… Asterisk Channel API: giao tiếp với kênh liên lạc khác nhau, đầu mối cho việc kết nối gọi tương thích với nhiều chuẩn khác SIP, IAX, H323, Zaptel… Asterisk file format API: Asterisk tương thích với việc xử lý loại file có định dạng khác mp3, wav, gsm… Asterisk Aplication API: bao gồm tất ứng dụng thực thi tỏng hệ thống Asterisk voicemail, caller ID,… Ngoài ra, Asterisk có thư viện Asterisk Gateway Interface (AGI, tương tự CGI) - chế kích hoạt ứng dụng bên ngoài, cho phép viết kịch phức tạp với số ngơn ngữ PHP hay Perl Nói chung, khả viết ứng dụng tùy biến lớn 1.3 Các tính Asterisk Voicemail (hộp thư thoại) Đây tính cho phép hệ thống nhận thông điệp tin nhắn thoại, máy điện thoại khai báo hệ thống Asterisk cho phép khai báo thêm chức hộp thư thoại Sinh viên thực hiện: Đào Quang Minh – K54B Page 10 Báo cáo NCKH 2008 Là ứng dụng quản lý dự án dựa web (web-based project management) thiết kế để cung cấp thiết lập cần thiết cho quản lý dự án chức điều khiển tương ứng Là ứng dụng mã nguồn mở dựa ngôn ngữ PHP, công cụ đắc lực cho mục tiêu việc quản lý dự án dotProject hướng tới cung cấp quản lý dự án với công cụ để quản lý tasks, schedules, communication sharing Tuy nhiên dotProject không tất mà người quản lý dự án cần, cần phải có cơng cụ khác hỗ trợ mở rộng cho để có ứng dụng mang tính thực tiễn 3.2 Cấu trúc dotproject dotProject quản lý theo 69 bảng sau: Sinh viên thực hiện: Đào Quang Minh – K54B Page 23 Báo cáo NCKH 2008 Với bảng quan trọng companies, events, projects, tasks, users, … lưu trữ thông tin module chủ yếu dotProject 3.3 Tích hợp Asterisk VoiceMail vào dotProject VoiceMail tích hợp vào dotProject module với phần thiết lập tương tự: Sau người dùng kích hoạt module VoiceMail cách chọn install, hai thao tác thực hiện: Sinh viên thực hiện: Đào Quang Minh – K54B Page 24 Báo cáo NCKH 2008 Module VoiceMail kích hoạt điều thuộc tính quan trọng active visible thơng qua giao diện: Sau kích vào disable hidden, module VoiceMail kích hoạt: Ngồi người dùng chọn remove để đưa chức vào trạng thái không sử dụng Tạo sở liệu dotProject bảng voicemessages để cấu hình Asterisk lưu voicemail vào Sinh viên thực hiện: Đào Quang Minh – K54B Page 25 Báo cáo NCKH 2008 Modules VoiceMail sau tích hợp có giao diện sau: Người dùng gửi tin nhắn thoại thông qua giao diện: Hoàn tất Compose, ấn Send, tin nhắn gửi đến callerid tương ứng tổng đài Asterisk Sinh viên thực hiện: Đào Quang Minh – K54B Page 26 Báo cáo NCKH 2008 Vậy dotProject giao diện Asterisk dùng cho chức VoiceMail giao diện web giao diện thoại Chức VoiceMail web tiếp tục hoàn thiện đưa vào sử dụng thử nghiệm HPCC Chức VoiceMail qua thoại nói cụ thể phần Asterisk AGI 4.1 Tổng quan Asterisk AGI AGI (asterisk gateway interface) cung cấp giao diện chuẩn để chương trình bên ngồi điều khiển Asterisk thơng qua cấu hình hệ thống dialplan Thơng thường AGI scripts sử dụng để thực logic bậc cao, giao tiếp với sở liệu quan hệ PostgreSQL hay MySQL truy cập tài ngun bên ngồi khác Thơng qua điều khiển dialplan, AGI scripts cho phép Asterisk dễ dàng thực thi nhiệm vụ mà khía cạnh khác lại khó thực thi khơng thể thực thi AGI scripts viết ngơn ngữ lập trình đại phạm vi báo cáo tập trung vào việc lập trình kịch AGI thông qua ngôn ngữ PHP Ba giao tiếp AGI Asterisk STDIN, STDOUT STDERR - AGI scripts đọc từ STDIN để lấy thông tin từ Asterisk - AGI scripts ghi liệu vào STDOUT để gửi thơng tin đến Asterisk - AGI scripts ghi liệu vào STDERR để gửi thông tin gỡ lỗi tới Asterisk console 4.2 Nguyên tắc hoạt động AGI a) Giao tiếp AGI chuẩn: Khi AGI khởi động, Asterisk gửi danh sách biến giá trị biến tới AGI scirpt Những biến dạng: agi_request: test.py agi_channel: Zap/1-1 agi_language: en agi_callerid: agi_context: default agi_extension: 123 agi_priority: Sau gửi giá trị này, Asterisk gửi dòng rỗng Đây tín hiệu cho thấy Asterisk gửi xong biến lúc để AGI script kiểm soát dialplan Sinh viên thực hiện: Đào Quang Minh – K54B Page 27 Báo cáo NCKH 2008 Lúc này, AGI script gửi dòng lệnh tới Asterisk qua việc ghi vào STDOUT Sau đó, dòng lệnh tương ứng với kịch Asterisk gửi lại trả lời để AGI đọc Những việc liên tục diễn suốt khoảng thời gian tồn AGI scripts b) Gọi AGI script từ dialplan Để làm việc đắn, AGI script cần phải thực Để sử dụng AGI script dialplan, đơn giản dùng hàm gọi AGI (name_of_application) sau: exten => 123,1,Answer() exten => 123,2,AGI(akhs.agi) exten => 123,3,Hangup() Và đương nhiên file akhs.agi lưu theo đường dẫn /var/lib/asterisk/agi-bin nói đến phần tổ chức thư mục Asterisk c) Tạo AGI script với ngôn ngữ PHP Trong phần lấy ví dụ việc viết AGI script để download báo cáo thời tiết từ Internet chia thơng tin thành hướng gió, tốc độ gió để gửi lại cho người gọi: #!/usr/bin/php -q