XÂY DỰNG CÁC DỊCH VỤ TỔNG ĐÀI ASTERISK DỰA TRÊN LẬP TRÌNH PHPAGI Chương 1: Tổng quan. Chƣơng này giới thiệu về mục tiêu, nội dung của đề tài. Chương 2: Hệ thống Astersik. Chƣơng này nhằm mục đích cung cấp cho ngƣời đọc kiến thức cơ bản về công nghệ VoIP và hệ thống Asterisk. Chương 3: Hệ cơ sở dữ liệu MySQL, giới thiệu về phần mềm quản trị cơ sở dữ liệu MySQL và hƣớng dẫn cách cài đặt MySQL cho hệ thống. Chương 4: Lập trình ứng dụng qua hệ thống AGI. Chƣơng này trình bày tổng quan về AGI, sơ đồ giao tiếp, quá trình hoạt động và cách sử dụng AGI với ngôn ngữ lập trình PHP. Chương 5: Các dịch vụ thực hiện dựa trên AGI. Chƣơng này trình bày các dịch vụ mà nhóm đã thực hiện đƣợc bằng PHPAGI. Chương 6: Tổng kết và hƣớng phát triển đề tài. Chƣơng này tổng kết lại toàn bộ đề tài và hướng phát triển đề tài luận văn.
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG
_oOo _
BÁO CÁO LUẬN VĂN TỐT NGHIỆP:
XÂY DỰNG CÁC DỊCH VỤ TỔNG ĐÀI ASTERISK DỰA TRÊN LẬP
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH BÁCH KHOA CỘNG HÕA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Số: /BKĐT Khoa: Điện – Điện tử Bộ Môn: Viễn Thông NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP Họ và tên: PHẠM CAO CƯỜNG MSSV: 40700306 Họ và tên: NGUYỄN MINH HUY MSSV: 40700942 Ngành: VIỄN THÔNG LỚP: DD07DV1 1 Đề tài: XÂY DỰNG CÁC DỊCH VỤ TỔNG ĐÀI ASTERISK DỰA TRÊN LẬP
TRÌNH PHPAGI 2 Nhiệm vụ ( Yêu cầu về nội dung và số liệu ban đầu):
3 Ngày giao nhiệm vụ luận văn: 4 Ngày hoàn thành nhiệm vụ: 5 Họ và tên người hướng dẫn: Phần hướng dẫn
Nội dung và yêu cầu LVTN đã được thông qua Bộ Môn
Ngày tháng năm 2012
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
PHẦN DÀNH CHO KHOA, BỘ MÔN:
Người duyệt (chấm sơ bộ):
Đơn vị:
Ngày bảo vệ:
Điểm tổng kết:
Nơi lưu trữ luận văn:
Trang 3TRƯỜNG ĐH BÁCH KHOA CỘNG HÕA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN – ĐIỆN TỬ Độc Lập – Tự Do – Hạnh Phúc
o0o Ngày tháng năm 2012
PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người hướng dẫn/phản biện)
1 Đề tài: XÂY DỰNG CÁC DỊCH VỤ TỔNG ĐÀI ASTERISK DỰA TRÊN LẬP TRÌNH PHPAGI
2 Họ tên người hướng dẫn: TS NGUYỄN MINH HOÀNG
3 Tổng quát về bản thuyết minh:
5 Những ưu điểm chính của LVTN:
9 Đánh giá chung (bằng chữ: giỏi, khá, TB): Điểm ………
Ký tên (ghi rõ họ tên)
Trang 4TRƯỜNG ĐH BÁCH KHOA CỘNG HÕA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN – ĐIỆN TỬ Độc Lập – Tự Do – Hạnh Phúc
o0o Ngày tháng năm 2012
PHIẾU CHẤM BẢO VỆ LVTN
(Dành cho người hướng dẫn/phản biện)
1 Đề tài: XÂY DỰNG CÁC DỊCH VỤ TỔNG ĐÀI ASTERISK DỰA TRÊN LẬP
TRÌNH PHPAGI
2 Họ tên người hướng dẫn: TS NGUYỄN MINH HOÀNG
3 Tổng quát về bản thuyết minh:
5 Những ưu điểm chính của LVTN:
9 Đánh giá chung (bằng chữ: giỏi, khá, TB): Điểm ………
Ký tên (ghi rõ họ tên)
Trang 5Đồng thời chúng em cũng muốn gửi lời cảm ơn sâu sắc đến công ty Lotus-Asia, đặc biệt là anh Nguyễn Trung Tín đã hỗ trợ và góp ý tận tình trong quá trình thực tập và thực hiện luận văn tại công ty
Bên cạnh đó, chúng em muốn nói lời cảm ơn đến những giáo viên đã đứng trên bục giảng truyền đạt kinh nghiệm, kiến thức cho sinh viên trong suốt 4 năm đại học vừa qua Cuối cùng, chúng con cũng chân thành cảm ơn sự động viên và sự hỗ trợ của gia đình và cha mẹ trong suốt thời gian học tập Đặc biệt, chúng con xin gửi lời cảm ơn trân trọng nhất đến cha mẹ, người đã sinh ra và nuôi dưỡng chúng con nên người Sự quan tâm, lo lắng và hy sinh lớn lao của cha mẹ luôn là động lực cho chúng con cố gắng phấn đấu trên con đường học tập của mình Một lần nữa, chúng con xin gửi đến cha mẹ sự biết
ơn sâu sắc nhất
Hồ Chí Minh, ngày tháng 01 năm 2012
Phạm Cao Cường Nguyễn Minh Huy
Trang 6GIỚI THIỆU ĐỀ TÀI
Công nghệ VoIP ra đời đã mang lại những hữu ích cho người sử dụng với nhiều tính năng hữu ích như: các cuộc gọi nội bộ không mất phí, chuyển tiếp cuộc gọi cuộc gọi chờ… Đặc biệt, hệ thống tổng đài dựa trên công nghệ VoIP mang tính ứng dụng rất cao,
có thể cung cấp cho khách hàng những dịch vụ thiết thực trong cuộc sống Không chỉ dừng lại ở những dịch vụ đơn thuần, người sử dụng mong muốn có được nhiều tiện ích hơn, nhiều dịch vụ tốt hơn, hệ thống Asterisk có thể đáp ứng vấn đề này cho khách hàng của mình một cách tốt nhất
Đề tài luận văn này tập trung nghiên cứu xây dựng các dịch vụ trên tổng đài Asterisk Các dịch vụ được triển khai trong đề tài này bao gồm: dịch vụ báo thức, quà tặng
âm nhạc, radio streamline, tra cứu điểm thi đại học, tư vấn trực tiếp cho khách hàng Bên cạnh đó, hệ thống cũng có khả năng tự động tính phí các dịch vụ cho cả thuê bao trả trước
và trả sau Đây cũng là một trong số nhiều dịch vụ mà khách hàng hiện đang quan tâm và
sử dụng
Các dịch vụ này được thực hiện dựa trên giao tiếp giữa Asterisk và AGI, sử dụng ngôn ngữ lập trình PHPAGI để cung cấp những thông tin trên cơ sở dữ liệu của hệ thống cho khách hàng Dựa trên PHPAGI, các dịch vụ có thể được mở rộng một cách linh hoạt, đáp ứng được nhu cầu thực tế của khách hàng Qua đó, các doanh nghiệp có thể sử dụng
để tăng tính năng cho tổng đài nhằm chăm sóc khách hàng tốt hơn
Trang 7TÓM TẮT LUẬN VĂN
Cấu trúc đề tài chia làm 6 chương, nội dung đề tài bao quát đầy đủ các vấn đề cơ bản
về tổng đài Asterisk và xây dựng tổng đài dựa trên AGI Với nội dung chính của từng chương được mô tả như sau:
Chương 1: Tổng quan Chương này giới thiệu về mục tiêu, nội dung của đề tài
Chương 2: Hệ thống Astersik Chương này nhằm mục đích cung cấp cho người đọc kiến thức cơ bản về công nghệ VoIP và hệ thống Asterisk
Chương 3: Hệ cơ sở dữ liệu MySQL, giới thiệu về phần mềm quản trị cơ sở dữ liệu MySQL và hướng dẫn cách cài đặt MySQL cho hệ thống
Chương 4: Lập trình ứng dụng qua hệ thống AGI Chương này trình bày tổng quan về AGI, sơ đồ giao tiếp, quá trình hoạt động và cách sử dụng AGI với ngôn ngữ lập trình PHP
Chương 5: Các dịch vụ thực hiện dựa trên AGI Chương này trình bày các dịch vụ mà nhóm đã thực hiện được bằng PHPAGI
Chương 6: Tổng kết và hướng phát triển đề tài Chương này tổng kết lại toàn bộ đề tài
và hướng phát triển đề tài luận văn
Trang 8MỤC LỤC
LỜI CẢM ƠN V GIỚI THIỆU ĐỀ TÀI VI TÓM TẮT LUẬN VĂN VII MỤC LỤC VIII
CHƯƠNG 1: TỔNG QUAN 1
CHƯƠNG 2: HỆ THỐNG ASTERISK 3
2.1 GIỚI THIỆU VỀ VOIP 3
2.1.1 Khái niệm: 3
2.1.2 Ưu nhược điểm của VoIP: 3
2.1.3 Các thành phần trong mạng VoIP: 4
2.1.4 Phương thức hoạt động: 5
2.1.5 Các giao thức của VoIP: 6
2.2 GIỚI THIỆU HỆ THỐNG ASTERISK 8
2.2.1 Cấu hình hệ thống Asterisk: 8
2.2.2 Cấu hình khai báo dùng giao thức SIP: 9
2.2.3 Contexts- các ngữ cảnh: 11
CHƯƠNG 3: HỆ CƠ SỞ DỮ LIỆU MYSQL 13
3.1 GIỚI THIỆU MYSQL 13
3.2 ĐẶC ĐIỂM CỦA MYSQL 13
3.2.1 Tính linh hoạt: 13
3.2.2 Tính thực thi cao: 13
3.2.3 Có thể sử dụng ngay: 13
3.2.4 Hỗ trợ giao dịch mạnh: 14
3.2.5 Chế độ bảo mật dữ liệu mạnh: 14
3.2.6 Dễ dàng quản lý: 14
Trang 93.2.7 Mã nguồn mở tự do và hỗ trợ 24/7: 14
3.2.8 Tổng chi phí thấp nhất: 15
3.3 KHÁI NIỆM CƠ BẢN VỀ CƠ SỞ DỮ LIỆU (CSDL) 15
3.4 GIỚI THIỆU VỀ PHPMYADMIN 15
3.5 CÀI ĐẶT MYSQL VÀ PHPMYADMIN TRÊN UBUNTU 16
3.6 XÂY DỰNG CƠ SỞ DỮ LIỆU 17
CHƯƠNG 4: LẬP TRÌNH ỨNG DỤNG DỰA VÀO GIAO TIẾP AGI 22
4.1 GIỚI THIỆU 22
4.2 SƠ ĐỒ GIAO TIẾP 22
4.3 QUÁ TRÌNH THỰC HIỆN KẾT NỐI ASTERISK VÀ AGI 23
4.5 AGI DEBUGGING 26
4.6 PHPAGI- THƯ VIỆN LỚP SỬ DỤNG NGÔN NGỮ PHP 27
4.6.1 Giới thiệu về PHPAGI 27
4.6.2 Cấu trúc file của PHPAGI 27
4.7 GỌI MỘT AGI SCRIPT TỪ DIAPLAN 28
4.8 LẬP TRÌNH AGI SCRIPT BẰNG PHP 28
CHƯƠNG 5: CÁC DỊCH VỤ THỰC HIỆN DỰA TRÊN AGI 30
5.1 GIỚI THIỆU TỔNG QUAN VỀ HỆ THỐNG 30
5.2 DỊCH VỤ BÁO THỨC: 31
5.2.1 Nhận yêu cầu từ người sử dụng 31
5.2.2 Hoạt động của hệ thống tổng đài 32
5.3 DỊCH VỤ QUÀ TẶNG ÂM NHẠC 33
5.3.1 Nhận yêu cầu từ người sử dụng 33
5.3.2 Hoạt động của hệ thống 34
5.4 DỊCH VỤ RADIO STREAMLINE 35
5.4.1 Nhận yêu cầu từ người sử dụng 35
5.4.2 Hoạt động của hệ thống 36
5.5 DỊCH VỤ TRA CỨU ĐIỂM THI ĐẠI HỌC 37
Trang 105.5.1 Nhận yêu cầu từ người sử dụng 37
5.5.2 Hoạt động của hệ thống 38
5.6 DỊCH VỤ IVR 39
5.6.1 Nhận yêu cầu từ người sử dụng 39
5.6.2 Hoạt động của hệ thống 40
5.7 TÍNH PHÍ CÁC DỊCH VỤ CỦA HỆ THỐNG TỔNG ĐÀI 40
CHƯƠNG 6: 42
TỔNG KẾT VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 42
6.1 KẾT QUẢ ĐẠT ĐƯỢC 42
6.2 HƯỚNG PHÁT TRIỂN ĐỀ TÀI 43
6.2.1 Giới thiệu về Web service 43
6.2.2 Kết hợp giữa AGI và Web Service trong tổng đài Asterisk 45
TÀI LIỆU THAM KHẢO 46
PHỤ LỤC 1: CÀI ĐẶT ASTERISK 47
PHỤ LỤC 2: CÁC LỆNH THAM KHẢO TRONG AGI 49
PHỤ LỤC 3: CÁC LỆNH ĐƯỢC SỬ DỤNG VỚI MYSQL 52
PHỤ LỤC 4: FILE CẤU HÌNH HỆ THỐNG 56
Trang 11CÁC TỪ VIẾT TẮT
A
AGI Asterisk Gateway Interface
ARP Address Resolution Protocol
IVR Interactive voice response
IETF Internet Engineering Task Force
RTCP Real Time Control Protocol
RTP Real Time Transport Protocol
SQL Structure Query Language
STDIN standard input
STDOUT standard output
STSERR standard error
SOAP Simple Object Access Protocal
Trang 12UDP Unreliable Datagram Protocol URL Uniform Resource Locator
V
VoIP Voice over Internet Protocol
Trang 13DANH MỤC HÌNH
HÌNH 2.1 CẤU HÌNH CỦA MẠNG ĐIỆN THOẠI IP 5
HÌNH 2.2 QUÁ TRÌNH THỰC HIỆN CUỘC GỌI GIỮA HAI MÁY IP PHONE 6
HÌNH 2.3 GIAO THỨC SIP 7
HÌNH 2.4 SƠ ĐỒ GIAO TIẾP TỔNG QUÁT CỦA ASTERISK 8
HÌNH 3.1 ĐĂNG NHẬP VÀO PHPMYADMIN 17
HÌNH 3.2 TRANG CHÍNH PHPMYADMIN 18
HÌNH 3.3 BƯỚC NHẬP TÊN DATABASE VÀO MYSQL 18
HÌNH 3.4 BƯỚC NHẬP CÁC TRƯỜNG DATABASE VÀO MYSQL 19
HÌNH 3.5 KẾT QUẢ NHẬP CÁC TRƯỜNG DATABASE VÀO MYSQL 19
HÌNH 3.6 BƯỚC NHẬP DỮ LIỆU DATABASE VÀO MYSQL 20
HÌNH 3.7 KẾT QUẢ NHẬP DỮ LIỆU DATABASE VÀO MYSQL 20
HÌNH 3.8 KẾT QUẢ DATABASE VÀO MYSQL XEM TRÊN UBUNTU 21
HÌNH 4.1 SƠ ĐỒ GIAO TIẾP HỆ THỐNG ASTERISK VÀ AGI 22
HÌNH 4.2 QUÁ TRÌNH GIAO TIẾP GIỮA ASTERISK VÀ AGI SCRIPT 23
HÌNH 4.3 QUÁ TRÌNH HOẠT ĐỘNG CỦA AGI 25
HÌNH 4.4 HOẠT ĐỘNG CỦA AGI CÓ KẾT NỐI DỮ LIỆU BÊN NGOÀI 26
HÌNH 4.5 AGI DEBUG 27
HÌNH 5.1 LƯU ĐỒ GIẢI THUẬT DỊCH VỤ BÁO THỨC 31
HÌNH 5.2 LƯU ĐỒ GIẢI THUẬT DỊCH VỤ QUÀ TẶNG ÂM NHẠC 33
HÌNH 5.3 CƠ SỞ DỮ LIỆU CỦA DỊCH VỤ QUÀ TẬNG ÂM NHẠC 34
HÌNH 5.4 LƯU ĐỒ GIẢI THUẬT DỊCH VỤ RADIO STREAMLINE 35
HÌNH 5.5 CƠ SỞ DỮ LIỆU CỦA DỊCH VỤ RADIO STREAMLINE 36
HÌNH 5.6 LƯU ĐỒ GIẢI THUẬT DỊCH VỤ TRA CỨU ĐIỂM THI ĐẠI HỌC 37
HÌNH 5.7 CƠ SỞ DỮ LIỆU CỦA DỊCH VỤ TRA CỨU ĐIỂM THI ĐẠI HỌC 38
HÌNH 5.8 LƯU ĐỒ GIẢI THUẬT DỊCH VỤ IVR 40
HÌNH 5.9 CƠ SỞ DỮ LIỆU CỦA DỊCH VỤ TRẢ TRƯỚC 40
HÌNH 5.10 CƠ SỞ DỮ LIỆU CỦA DỊCH VỤ TRẢ SAU 41
HÌNH 6.1 HOẠT ĐỘNG CỦA DCOM 43
HÌNH 6.2 KIẾN TRÖC WEB SERVICE 44
Trang 14HÌNH 6.3 PHỐI HỢP GIỮA CÁC ỨNG DỤNG 44 HÌNH 6.4 KẾT NỐI GIỮA ASTERISK VÀ WEB SERVICE 45
Trang 15Internet đang đi tiên phong trong việc mở ra các hình thức mới cho việc liên lạc của con người như e-mail, nói chuyện tại chỗ (live chat) và news-group Tuy vậy Internet cũng có thể được sử dụng cho các hình thức liên lạc cổ điển như người dùng có thể gọi điện thoại bằng Internet Khi gọi điện thoại qua Internet thì tiếng nói của người gọi và tiếng nói của người nhận sẽ được chia nhỏ thành các gói tin Các gói tin này được chuyển đi qua mạng bằng cách
sử dụng giao thức TCP/IP của Internet Đây chính là công nghệ VoIP (Voice Over Internet Protocol) VoIP là một cơ hội tốt để thiết kế các hệ thống truyền thông Multimedia toàn cầu
có thể thay thế mạng viễn thông hiện nay về mặt chức năng mà không làm trở ngại đến di sản công nghệ cũ đã tồn tại từ lâu đời
Hiện nay, các doanh nghiệp đều đã triển khai hệ thống tổng đài dựa trên công nghệ VoIP nhằm mục đích chăm sóc khách hàng ngày càng tốt hơn Bên cạnh việc quản lý thông tin và tăng mối quan hệ với khách hàng, nhiều doanh nghiệp cũng đã tận dụng các tiện ích của tổng đài để xây dựng các dịch vụ thiết thực cho khách hàng như: quà tặng âm nhạc, tra cứu điểm thi đại học… Với việc xây dựng các dịch vụ này, hệ thống tổng đài không chỉ đơn thuần được dùng cho việc quan hệ khách hàng mà còn có thể sử dụng như là một sản phẩm đem lại lợi nhuận cho doanh nghiệp Khách hàng có thể gọi vào tổng đài để sử dụng các tính năng của nó
và doanh nghiệp sẽ tính phí cho các những lần sử dụng
Những năm gần đây, với sự bùng nổ của thông tin di động, người tiêu dùng mong muốn nhiều tiện ích phong phú như: gửi và nhận bài hát kèm theo lời nhắn cho bạn bè hay người thân, hoặc tra cứu thông tin một cách nhanh chóng và chính xác… Hiểu rõ mong muốn của
Trang 161.2 Nội dung của đề tài
Với mong muốn giải quyết vấn đề trên, đề tài luận văn ở đây nghiên cứu xây dựng dịch
vụ trên tổng đài Asterisk Các dịch vụ này được triển khai nhờ vào tính năng mở rộng của tổng đài Asterisk thông qua giao tiếp với AGI Asterisk dựa vào AGI thực hiện những tính năng mà Asterisk thuần túy không thực hiện được, bên cạnh đó có thể sử dụng nguồn tài nguyên bên ngoài như Database hay Webservice để cung cấp và lưu trữ thông tin khách hàng Bằng giải pháp này, doanh nghiệp có thể dễ dàng phát triển các ứng dụng theo ý của mình PHPAGI được sử dụng là ngôn ngữ lập trình cho việc triển khai các ứng dụng của hệ thống tổng đài Asterisk
Các dịch vụ được triển khai trong đề tài luận văn này sẽ là:
- Dịch vụ báo thức
- Dịch vụ quà tặng âm nhạc
- Dịch vụ radio streamline
- Dịch vụ tra cứu điểm thi đại học
- Dịch vụ tư vấn trực tiếp với điện thoại viên
Bên cạnh đó, hệ thống còn có khả năng tự động tính phí cho cả thuê bao trả trước và trả sau
1.3 Công việc thực hiện
- Nghiên cứu về tổng đài VoIP, cụ thể là Asterisk
- Xây dựng cơ sở dữ liệu cho hệ thống, sử dụng MySQL
- Nghiên cứu hoạt động của AGI và ngôn ngữ lập trình PHPAGI
- Xây dựng các dịch vụ bằng PHPAGI
1.4 Giới hạn của đề tài
Đề tài này chưa thể tương tác tiếng Việt với khách hàng, để có thể thực hiện được tính năng này cần phải được hỗ trợ thêm cho tổng đài khả năng nhận diện và trả lời bằng tiếng Việt cho khách hàng
Trang 17- Ở điện thoại thông thường, tín hiệu thoại được lấy mẫu với tần số 8 KHz sau đó lượng
tử hóa 8 bit/mẫu và được truyền với tốc độ 64 KHz đến mạng chuyển mạch rồi truyền tới đích Ở phía thu, tín hiệu này sẽ được giải mã thành tín hiệu ban đầu
- Công nghệ VoIP cũng 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 cũng được số hóa, nhưng sau đó thay vì truyền trên mạng PSTN qua các trường chuyển mạch, tín hiệu thoại được nén xuống tốc độ thấp rồi đóng gói, truyền qua mạng IP Tại bên thu, các luồng thoại sẽ được giải nén thành các luồng PCM 64 rồi truyền tới thuê bao
bị gọi
- VoIP có thể vừa thực hiện mọi loại cuộc gọi như trên mạng điện thoại kênh truyền thống (PSTN) đồng thời truyền dữ liệu trên cơ sở mạng truyền dữ liệu Do các ưu điểm về giá thành dịch vụ và sự tích hợp nhiều loại hình dịch vụ nên VoIP hiện nay được triển khai một cách rộng rãi
- Dịch vụ điện thoại VoIP là dịch vụ ứng dụng giao thức IP, nguyên tắc của VoIP bao gồm việc số hoá tín hiệu tiếng nói, thực hiện việc nén tín hiệu số, chia nhỏ các gói nếu cần và truyền gói tin này qua mạng, tới nơi nhận các gói tin này được ráp lại theo đúng thứ tự của bản tin, giải mã tín hiệu tương tự phục hồi lại tiếng nói ban đầu
2.1.2 Ưu nhược điểm của VoIP:
Ưu điểm:
- Gọi điện thoại giá rẻ: đây là ưu điểm nổi bật nhất của VoIP Sử dụng công nghệ VoIP
có thể gọi điện thoại đường dài hoặc điện thoại ra nước ngoài với giá rẻ tương đương với giá gọi nội hạt
- Tính thống nhất: hệ thống VoIP có thể tích hợp cả mạng thoại, mạng số liệu và mạng báo hiệu Các tín hiệu thoại, dữ liệu, báo hiệu có thể cùng đi trên một mạng IP Việc này sẽ
Trang 18Chương 2: Hệ thống Asterisk
giảm đáng kể chi phí đầu tư
- Khả năng mở rộng: hệ thống VoIP có thể được mở rộng thêm nhiều loại dịch vụ, nhiều tính năng mới
Cấu hình chuẩn của mạng điện thoại IP có thể bao gồm các phần tử sau:
Thiết bị đầu cuối kết nối với mạng IP:
Softphone và máy tính cá nhân (PC) : Bao gồm 1 headphone, 1 phần mềm và 1 kết nối
Internet Các phần mềm miễn phí phổ biến như Skype, Ekiga, GnomeMeeting, Microsoft Netmeeting, SIPSet,
Điện thoại truyền thông với IP adapter: Để sử dụng dịch vụ VoIP thì máy điện thoại
thông dụng phải gắn với 1 IP adapter để có thể kết nối với VoIP server Adapter là 1 thiết bị
có ít nhất 1 cổng RJ11 (để gắn với điện thoại) , RJ45 (để gắn với đường truyền Internet hay PSTN) và 1 cổng cắm nguồn
IP phone : Là các điện thoại dùng riêng cho mạng VoIP Các IP phone không cần
VoIP Adapter bởi chúng đã được tích hợp sẵn bên trong để có thể kết nối trực tiếp với các VoIP server
Mạng truy nhập IP: Là các loại mạng dữ liệu sử dụng giao thức TCP/IP, phổ biến nhất
là mạng Internet
Gateway: Là thành phần giúp chuyển đổi tín hiệu analog sang tín hiệu số (và ngược
lại) Có 3 loại gateway:
Gateway truyền tải kênh thoại
Gateway điều khiển truyền tải kênh thoại
Gateway báo hiệu
VoIP server: là các máy chủ trung tâm có chức năng định tuyến và bảo mật cho các
cuộc gọi VoIP
Trong mạng H.323 chúng được gọi là gatekeeper
Trang 19IP Network
PC
Telephone
M¹ng chuyÓn m¹ch kªnh
Telephone PC
Hình 2.1 Cấu hình của mạng điện thoại IP
2.1.4 Phương thức hoạt động:
- VoIP chuyển đổi tín hiệu giọng nói thông qua môi trường mạng (IP based network)
Do vậy, trước hết giọng nói (voice) sẽ phải được chuyển đổi thành các dãy bit kĩ thuật số (digital bits) và được đóng gói thành các packet để sau đó được truyền tải qua mạng IP network và cuối cùng sẽ được chuyển lại thành tín hiệu âm thanh đến người nghe
- Tiến trình hoạt động của VoIP thông qua 2 bước:
Call Setup: trong quá trình này, người gọi sẽ phải xác định vị trí ( thông qua địa chỉ
của người nhận) và yêu cầu 1 kết nối để liên lạc với người nhận Khi địa chỉ người nhận được xác định là tồn tại trên các proxy server thì các proxy server giữa 2 người sẽ thiết lập 1 cuộc kết nối cho quá trình trao đổi dữ liệu voice
Voice data processing: Tín hiệu giọng nói (analog) sẽ được chuyển đổi sang tín hiệu
số ( digital) rồi được nén lại nhằm tiết kiệm đường truyền (bandwidth) sau đó sẽ được mã hóa (tính năng bổ sung nhằm tránh các bộ phân tích mạng _sniffer ) Các voice samples sau đó sẽ được chèn vào các gói dữ liệu để được vận chuyển trên mạng Giao thức dùng cho các gói
Trang 20Chương 2: Hệ thống Asterisk
voice này là RTP (Real-Time Transport Protocol) Một gói tin RTP có các field đầu chứa dữ liệu cần thiết cho việc biên dịch lại các gói tin sang tín hiệu voice ở thiết bị người nghe Các gói tin voice được truyền đi bởi giao thức UDP Ở thiết bị cuối, tiến trình được thực hiện ngược lại
- Quá trình thực hiện cuộc gọi giữa hai máy IP phone:
Hình 2.2 Quá trình thực hiện cuộc gọi giữa hai máy IP phone
2.1.5 Các giao thức của VoIP:
- VoIP cần 2 loại giao thức : Signaling protocol và Media Protocol
Signaling Protocol: điều khiển việc cài đặt cuộc gọi Các loại signaling protocols bao
gồm: H.323, SIP, MGCP, Megaco/H.248 và các loại giao thức dùng riêng như UNISTIM, SCCP, Skype, CorNet-IP,…
Media Protocols: điều khiển việc truyền tải voice data qua môi trường mạng IP Các
loại Media Protocols như: RTP ( Real-Time Protocol), RTCP (RTP control Protocol), SRTP (Secure Real-Time Transport Protocol), và SRTCP (Secure RTCP)
- Trong đề tài luận văn giao thức được sử dụng là giao thức SIP
SIP (Session Initiation Protocol) được phát triển bởi IETF ( Internet Engineering Task Force), đây là 1 giao thức kiểu diện ký tự, nó đơn giản hơn giao thức H.323 Nó giống với HTTP, hay SMTP Gói tin (messages) bao gồm các header và phần thân ( message body) SIP
là 1 giao thức ứng dụng ( applicationprotocol), sử dụng port 5060 để liên lạc và chạy trên các giao thức UDP, TCP và STCP
Trang 21Chương 2: Hệ thống Asterisk
Hình 2.3 Giao thức SIP
Các thành phần trong SIP network :
Một khía cạnh khác biệt của SIP đối với các giao thức xử lý cuộc gọi IP khác là nó không
sử dụng bộ điều khiển Gateway Nó không dùng khái niệm Gateway/ bộ điều khiển Gateway nhưng nó dựa vào mô hình client/server
Server SIP có hai loại:
- Proxy server nhận một yêu cầu từ client và quyết định server kế tiếp mà yêu cầu sẽ đi
đến Proxy này có thể gửi yêu cầu đến một server khác
- Redirect server hoặc UAS Đáp ứng sẽ được truyền cùng đường với yêu cầu nhưng
theo chiều ngược lại Proxy server hoạt động như là client và server Redirect server sẽ không chuyển yêu cầu nhưng sẽ chỉ định client tiếp xúc trực tiếp với server kế tiếp, đáp ứng gửi lại client chứa địa chỉ của server kế tiếp Nó không hoạt động được như là một client, nó không chấp nhận cuộc gọi
Registrar: là một server chấp nhận yêu cầu REGISTER Một Registrar được xếp đặt
với một Proxy hoặc một server gửi lại và có thể đưa ra các dịch vụ định vị Registrar được dùng để đăng ký các đối tượng SIP trong miền SIP và cập nhật vị trí hiện tại của chúng Một miền SIP thì tương tự với một vùng H.323
UA (User Agent): là một ứng dụng chứa cả UAC (User Agent Client) và UAS
UAC (User Agent Client): đây là phần người sử dụng được dùng để khởi tạo
một yêu cầu SIP tới server SIP hoặc UAS
UAS (User Agent Server): là một ứng dụng server giao tiếp với người dùng khi
yêu cầu SIP được chấp nhận và trả lại một đáp ứng đại diện cho người dùng
Trang 22Chương 2: Hệ thống Asterisk
2.2 Giới thiệu hệ thống Asterisk
Asterisk là phần mềm nguồn mở, được viết bằng ngôn ngữ C, ra đời năm 1999 bởi MarkSpencer, đầu tiên được thiết kế và triển khai trên GNU/Linux nền x86 (của Intel) Hiện nay Asterisk có thể chạy trên các hệ điều hành như: Mac OS X, FreeBSD, OpenBSD và Microsoft Windows
Asterisk được xem như một tổng đài nội bộ riêng - PBX (Private Branch eXchange) Ngoài những tính năng của một tổng đài PBX thông thường, Asterisk còn được tích hợp cả chức năng chuyển mạch TDM và chuyển mạch VoIP, có khả năng mở rộng đáp ứng nhu cầu cho từng ứng dụng như mở rộng giao tiếp với mạng PSTN (Public Switched Telephone Network)
Những tiện lợi của hệ thống: giá cước rẻ, dễ sử dụng, đầy đủ các tính năng của một tổng đài và còn hơn thế nên đã có nhiều hệ thống Asterisk được cài đặt thành công trên thế giới Nhiều doanh nghiệp, công ty đã và đang triển khai hệ thống tạo liên lạc bên trong và ra cả mạng ngoài thông qua mạng thoại và Internet.[1]
Ta có thể thấy được sơ đồ giao tiếp tổng quát của Asterisk qua hình sau
Hình 2.4 Sơ đồ giao tiếp tổng quát của Asterisk
2.2.1 Cấu hình hệ thống Asterisk:
Cấu hình Channel interfaces:
Phần này giới thiệu các file cấu hình cho các Asterisk channel drivers
Asterick có thể được cấu hình với nhiều mục đích khác nhau, nhưng mô hình thông
thường nhất là Client/Server Mô hình này cho phép các client (hay còn gọi là UAC – user agent client) kết nối vào server là Asterisk (hay còn gọi là UAS – User Agent Server) Các
Trang 23Chương 2: Hệ thống Asterisk
UAC là nơi sinh ra các session trong khi UAS thì xử lý thụ động các session nhận được dựa trên tập hợp rule có sẳn
Ta có thể cấu hình Asterisk trong bằng cách edit trực tiếp các file cấu hình trong
/etc/asterisk Mỗi ứng dụng riêng của Asterisk như voicemail, music-on-hold, meetme, conference, iax … đều có configuration riêng của mình, tuy nhiên có 2 file cấu hình quan trọng nhất là sip.conf và extensions.conf :
- Sip.conf : File cấu hình về các thông tin của các UAC như username, password, IP,
type, security, codec, là thành phần căn bản nhất lưu giử thông tin trong Asterisk
- Extensions.conf: File cấu hình về các luật định tuyến cuộc gọi, luật quay số, các extension trong ngoài và những tính năng đặc biệt khác Extensions.conf là file quan trọng
nhất trong bất kỳ cấu hình Asterisk nào
Các file cấu hình khác:
- Voicemail.conf: File cấu hình cho hệ thống voice-mail của asterisk Asterisk có thể dùng
lệnh Sendmail trên CentOS để gởi mail đến cho các địa chỉ được lưu trong file cấu hình này
- system.conf: File này nằm ngoài /etc, là file chứa thông số index, driver dành cho Linux
khi kích hoạt các thiết bị Telephony cắm trực tiếp vào Asterisk thông qua cổng PCI
- chan_dahdi.conf: Cũng thuộc module DAHDI, nhưng là file kết nối các thiết bị
Telephony đã được khai báo vào hệ thống chính của Asterisk
- Iax(2).conf: Các thông số về IAX (inter-asterisk protocol) dùng khi kết nối 2 asterisk
box với nhau
- MeetMe.conf: Một chức năng tạo room conference căn bản
2.2.2 Cấu hình khai báo dùng giao thức SIP:
Phần khai báo Chung
Trong file sip.conf có section [general] dùng để khai báo các thông số chung cho tất cả
các kênh sip trong toàn bộ tập tin này, nhưng các thông số đó có thể mang giá trị khác trong phần khai báo trên các kênh riêng để phù hợp với kênh đó Sau đây là các thông số chính:
Allow/disallow: Định nghĩa sử dụng các codec
Bindaddr: Địa chỉ IP mà client kết nối đến kênh này, nếu thông số này được khai báo
là 0.0.0.0 cho phép tất cả các địa chỉ IP có thể kết nối đến kênh này
Trang 24Chương 2: Hệ thống Asterisk
Context : Tất cả các cuộc gọi mặc định sẽ được chuyển đến ngữ cảnh này ngoại trừ
phần dưới file cấu hình có khai báo ngữ cảnh khác
Bindport: Cổng SIP UDP mà client cần kết nối đến
Maxexpirey: Thời gian tối đa để đăng ký, đơn vị tính bằng giây
Defaultexpirey: Thời gian mặc định để đăng ký, đơn vị tính bằng giây
Register: Để kết nối giao tiếp với server khác
Khai báo kênh SIP:
Phần này sẽ khai báo các kênh SIP dành riêng cho từng điện thoại IP SIP phone:
[name]: Đây là phần khai báo máy điện thoại IP SIP, có thể là ký tự nhưng thường là các
con số quay vì trên các phím điện thoại thường là các con số mà thôi
Type: Kiểu kết nối thông tin user, peer, hay friend
Host: Địa chỉ IP hay tên miền mà client kết nối với kênh này, thường dùng là giá trị
“dynamic” cho tất cả client kết nối đến
Secret: Mật khẩu để sử dụng những kênh này Máy điện thoại phía client phải khai báo
thông số trùng với thông số này thì mới sử dụng được
Username: Thiết lập username cho việc chứng thực
Callerid: Thiết lập định danh caller ID
Nat: Thiết lập “yes” hoặc “no” tuỳ việc thiết bị SIP có nằm sau firewall hay không Mailbox: Thiết lập hộp mail cho việc kiểm tra thông điệp từ các user khác
Outgoinglimit: Thiết lập số lượng tối đa cuộc gọi, mà thiết bị có thể thực hiện trong một
Trang 25Dialplan được xem là trung tâm xử lý của Asterisk, nó định nghĩa tất cả các cuộc gọi vào
ra trong tổng đài IP PBX, bao gồm một danh sách những cấu trúc hoặc nhữn bước mà
Asterisk sẽ thực hiện Dialplan được cấu hình qua tập tin extensions.conf, một số khái niệm
cần nắm rõ khi cấu hình dialplan:
Trang 26Chương 2: Hệ thống Asterisk
Ta có thể thiết lập các nhánh tuỳ biến, bằng cách sử dụng những ký tự hoặc ký hiệu để đại diện cho những số co thể chúng ta mong muốn làm cho phù hợp Những hình thức luôn bắt đầu bằng dấu gạch dưới ( _ )
Sau dấu gạch dưới co thể sử dụng 1 hoặc nhiều ký tự sau đây:
- X: những số từ 0-9
- N: những số từ 2-9
- Z: mọi chữ số trừ số 0
- [15-7]: một số hoặc nhiều dãy số đặc biệt
- (period): từ kết hợp 1 hoặc nhiều ký tự
- “.”: dùng cho nhiều số
Để sử dụng tuỳ biến trong Dialplan, đặt tuỳ biến tại tên (số)
Priorities - thứ tự ưu tiên:
Priorities là thứ tự thực hiện các ứng dụng trong dialplan, khi thứ tự “1” được thực hiện thì kế tiếp là ứng dụng tại số thứ tự “2” được thực hiện Kể từ version 1.2 của Asterisk, thay
vì gán một con số cụ thể cho thứ tự thực hiện thì ta co thể gán ký tự “n” cho mọi dòng
“exten=>”, điều này sẽ nói với Asterisk là ứng dụng với thứ tự tiếp theo sẽ được thực hiện
Ví dụ:
Exten=>_1XX,1,Answer()
Exten=>_1XX,n,Dial(SIP/${EXTEN})
Exten=>_1XX,n,Hangup()
Trang 27Chương 3: Hệ cơ sở dữ liệu MySQL
Chương 3: Hệ cơ sở dữ liệu MySQL
3.1 Giới thiệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì MySQL là cơ sở dữ liệu tốc
độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL) [11]
3.2 Đặc điểm của MySQL
3.2.1 Tính linh hoạt:
Máy chủ cơ sở dữ liệu MySQL cung cấp đặc tính linh hoạt, có sức chứa để xử lý các ứng dụng được nhúng sâu với dung lượng chỉ 1MB để chạy các kho dữ liệu đồ sộ lên đến hàng terabytes thông tin Sự linh hoạt về flatform là một đặc tính lớn của MySQL với tất cả các phiên bản của Linux, Unix, và Windows đang được hỗ trợ Và dĩ nhiên, tính chất mã nguồn
mở của MySQL cho phép sự tùy biến hoàn toàn theo ý muốn để thêm vào các yêu cầu thích hợp cho database server
3.2.2 Tính thực thi cao:
Kiến trúc storage-engine cho phép các chuyên gia cơ sở dữ liệu cấu hình máy chủ cơ sở
dữ liệu MySQL đặc trưng cho các ứng dụng đặc thù Dù ứng dụng là một hệ thống xử lý giao dịch tốc độ cao hay web site dung lượng lớn phục vụ hàng triệu yêu cầu mỗi ngày, MySQL có thể đáp ứng khả năng xử lý những đòi hỏi khắt khe nhất của bất kì hệ thống nào Với các tiện ích tải tốc độ cao, đặc biệt bộ nhớ caches, và các cơ chế xử lý nâng cao khác, MySQL đưa ra tất cả các vũ khí cần phải có cho các hệ thống doanh nghiệp khó tính ngày nay
3.2.3 Có thể sử dụng ngay:
Sự đáng tin cậy cao là tiêu chuẩn đảm bảo của MySQL MySQL đưa ra nhiều tùy chọn có thể dùng ngay từ cấu hình tái tạo chủ/tớ tốc độ cao, để các nhà phân phối thứ 3 đưa ra những giải pháp có thể dùng ngay duy nhất cho server cơ sở dữ liệu MySQL
Trang 28Chương 3: Hệ cơ sở dữ liệu MySQL
3.2.4 Hỗ trợ giao dịch mạnh:
MySQL đưa ra một trong số những engine giao dịch cơ sở dữ liệu mạnh nhất trên thị trường Các đặc trưng bao gồm hỗ trợ giao dịch ACID hoàn thiện ( Atomic – tự động, Consistent – thống nhất, Isolated – độc lập, Durable – bền vững), khóa mức dòng không hạn chế, khả năng giao dịch được phân loại, và hỗ trợ giao dịch đa dạng (multi-version) mà người đọc không bao giờ gây trở ngại cho người viết và ngược lại Tính toàn vẹn của dữ liệu cũng phải được bảo đảm trong suốt quá trình server có hiệu lực, các mức giao dịch độc lập được chuyên môn hóa, và phát hiện khóa chết ngay lập tức
3.2.5 Chế độ bảo mật dữ liệu mạnh:
Vì bảo mật dữ liệu cho một công ty là công việc số một của các chuyên gia về cơ sở dữ liệu, MySQL đưa ra tính năng bảo mật đặc biệt chắc chắn dữ liệu sẽ được bảo mật tuyệt đối Trong việc xác nhận truy cập cơ sở dữ liệu, MySQL cung cấp các kĩ thuật mạnh mà chắc chắn chỉ có người sử dụng đã được xác nhận mới có thể truy nhập được vào server cơ sở dữ liệu, với khả năng này để chặn người dùng ngay từ mức máy khách là điều có thể làm được SSH
và SSL cũng được hỗ trợ để chắc chắn các kết nối được an toàn và bảo mật Một đối tượng framework đặc quyền được đưa ra mà người sử dụng chỉ có thể nhìn thấy dữ liệu, các hàm mã hóa và giải mã dữ liệu mạnh chắc chắn rằng dữ liệu sẽ được bảo mật Cuối cùng, tiện ích backup và recovery cung cấp bởi MySQL và các hãng phần mềm thứ 3 cho phép backup logic
và vật lý hoàn thiện cũng như recovery toàn bộ hoặc tại một thời điểm nào đó
cụ quản lý đồ họa cho phép một DBA quản lý, sửa chữa, và điều khiển hoạt động của nhiều server MySQL từ một máy trạm đơn Nhiều công cụ của các hãng phần mềm thứ 3 cũng có sẵn trong MySQL để điều khiển các tác vụ từ thiết kế dữ liệu và ETL, đến việc quản trị cơ sở
dữ liệu hoàn thiện, quản lý công việc, và thực hiện kiểm tra
3.2.7 Mã nguồn mở tự do và hỗ trợ 24/7:
Nhiều công ty lưỡng lự trong việc giao phó toàn bộ cho phần mềm mã nguồn mở vì họ tin họ không thể tìm được một cách hỗ trợ hay mạng lưới an toàn phục vụ chuyên nghiệp, hiện tại, họ tin vào phần mềm có bản quyền để chắc chắn về sự thành công toàn diện cho các
Trang 29Chương 3: Hệ cơ sở dữ liệu MySQL
ứng dụng chủ chốt của họ Những lo lắng của họ có thể được dẹp bỏ với MySQL, sự bồi thường là có trong mạng lưới MySQL
3.2.8 Tổng chi phí thấp nhất:
Bằng cách sử dụng MySQL cho các dự án phát triển mới, các công ty đang thấy rõ việc tiết kiệm chi phí Được hoàn thành thông qua sử dụng server cơ sở dữ liệu MySQL và kiến trúc scale-out, các doanh nghiệp đã tìm ra cái mà họ có thể đạt được ở mức ngạc nhiên về khả năng xử lý Thêm vào đó, tính tin cậy và dễ duy trì của MySQL ở mức trung bình mà người quản trị cơ sở dữ liệu không phải mất nhiều thời gian sửa chữa hay vấn đề thời gian chết
3.3 Khái niệm cơ bản về cơ sở dữ liệu (CSDL)
- Cơ sở dữ liệu (database) có thể hiểu là nơi chứa dữ liệu Có nhiều loại cơ sở dữ liệu khác nhau như cơ sở dữ liệu quan hệ, CSDL hướng đối tượng, CSDL phân tán Hiện nay, trong phần lớn các ứng dụng, người ta thường sử dụng CSDL quan hệ
- Trong mô hình CSDL quan hệ, dữ liệu thường được chia thành các bảng có liên quan với nhau
VD: Ta có 2 bảng:
Bảng 1: Chứa các thông tin về Mã hàng, tên hàng, ngày nhập hàng, giá nhập hàng
Bảng 2: Chứa các thông tin về Mã hàng, ngày bán hàng, giá bán
Hai bảng này có quan hệ với nhau thông qua mã hàng, tức là chỉ cần có mã hàng ở bảng
2, ta có thể tìm ra tên hàng dựa trên mối liên hệ giữa mã hàng và tên hàng lưu ở bảng 1
Người ta gọi các cột trong một bảng là các trường, các dòng trong một bảng là các bản ghi Mỗi trường sẽ có một kiểu dữ liệu xác định Đó có thể là kiểu số, kiểu chuỗi, kiểu ngày tháng
VD về một bảng có chứa thông tin người dùng: Bảng này sẽ có tên là NSD, các cột
(trường) là: Ma_ND, Ten_ND, Tuoi_ND, Matkhau_ND; trong đó Ma_ND có kiểu nguyên, Ten_ND có kiểu chuỗi, Tuoi_ND có kiểu số, Matkhau_ND có kiểu chuỗi [13]
3.4 Giới thiệu về PHPMyAdmin
PHPMyAdmin là công cụ quản trị CSDL MySQL,mục đích chủ yếu của tiện ích này là
tương tác với MySQL ,cung cấp cho người dùng một hệ thống quản trị cơ sở dữ liệu MySQL trên nền Web
Trang 30Chương 3: Hệ cơ sở dữ liệu MySQL
3.5 Cài đặt MySQL và phpmyadmin trên ubuntu
Đăng nhập Ubuntu với tai khoản root
Cài đặt Apache2:
$ apt-get install apache2
Test Apache sever: Mở trình duyệt gõ:
$ apt-get install libapache2-mod-auth-mysql
$ apt-get install php5-mysql
Cài đặt PHPMyAdmin
$ apt-get install phpmyadmin
Mở trình duyệt lên và gõ vào:
Trang 31Chương 3: Hệ cơ sở dữ liệu MySQL
http://localhost/phpmyadmin
Đăng nhập với tài khoản (root) đã đăng ký ở trên
3.6 Xây dựng cơ sở dữ liệu
Chúng ta sẽ sử dụng phpmyadmin để tạo một database trong đó có một table chứa thông tin là điểm thi đại học của các thí sinh
Bước 1: Trên ubuntu mở trình duyệt web và nhập http://localhost/phpmyadmin :
Hình 3.1 Đăng nhập vào phpMyAdmin
Trang 32Chương 3: Hệ cơ sở dữ liệu MySQL
Nhập username và password vào ta được:
Hình 3.2 Trang chính phpMyAdmin Bước 2: Nhập tên database cần tạo vào Create new database Ở đây nhóm chọn tên là
test Sauđó nhập tên bảng chứa thông tin vào name và chọn số trường cần tạo
Hình 3.3 Bước nhập tên database vào MySQL
Trang 33Chương 3: Hệ cơ sở dữ liệu MySQL
Bước 3: Nhập tên cho từng trường, kiểu dữ liệu và chiều dài tối đa dữ liệu vào:
Hình 3.4 Bước nhập các trường database vào MySQL
Bước 4: Nhấn Save ta được
Hình 3.5 Kết quả nhập các trường database vào MySQL
Trang 34Chương 3: Hệ cơ sở dữ liệu MySQL
Bước 5: Nhấn Insert để nhập dữ liệu vào cho bảng:
Hình 3.6 Bước nhập dữ liệu database vào MySQL
Tuần tự nhập dữ liệu vào table bang_diem ta được kết quả như sau:
Hình 3.7 Kết quả nhập dữ liệu database vào MySQL
Trang 35Chương 3: Hệ cơ sở dữ liệu MySQL
Ta có thể kiểm tra table bang_diem trên terminal của Ubuntu bằng cách sau:
Đăng nhập vào mysql: mysql –u root –p
Chọn database cần sử dụng ( ở đây là test): use test
Chọn bảng cần xem thông tin: select * from bang_diem
Ta được kết quả như sau:
Hình 3.8 Kết quả database vào MySQL xem trên Ubuntu
Trang 36Chương 4: Lập trình ứng dụng dựa vào giao tiếp AGI
Chương 4: Lập trình ứng dụng dựa vào giao tiếp AGI
4.1 Giới thiệu
- AGI được viết tắt từ Asterisk Gateway Interface là một chuẩn giao tiếp với Asterisk
giống như giao tiếp CGI trong lập trình web
- AGI cung cấp một giao diện chuẩn để các chương trình bên ngoài có thể điều khiển Diaplan của Asterisk và việc này giúp cho Asterisk có thể thực hiện được những công việc mà nếu dùng những cách thức khác sẽ rất khó khăn
- AGI cho phép Astersik gọi thực thi một chương trình ngoài để mở rộng nhiều chức năng của Astersik như điều khiến các kệnh thoại, phát âm thanh, đọc số DTMF, liên kết với
cơ sở dữ liệu … Các chương trình ngoài được gọi là AGI Script , ta có thể lập trình ra các AGI Script bằng nhiều ngôn ngữ lập trình khác nhau như Perl, PHP, C, C#, Java …
- Để cấu hình hệ thống một cách thuận lợi và đem lại hiệu quả cao, Asterisk đã cung cấp cho lập trình viên rất nhiều hàm liên quan đến AGI, về khía cạnh phát triển ứng dụng AGI xem như rất giống với ngôn ngữ script lập trình web CGI Cái khác chủ yếu là chuyên biệt trong lập trình cấu hình hệ thống Asterisk cụ thể là DialPlan [12]
4.2 Sơ đồ giao tiếp
Hình 4.1 Sơ đồ giao tiếp hệ thống Asterisk và AGI
Thông tin giữa AGI và Asterisk thông qua giao tiếp STDOUT/STDIN
- STDOUT ( standard output): AGI script gửi thông tin đến Asterisk
Trang 37Chương 4: Lập trình ứng dụng dựa vào giao tiếp AGI
- STDIN ( standard input ): Asterisk gửi thông tin về AGI script
- STDERR ( standard error ): Thông tin lỗi
Trước tiên chúng hãy xem cách thức mà Asterisk đã gọi một AGI script:
Exten => 123, 1, AGI( baothuc.php)
Cách gọi một AGI script cũng tương tự như gọi một ứng dụng khác của Asterisk Tuy nhiên, điểm khác biệt cơ bản giữa AGI script và các ứng dụng khác trên Asterisk là ở chỗ nguồn tài nguyên mà AGI sử dụng Trong khi các ứng dụng bên trong Asterisk chỉ sử dụng nguồn tài nguyên từ Asterisk, AGI có thể điều khiển và sử dụng các nguồn tài nguyên ở bên ngoài Do đó Asterisk có thể sử dụng các nguồn tài nguyên này trong quá trình giao tiếp với AGI
Trong sơ đồ trên cho chúng ta thấy AGI có thể giao tiếp với nhiều thành phần khác
nhau Giao tiếp với database thường là với MySQL để lưu trữ thông tin như chi tiết cuộc gọi,
hệ thống tính cước…; giao tiếp với web cho chúng ta phát triển các ứng dụng như kiểm tra
mail; Coffee Maker thực hiện rất nhiều công việc còn lại trong hệ thống Asterisk như kiểm
tra cấu hình hệ thống, liệt kê các extension, kiểm tra password, cấu hình hệ thống Asterisk… Nhìn chung AGI cho phép chúng ta thực hiện nhiều công việc giúp khai thác và quản lý Asterisk một cách hiệu quả nhất [12]
4.3 Quá trình thực hiện kết nối Asterisk và AGI
Giao tiếp giữa Asterisk và AGI script được thực hiện dựa theo một mô hình định sẵn
Hình 4.2 Quá trình giao tiếp giữa Asterisk và AGI Script
Khi một AGI script bắt đầu, Asterisk gửi danh sách các giá trị, cùng với các thông tin cho AGI script trước khi AGI script thực sự hoạt động:
Trang 38Chương 4: Lập trình ứng dụng dựa vào giao tiếp AGI
agi_request: TenFile.agi
agi_channel: Kênh thực hiện gọi
agi_language: Ngôn ngữ được cấu hình
agi_type: Zap/sip hoặc iax2
agi_uniqueid: Một kí hiệu nhận dạng duy nhất cho phiên làm việc này
agi_version:
agi_callerid: Số điện thoại gọi vào
agi_calleridname: Tên của điện thoại gọi vào
Sau khi gửi các giá trị này cho AGI script, Asterisk gửi một khoảng trắng Đây là tín
hiệu cho biết Asterisk đã thực hiện xong việc gửi các giá trị, AGI script sẽ bắt đầu thực hiện công việc
Tiếp theo, AGI sẽ gửi các lệnh cho Asterisk thông qua STDOUT Sau mỗi lệnh, Asterisk lại gửi cho AGI một đáp ứng Công việc này được thực hiện trong suốt quá trình của AGI script [6][12]
Trang 39Chương 4: Lập trình ứng dụng dựa vào giao tiếp AGI
4.4 Quá trình hoạt động của AGI
Như đã đề cập ở phần trước, giao tiếp giữa Asterisk và AGI script được thực hiện thông qua STDIN và STDOUT
Hình 4.3 Quá trình hoạt động của AGI
ASC được kí hiệu cho AGI script, AST kí hiệu cho Asterisk
Hoạt động giao tiếp giữa AGI script và Asterisk đơn giản là những truy vấn và trả lời
được đưa thông qua STDIN/STDOUT
Sau đây là mô hình phức tạp hơn biểu diễn hoạt động của AGI script:
Trang 40Chương 4: Lập trình ứng dụng dựa vào giao tiếp AGI
Hình 4.4 Hoạt động của AGI có kết nối dữ liệu bên ngoài
Mô hình ở trên mô tả một ví dụ về hoạt động của AGI trong đó bao gồm hai thành phần: truy cập vào cơ sở dữ liệu và giao tiếp với web service để sử dụng thông tin Qua đây ta có thể thấy AGI có khả năng kết nối với nhiều nguồn thông tin và dữ liệu khác nhau mà Asterisk không có được [6]
4.5 AGI debugging
- Asterisk cung cấp một phương pháp để debug một AGI script khi nó đang hoạt động
Để có thể debug một AGI, chúng ta đăng nhập vào giao diện CLI của Asterisk và thực hiện câu lệnh sau:
$Agi set debug on
- Sau lệnh này, khi AGI script thực hiện, giao diện CLI sẽ hiển thị như nhau: