Xây dựng hệ thống tổng đài asterisk ứng dụng dịch vụ trả lời tự động câu hỏi về đào tạo cho trường đại học (có code) ........................... Xây dựng hệ thống tổng đài asterisk ứng dụng dịch vụ trả lời tự động câu hỏi về đào tạo cho trường đại học (có code) ........................... Xây dựng hệ thống tổng đài asterisk ứng dụng dịch vụ trả lời tự động câu hỏi về đào tạo cho trường đại học (có code) ........................... Xây dựng hệ thống tổng đài asterisk ứng dụng dịch vụ trả lời tự động câu hỏi về đào tạo cho trường đại học (có code) ........................... Xây dựng hệ thống tổng đài asterisk ứng dụng dịch vụ trả lời tự động câu hỏi về đào tạo cho trường đại học (có code) ...........................
Trang 1ứng dụng dịch vụ trả lời tự động câu hỏi về đào tạo cho Trường Đại Học
Trang 2DANH MỤC CÁC BẢNG BIỂU XI DANH MỤC CÁC TỪ VIẾT TẮT XII
CHƯƠNG 1 TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 MỤC TIÊU 2
1.3 CÔNG VIỆC THỰC HIỆN 2
1.4 PHẦN HẠN CHẾ CỦA ĐỀ TÀI 2
CHƯƠNG 2 CÔNG NGHỆ VOIP VÀ CÁC GIAO THỨC TRUYỀN THỜI GIAN THỰC 3
2.1 GIỚI THIỆU CÔNG NGHỆ VOIP [3] 3
2.1.1 Cấu trúc mạng VoIP 3
2.1.2 Đặc điểm dịch vụ VoIP 4
2.1.3 Quá trình thiết lập kết nối truyền thoại trong mạng VoIP 5
2.1.4 Các yếu tố ảnh hưởng chất lượng dịch vụ trong mạng VoIP [4] 5
2.2 CÁC GIAO THỨC TRUYỀN THÔNG THỜI GIAN THỰC [2] 7
2.2.1 Giao thức RTP 7
2.2.2 Giao thức RTCP 11
CHƯƠNG 3 ASTERISK – TỔNG ĐÀI MÃ NGUỒN MỞ 14
3.1 GIỚI THIỆU ASTERISK [5][11] 14
3.1.1 Kiến trúc Asterisk 16
3.1.2 Cấu trúc thư mục của Asterisk [5] 18
3.2 CENTOS 20
CHƯƠNG 4 MYSQL, AGI VÀ NGÔN NGỮ PHP 21
Trang 3CHƯƠNG 5 XÂY DỰNG DỊCH VỤ TRÊN TỔNG ĐÀI 27
5.1 SƠ ĐỒ NGỮ CẢNH TỔNG THỂ 27
CHƯƠNG 6 KẾT LUẬN 38
6.1 KẾT LUẬN 38
6.2 HƯỚNG PHÁT TRIỂN 38
TÀI LIỆU THAM KHẢO 39
PHỤ LỤC A 40
Trang 4YHÌNH 2-1: CẤU TRÚC MẠNG VOIP [1] 3
HÌNH 2-2: CẤU TRÚC GÓI TIN RTP [2] 9
HÌNH 2-3: GIÁ TRỊ CỦA TRƯỜNG PT (PACKET TYPE) ỨNG VỚI MỖI LOẠI GÓI [2] 11
HÌNH 2-4: CẤU TRÚC GÓI TIN RTCP [2] 12
YHÌNH 3-1: SƠ ĐỒ TỔNG QUAN ASTERISK [11] 15
HÌNH 3-2: KIẾN TRÚC ASTERISK [5] 16
HÌNH 3-3: CÂY THƯ MỤC ASTERISK 18
HÌNH 3-4: GIAO DIỆN CÀI CENTOS [11] 20
YHÌNH 4-1: MÔ HÌNH KẾT NỐI ĐẾN DATABASE 21
HÌNH 4-2: KIỂM TRA KẾT NỐI TỪ ASTERISK ĐẾN ODBC 24
HÌNH 4-3: KIỂM TRA KẾT NỐI TỪ ODBC ĐẾN MYSQL 24
HÌNH 4-4: SƠ ĐỒ ASTERISK GIAO TIẾP AGI [6] 25
YHÌNH 5-1: SƠ ĐỒ NGỮ CẢNH TỔNG THỂ 27
HÌNH 5-2: SƠ ĐỒ NGỮ CẢNH NHÁNH TƯ VẤN TUYỂN SINH CỤ THỂ NHÓM NGÀNH THẠC SĨ 28
HÌNH 5-3: MÔ HÌNH NHÁNH TƯ VẤN TUYỂN SINH CỤ THỂ NHÓM NGÀNH TIẾN SĨ 29
HÌNH 5-4: BẢNG DỮ LIỆU CHƯA TÊN FILE ẬM THANH NHÓM NGÀNH THẠC SĨ 30
HÌNH 5-5: BẢNG DỮ LIỆU CHƯA TÊN FILE ẬM THANH NHÓM NGÀNH TIẾN SĨ 30
HÌNH 5-6: MÔ HÌNH TRA CỨU THÔNG TIN CỤ THỂ TRA CỨU ĐIỂM THI 31
HÌNH 5-7: BẢNG DỮ LIỆU ĐIỂM 32
HÌNH 5-8: MÔ HÌNH CÁC MÁY NHÁNH PHÒNG SAU ĐẠI HỌC 33
Trang 5NGÀNH TIẾN SĨ 35
HÌNH 5-11: LOG DỊCH VỤ TRA CỨU ĐIỂM THI 36
HÌNH 5-12: LOG CUỘC GỌI 37
HÌNH 5-13: LOG CUỘC GỌI TỪ MÁY NHÁNH RA PSTN 37
Trang 6[3] 4 BẢNG 2-2: CÁC LOẠI CODEC 6 YBẢNG 3-1: CHỨC NĂNG CÁC THƯ MỤC CHÍNH CỦA ASTERISK [7] 19
Trang 7DoS Denial of Service
DID Direct Inward Dialing
FXO Foreign eXchange Office
FXS Foreign eXchange Subscriber
HTTP Hyper Text Transport Protocol
IP Internet Protocol
IVR Interactive Voice Response
LAN Local Area Network
WAN Wide Area Network
NIDS Network Intrusion Detection System
PBX Private Branch Exchange
PSTN Public Switched Telephone Network
QoS Quality of Services
RTCP Real-Time Transport Control Protocol
RTP Real-Time Transport Protocol
RSVP Resource reservation protocol
SIP Session Initiation Protocol
TCP/IP TCP/IP protocol suite
UDP User Datagram Protocol
URL Uniform Resource Locator
VoIP Voice over Internet Protocol
Trang 8đã tận dụng được sức mạnh và sự phát triển vượt bậc của mạng IP vốn chỉ được sửdụng để truyền dữ liệu thông thường Tích hợp mở rộng thêm các dịch vụ giá trị giatăng, lợi nhuận phát sinh.
Hình 1-1: Giải pháp VoIP [10].
1.2 Mục tiêu
Phát triển hệ thống Tổng đài đáp ứng được nhu cầu nhiều người cùng sử dụng,chia sẻ thông tin tiện lợi và nhanh chóng Giảm thiểu nhân viên tư vấn trực tổng
Trang 9đài… Mong muốn đáp ứng nhu cầu trên, đề tài này tập trung nghiêm cứu phần mềm
mã nguồn mở Asterisk, song song đó tích hợp xây dựng và sử dụng tài nguyên,database lưu trữ các dữ liệu thông tin cho người dùng phát triển theo từng ý riêng.Các tính năng nghiên cứu, triển khai trong đề tài đồ án này được ứng dụng cho
mô hình trường đại học bao gồm những chức năng sau:
- Tính năng cơ bản của tổng đài IP PBX
- Dịch vu tư vấn tuyển sinh trả lời tự động
- Dịch vụ tra cứu thông tin học vụ, tra cứu đ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 hiện
- Tìm hiểu VoIP và các giao thức truyền thời gian thực RTP, RTCP
- Xây dựng tổng đài Asterisk trên CentOS bằng lệnh linux: Gọi nội bộ, gọi raPSTN bằng trunk, IVR, check time condition, voicemail, moh…
- Tìm hiểu MySQL, tạo cơ sở dữ liệu database
- Tìm hiểu AGI_PHP Asterisk
- Xây dựng dịch vụ trả lời tự động các câu hỏi về đào tạo cho trường đại học
1.4 Phần hạn chế của đề tài
Do hạn chế về mặc thời gian cũng như tùy thuộc vào chất lượng đường truyền
và ngữ cảnh được áp dụng là trường đại học, nên đề tài chỉ dừng lại ở những tínhnăng cơ bản của 1 tổng đài trường đại học cộng thêm các dịch vụ mở rộng, tổng đàivẫn chưa thể tích hợp một số phần mềm đi kèm như: phần mềm quản trị khách hàngCRM, phần mềm tính cước A2billing, hứng tải Kamailio, chống hack và tấncông…
Trang 10mạch gói chia nhỏ các gói tin để truyền đi được sắp xếp theo khuôn dạng quy địnhtrước, đến nơi nhận các gói tin sẽ được sắp xếp lại theo đúng thứ tự và được khôiphục lại tín hiệu ban đầu qua giao thức RTP truyền thời gian thực.
1.1.1 Cấu trúc mạng VoIP
Trong hệ thống mạng VoIP bao gồm:
- Gateway: Chuyển đổi tín hiệu tương tự sang tín hiệu số và ngược lại
- VoIP server: Là trung tâm điều hành
- End user equipments: Thiết bị đầu cuối
Hình 2-1: Cấu trúc mạng VoIP [1].
- Các hình thức kết nối trong mạng VoIP: Computer – computer, computer –phone, phone – phone
1.1.2 Đặc điểm dịch vụ VoIP
Bảng 2-1: So sánh Ưu nhược điểm của VoIP khi truyền thoại [3].
Giảm chi phí: Sử dụng tối ưu băng thông, chi
phí cho một cuộc gọi đường dài bằng chi phí
cho truy cập Internet
Chất lượng dịch vụ: Phụ
thuộc vào chất lượng đường mạng Internet, kỹ thuật nén thoại…
Tính thống nhất: Cơ sở hạ tầng tích hợp cho
nhiều dịch vụ, giảm thiểu số thiết bị
Ảnh hưởng tiếng vọng: Do
độ trễ lớn
Quản lý băng thông: Băng thông được cung
cấp một cách linh hoạt Kỹ thuật nén thoại: Tỉ số nén lớn, có khả năng suy
đoán và tái tạo lại thông tin,
Trang 11tốc độ xử lý của các bộ Codec phải đủ nhanh, cơ sở
hạ tầng của mạng cũng phải được nâng cấp
Khả năng mở rộng: Tính linh hoạt của mạng
IP tạo ra các tính năng dịch vụ mới
Bắt các gói tin thực hiện mã
hóa và giải mã hóa
Giao thức SIP có thể thành mật mã, RTP hỗ trợ thành mật mã phương thức truyền thông trên toàn tuyến
Một số giải pháp chống Hack bằng bản tin Invite độc: Dùng chữ ký số, sử
dụng IP, Sec firewall, SBC, NIDS hệ thống phát hiện xâmnhập mạng, host hệ thống phát hiện xâm nhập,…
1.1.3 Quá trình thiết lập kết nối truyền thoại trong mạng VoIP
Truyền thoại trong mạng VoIP thông thường trải qua 2 bước sau:
- Call Setup: là quá trình thiết lập cuộc gọi, khi đó người gọi yêu cầu proxyserver xác định vị trí, địa chỉ của người nhận , sau đó giữa các proxy servermột đường kết nối sẽ được thiết lập để bắt đầu cho việc trao đổi dữ liệuthoại
- Voice Data Processing: là quá trình thực hiện chuyển đổi từ tín hiệu thoại
Trang 12Các nhà cung cấp dịch vụ VoIP rất quan tâm đến Quality of Services (QoS) chấtlượng dịch vụ:
- Mất gói trên đường truyền
- Độ trễ chấp nhận được là 0.15 – 0.2 giây, cụ thể trong đó:
Thời gian thuật toán mã hóa, giải mã tín hiệu từ bắt đầu đến kết thúcchiếm khoảng: 0.016 đến 0.0375 giây
Do framing và queuing nhiều gói tin đến cùng lúc tại một nút mạngtrên băng thông kênh truyền của mạng LAN, WAN, trễ này do cấuhình mạng không đáp ứng đủ nhu cầu phục vụ nhiều người dùng dẫntới việc xử lý gói tin tại nút mạng không tốt nằm trong khoảng: 0.005– 0.025 giây
Jitter: là hiện tượng các gói tin không đến nơi trong những khoảngthời gian đều nhau Hiện tượng này làm cho cuộc hội thoại bị giật mất
từ 0.02 – 0.04 giây hoặc hơn
- Thuật toán mã hóa đường truyền của mạng VoIP cũng tương tự như mạngchuyển mạch kênh Các thuật toán này khác nhau ở tần số lấy mẫu và số bitmẫu, do đó chất lượng cuộc gọi cũng khác nhau:
Các chuẩn mã hóa tín hiệu được sử dụng trong VoIP có rất nhiều,Bảng dưới đây thể hiện chất lượng cảm nhận (MOS) đối với mỗi loạithuật toán mã hóa tín hiệu
Bảng 2-2: Các loại Codec
Trang 13Một điều cần lưu ý là bản thân RTP không cung cấp một cơ chế nào đảm bảothời gian truyền và cũng không cung cấp bất cứ một cơ chế nào giám sát chất lượng
Trang 14 Việc truyền thoại trong hệ thống, ở bên phát tín hiệu thoại được chiathành những đoạn nhỏ, mỗi phần được thêm vào phần tiêu đề của giaothức RTP Tiêu đề RTP mang thông tin chỉ ra cách mã hóa tín hiệuthoại như là PCM, ADPCM, hoặc LPC… Dựa vào thông tin này, cácbên thu sẽ thực hiện giải mã cho đúng.
Trên đường truyền khả năng xảy ra mất gói và sai lệch về thứ tự cácgói là không tranh khỏi Để giải quyết vấn đề này, phần tiêu đề RTPmang thông tin định thời và số thứ tự các gói, cho phép bên thu khôiphục định thời với nguồn phát Sự khôi phục định thời được tiến hànhđộc lập với từng nguồn phát trong khi thoại Số thứ tự gói có thể được
sử dụng để ước tính số gói bị mất trong khi truyền Các gói thoại RTPđược truyền đi theo các dịch vụ của giao thức UDP để có thể đến nơinhận nhanh nhất có thể
Để giám sát số người tham gia đàm thoại và chất lượng thoại tại mỗithời điểm, mỗi một trạm thoại phải gửi đi một cách định kỳ một góithông tin RR (Reception report) của giao thức RTCP để chỉ ra chấtlượng thu của từng trạm Dựa vào thông tin này mà các thành phầntrong cuộc đàm thoại có thể thỏa thuận với nhau về phương pháp mãhóa thích hợp và điều chỉnh băng thông tương thích
- Hội nghị điện thoại truyền hình:
Tín hiệu thoại và truyền hình, cả hai dòng tín hiệu đều được sử dụngtrong hội nghị thì ứng với mỗi dòng sẽ có một phiên RTP (RTPsession) độc lập Khi đó mỗi một phiên RTP sẽ ứng với một cổng(port number) cho thu phát các gói RTP và một cổng thu phát các góiRTCP Các phiên RTP sẽ được đồng bộ với nhau để cho hình ảnh và
âm thanh cùng nhận được ăn khớp
Các thiết bị đầu cuối chỉ có khả năng thoại cũng có thể tham gia vàocuộc hội nghị truyền hình mà không cần có bất kỳ thiết bị hỗ trợ nào,
Trang 15vì các dòng thông tin thoại và truyền hình là những phiên RTP táchbiệt.
- Translator và Mixer:
Trong trường hợp người dùng có đường kết nối tốc độ thấp tham giavào một hội nghị gồm các thành viên có đường liên kết nối tốc độ caothì tất cả những người tham gia đều buộc phải sử dụng kết nối tốc độthấp cho phù hợp với thành viên mới tham gia Điều này rõ ràng làkhông hiệu quả Để khắc phục, một translator hoặc một mixer đượcđặt giữa hai vùng tốc độ đường truyền cao và thấp để chuyển đổi cách
mã hóa thích hợp giữa hai vùng Điểm khác biệt giữa translator vàmixer là mixer trộn các dòng tín hiệu đưa đến nó thành một dòng dữliệu duy nhất trong khi translator không thực hiện việc trộn dữ liệu
Cấu trúc gói tin RTP: bao gồm phần tiêu đề cố định thường có ở mọi gói RTP
và phần tiêu đề mở rộng phục vụ cho các mục đích nhất định
Trang 16 Extension (1 bit): cũng có vai trò như một bit cờ được sử dụng đểđánh dấu khi có header mở rộng tiếp theo header cố định
CSRC count (4 bit): chỉ rõ số lượng của CSRC (contributing source)
Marker (1 bit): có vai trò như một bit cờ, trạng thái của nó được phụthuộc vào trường payload type
Payload Type (7 bit): chỉ rõ loại thông tin được chứa trong cácgói.Serquence Number (16 bit): cung cấp số thứ tự của các gói Cáchnày như một cơ chế giúp bên thu có thể thu đúng thứ tự các gói tin,nhận ra gói tin bị mất
Time-stamp (32 bit): là tham số đánh dấu thời điểm byte đầu tiênđược lấy mẫu trong gói RTP Giá trị time-stamp khởi đầu là ngẫunhiên, các gói RTP phát đi liên tiếp có thể có cùng giá trị time-stempnếu chúng cùng được phát đi một lúc
Synchronization source (SSRC) identifier: số nhận dạng nguồn củagói dữ liệu Nếu ứng dụng muốn truyền dữ liệu có nhiều dạng khácnhau trong cùng một thời điểm (ví dụ là tín hiệu audio và video) thì sẽ
có những phiên truyền riêng cho mỗi dạng dữ liệu Sau đó ứng dụng
sẽ tập hợp các gói tin có cùng nhận dạng SSRC Số nhận dạng nàyđược gán một cách ngẫu nhiên
Contributing source (CSRC) identifer (độ dài thay đổi): tại một điểmđích nào đó mà những tín hiệu audio đến đích cần trộn lại với nhau thìgiá trị CSRC sẽ là tập hợp tất cả các giá trị SSRC của các nguồn màgửi tín hiệu đến điểm đích đó Trường CSRC có thể chứa tối đa là 15
số nhận dạng nguồn SSRC
Extension header (độ dài thay đổi): chứa các thông tin thêm của góiRTP
- Phần mở rộng: Cơ chế mở rộng của RTP cho phép những ứng dụng riêng lẻ
của giao thức RTP thực hiện được với những chức năng mới đòi hỏi nhữngthông tin thêm vào phần tiêu đề của gói Cơ chế này được thiết kế để một vài
Trang 17ứng dụng có thể bỏ qua một số ứng dụng khác lại có thể sử dụng được phầnnào đó Nếu như bit X trong phần tiêu đề cố định được đặt bằng 1 thì theosau phần tiêu đề cố định là phần tiêu đề mở rộng có chiều dài thay đổi.
16 bit đầu tiên trong phần tiêu đề được sử dụng với mục đích riêngcho từng ứng dụng được định nghĩa bởi profile Thường nó được sửdụng để phân biệt các loại tiêu để mở rộng
16 bits tiếp theo (Length) Mang giá trị chiều dài của phần tiêu đề mởrộng tính theo đơn vị là 32 bits Giá trị này không bao gồm 32 bit đầutiên của phần tiêu đề mở rộng
1.1.6 Giao thức RTCP
Giao thức RTCP dựa trên việc truyền đều đặn các gói điều khiển tới tất cả cácngười tham gia vào phiên truyền theo cơ chế phân phối gói dữ liệu trong mạnggiống như giao thức RTP, tức là cũng sử dụng các dịch vụ của giao thức UDP quamột cổng UDP độc lập với việc truyền các gói RTP RTCP trả về nguồn các thôngtin về sự truyền thông và các thành phần đích Giao thức điều khiển này cho phépgửi các thông số về bên thu và tự thích nghi cho phù hợp với bên phát Mỗi ngườitham gia một phiên truyền RTP phải gửi định kỳ các gói RTCP tới tất cả nhữngngười khác cũng tham gia phiên truyền Tuỳ theo mục đích mà RTCP thực hiện 4chức năng:
- Phản hồi chất lượng của dữ liệu Các thông tin đó giúp cho ứng dụng thựchiện chức năng điều khiển luồng và quản lý tắc nghẽn
- Nhận dạng để tập hợp các kiểu dữ liệu khác nhau như audio, video Điều này
là cần thiết vì khả năng này không được RTP cung cấp
- Định kỳ gửi các gói tin RTCP mà mỗi phiên truyền có thể giám sát được số
Trang 18Tuỳ thuộc vào giao thức RTP được sử dụng cho loại dữ liệu nào mà RTCP cungcấp các thông báo điều khiển khác nhau:
Hình 2-3: Giá trị của trường PT (Packet Type) ứng với mỗi loại gói [2].
- Sender Report (SR): Chứa các thông tin thống kê liên quan đến kết quảtruyền như tỷ lệ tổn hao, số gói dữ liệu bị mất, khoảng trễ Các thông báo này
từ phía phát trong một phiên truyền thông
- Receiver Report (RR): Chứa các thông tin thống kê liên quan đến kết quảnhận giữa các điểm cuối được phát ra từ phía thu trong một phiên truyềnthông
- Source Description (SDES): bao gồm các thông số mô tả nguồn như tên, vịtrí,
- Bye: Chỉ thị sự kết thúc tham gia vào phiên truyền
- Application (APP): thông báo cho phép truyền các dữ liệu ứng dụng
Cấu trúc gói tin RTCP
Hình 2-4: Cấu trúc gói tin RTCP [2].
- Version (2 bit): Version của RTP hiện tại version 2
- Padding (1 bit): Chức năng như một bit cờ chỉ rõ xem trong gói có các byteđược chèn thêm hay không
- Report counter (5 bit): Số thông báo chứa trong gói
- Packet type (8 bit): Xác định loại thông báo của gói
Trang 19- Length (16 bit): Chỉ rõ độ dài của gói tin.
- Report (độ dài thay đổi): Chứa các thông báo chi tiết
Các hợp gói của RTCP được phát đi một cách đều đặn sau những khoảng thờigian bằng nhau để thường xuyên thông báo về trạng thái các điểm cuối tham gia.Nhưng phải đảm bảo không chiếm hết lưu lượng thông tin dành cho các thông tinkhác Trong một phiên truyền, lưu lượng tổng cộng cực đại được gọi là băng thôngcủa phiên (session bandwidth) Lưu lượng này được chia cho các bên tham gia vàocuộc hội nghị, không cho phép vượt quá để không ảnh hưởng đến các dịch vụ kháccủa mạng Trong mỗi phần băng thông của phiên được chia cho các bên tham giaphần lưu lượng dành cho các gói RTCP, chỉ được phép chiếm một phần nhỏ khoảng5% để không ảnh hưởng đến chức năng chính của giao thức là truyền các dòng dữliệu media
Trang 20CHƯƠNG 3 ASTERISK – TỔNG ĐÀI MÃ NGUỒN MỞ.
1.7 Giới thiệu Asterisk [5][11]
Người tạo ra Asterisk là Mark Spencer vào năm 1999 với mục đích đầu tiên hỗtrợ cho công ty của mình trong việc liên lạc đàm thoại hỗ trợ cộng đồng người sửdụng và phát triển Linux, được viết bằng ngôn ngữ C chạy trên hệ điều hành linux
là hệ thống chuyển mạch mềm, phần mềm mã nguồn mở thực hiện tất cả các tínhnăng của tổng đài PBX và hơn thế nữa miễn phí biến một PC rẻ tiền thông thườngchạy Linux thành một hệ thống điện thoại doanh nghiệp mạnh mẽ
Asterisk là một bộ công cụ mã nguồn mở cho các ứng dụng thoại và là mộtserver xử lý cuộc gọi đầy đủ chức năng, là một nền tảng tích hợp điện thoại vi tínhhoá kiến trúc mở Chỉ cần có mạng máy tính và muốn liên lạc với nhau trong côngviệc giữa các phòng ban hoặc chi nhánh với một chi phí thấp thậm chí không phảitốn chi phí khi thực hiện các cuộc gọi trên mạng nội bộ của công ty.Đồng thời cóthể giao tiếp với các ứng dụng giao tiếp với mạng PSTN hoặc mạng VoIP (nhưvoice777) cho phép gọi ra bất cứ số điện thoại nào có trên mạng PSTN Tích hợpvào các ứng dụng như CRM (Customer Relationship Management) làm cho khảnăng ứng dụng của Asterisk linh hoạt hơn đáp ứng nhu cầu cần thiết cho người sửdụng điện thoại
Ban đâu Asterisk được phát triển trên GNU/Linux nền x86 (Intel), nhưng giờđây nó được phát triển có thể biên dịch và chạy trên OpenBSD, FreeBSD và Mac
OS X và Microsoft Windows Thật tốt cho người dùng sử dụng và mở rộng thêmnhiều dịch vụ
Trang 21Hình 3-1: Sơ đồ tổng quan Asterisk [11].
Asterisk là hệ thống chuyển mạch tích hợp vừa là công nghệ truyền thống TDMvừa là chuyển mạch VoIP Hình trên cũng cho thấy khả năng giao tiếp của hệ thống.Giao tiếp với điện thoại analog thông thường, giao tiếp với thiết bị điện thoại voip,ngoài ra còn có thể giao tiếp với mạng PSTN và các nhà cung cấp voip khác
Trang 221.1.7 Kiến trúc Asterisk.
Hình 3-2: Kiến trúc Asterisk [5].
Về cơ bản kiến trúc của Asterisk là sự kết hợp giữa nền tảng công nghệ điệnthoại và ứng dụng điện thoại công nghệ điện thoại cho VoIP như SIP, H323, IAX,MGCP các công nghệ điện thoại cho hệ thống chuyển mạch mạch TDM như T1,E1, ISDN và các giao tiếp đường truyền thoại Analog Các ứng dụng thoại nhưchuyển mạch cuộc gọi, tương tác thoại, caller ID, voicemail, chuyển cuộc gọi…
- Asterisk có một số chức năng chính đóng vai trò quan trọng trong hệ thốngchuyển mạch cuộc gọi:
Khi khởi động hệ thống Asterisk thì chức năng Dynamic ModuleLoader thực hiện nạp driver của thiết bị, nạp các kênh giao tiếp, cácformat, codec và các ứng dụng liên quan, đồng thời các hàm API cũngđược liên kết nạp vào hệ thống
Trang 23 Sau đó, hệ thống PBX Switching Core của Asterisk chuyển sang trạngthái sẵn sàng hoạt động chuyển mạch cuộc gọi, các cuộc gọi đượcchuyển mạch tuỳ vào kế hoạch quay số (Dialplan) được thực hiện cấuhình trong file extension.conf Chức năng Application Launchar đểrung chuông thuê bao, quay số, định hướng cuộc gọi, kết nối với hộpthư thoại…
Scheduler and I/O Manager đảm nhiệm các ứng dụng nâng cao, cácchức năng được phát triển bởi cộng đồng phát triển asterisk
Codec Translator xác nhận các kênh nén dữ liệu ứng với các chuẩnkhác nhau có thể kết hợp liên lạc được với nhau
- Tất cả các cuộc gọi định hướng qua hệ thống Asterisk đều thông qua các giaotiếp như SIP, Zaptel, IAX Nên hệ thống Asterisk phải đảm trách nhiệm vụliên kết các giao tiếp khác nhau đó để xử lý cuộc gọi
- Các API dùng cho việc giao tiếp với các module:
Codec translator API: các hàm đảm nhiệm làm việc với các định dạng
âm thanh mã hóa như MP3, GSM, G729, ADPCM…
Channel API : Giao tiếp với các kênh liên lạc khác nhau, hỗ trợ nhiềuchuần khác nhau như SIP, IAX, H323 Zaptel, MGCP…
Format API : Asterisk tương thích với việc xử lý đọc và phát các loạifile âm thanh có định dạng khác nhau như Mp3, wav, gsm…đem đến
sự linh hoạt cho các ứng dụng trên nền Asterisk trong việc xử lý âmchuông, DTMF âm thanh phát ra khi nhấn phím,…
Aplication API : dùng các ứng dụng thứ 3 như voicemail, callerID…cho phép cái ứng dụng mới tương tác phần lõi PBX
Trang 241.1.8 Cấu trúc thư mục của Asterisk [5]
Hình 3-3: Cây thư mục Asterisk.
Bảng 3-1: Chức năng các thư mục chính của Asterisk [7].
Trang 25/etc/asterisk Tất cả các file cấu hình trừ /etc/zaptel.conf
/usr/sbin Các đoạn mã và các file thực thi của Asterisk bao gồm asterisk, astman, astgenkey và safe_asterisk./usr/lib/asterisk Các đối tượng nhị phân riêng của cấu trúc Asterisk./usr/lib/asterisk/modules Các module thời gian thực cho các ứng dụng, điều khiển kênh, bộ nén và giải nén, định dạng file./var/lib/asterisk Chứa biến được sử dụng bởi asterisk trong suốt quá trình hoạt động./var/lib/asterisk/agi-bin Các đoạn mã AGI dùng bởi ứng dụng dial plan AGI./var/lib/asterisk/astdb Cơ sở dữ liệu của Asterisk lưu trữ các thông tin cấu hình./var/lib/asterisk/mohmp3
Các file mp3 được sử dụng cho chức năng music on hold.Cấu hình music on hold được chứa trong thư mục này
/var/lib/asterisk/sounds Chứa các file âm thanh, cảnh báo,…được sử dụng bởi các ứng dụng của asterisk./var/run Các file PID và tên chương trình chạy thời gian thực./var/run/asterisk.pid Process Identifier(PID) của các ứng dụng đang thực thi./var/spool/asterisk Các file chạy thời gian thực cho voicemail, các cuộc gọi ra ngoài./var/spool/asterisk/outgoing Điều khiển cho các cuộc gọi ngoài.Một cuộc gọi ra ngoài sẽ được lưu một file trong thư mục này./var/spool/asterisk/tmp Sử dụng để lưu trữ những thông tin tạm, tránh tình trạng đọc và ghi tập tin cùng một lúc./var/log/asterisk Chứa tất cả các tập tin nhật ký giúp cho việc giám sát
được dễ dàng
zapata.conf
Tập tin này thiết lập các thông số cấu hình giao tiếp điện thoại zapata, có thể sử dụng tập tin này để cấu hình phần cứng của Digium.Phần cứng của Digium chophép liên lạc được với PSTN
zaptel.conf
Tập tin này nằm ngoài /etc, là tập tin chứa thông số cấuhình các phần cứng TDM trong hệ thống asterisk, driver dành cho Linux khi các thiết bị điện thoại cắm trực tiếp vào Asterisk thông qua cổng PCI
Trang 26Community enterprise Operating System (CentOS) là bản phân phối hệ điềuhành tự do dựa trên Linux kernel, có nguồn gốc hoàn toàn từ bản phân phối Red HatEnterprise Linux (RHEL)
CentOS tồn tại để cung cấp một nền tảng điện toán doanh nghiệp tự do và phấnđấu để duy trì khả năng tương thích nhị phân 100% với nguồn Red Hat một công typhần mềm Mỹ cung cấp sản phẩm phần mềm mã nguồn mở cho cộng đồng doanhnghiệp
Hình 3-4: Giao diện Cài CentOS [11]
CHƯƠNG 4 MYSQL, AGI VÀ NGÔN NGỮ PHP.
1.9 MYSQL [9]
Trang 27Là ngôn ngữ truy vấn có cấu trúc (SQL) quản trị dữ liệu tự do 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ínhkhả 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àmtiện ích rất mạnh Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứngdụng có truy cập cơ sở dữ liệu trên internet
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nólàm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,
Việc thực hiện kết nối các extensions và dialplane từ một Tổng đài hay một Server đến một database ở xa, thì giải pháp có thể dùng ODBC làm kết nối trung gian.
Hình 4-1: Mô hình kết nối đến database.
Trang 30Hình 4-2: Kiểm tra kết nối từ Asterisk đến ODBC.
Để kiểm tra kết nối từ ODBC đến Mysql gõ lệnh isql –v hln( tên dsn)
Hình 4-3: Kiểm tra kết nối từ ODBC đến Mysql.
1.10 AGI [6]
Asterisk Gateway Interface (AGI) là một chuẩn giao tiếp với Asterisk AGI chophép gọi thực thi một chương trình ngoài để mở rộng nhiều chức năng cho Asterisknhư phát các âm thanh, đọc phím DTMF, điều khiển các phiên thoại, truy vấn cơ sở
dữ liệu,… Các chương trình ngoài được gọi là AGI script có thể lập trình bằngnhiều ngôn ngữ khác nhau như PHP, Perl, Python, C, C#, Java Với ngôn ngữ PHPviệc thao tác truy vấn database MySQL trở trên dễ dàng hơn, khả năng viết các ứngdụng tùy biến rất lớn
Trang 31Hình 4-4: Sơ đồ Asterisk giao tiếp AGI [6].
Người lập trình được AGI cung cấp hỗ trợ một kênh giao tiếp với Asterisk thôngqua các con trỏ file là STDOUT, STDIN, STDERR với các chức năng:
- STDOUT (Standard Output): AGI gửi thông tin đến Asterisk
- STDIN (Standard Input): Asterisk gửi thông tin về AGI
- STDERR (Standard Error): Thông tin trả lỗi
Asterisk cấu hình dialplane extensions.conf trỏ tới file cấu hình AGI bằng đườngdẫn /var/lib/asterisk/agi-bin/tên_thư_mục/tên_file khí đó thư mục và file phải được
cấp quyền để Asterisk xem, đọc, xử lý: chmod 755 (đường_dẫn thư mục/file).
Ví dụ: Chmod 755 /var/lib/asterisk/agi-bin/TS/AGI_TS Cú pháp gọimột AGI script từ dialplan:
[AGI_TS]
exten => 77712,1,Noop(Welcome to AGI- answerTiensi )exten => 77712,n,AGI(AGI_TS.php)
Trang 32- Bước 2: Lựa chọn CSDL, sử dụng hàm mysql_select_db.
Đoạn Code mẫu :
$dbservertype='mysql';
$servername='127.0.0.1'; // local $dbusername='root';
Trang 33Hình 5-1: Sơ đồ ngữ cảnh tổng thể.
Mô hình Tồng đài này được áp dụng cho phòng sau đại học, được dựng trênphần mềm mã nguồn mở Asterisk 13, với 2 file sip.conf và extensions.conf là trungtâm định tuyến cuộc gọi và các AGI script tùy biến theo ngữ cảnh, sau đó được nốiđường trung kế để thông qua internet kết nối mạng PSTN bằng một hay nhiều đầu
số DID Hiện nay có 3 nhà mạng cung cấp đầu số cố định DID lớn nhất nước làVNPT, FPT và CMC
Khi có cuộc gọi đến số (028) 730 22777 cuộc gọi sẽ được chuyển tới tổng đài trảlời tự động với đưa ra sự chọn lựa cho người dùng bằng điều hướng IVR:
- Bấm phím 1: Hệ thống trả lời tự động tư vấn tuyển sinh
- Bấm phím 2: Tra cứu thông tin học vụ
- Bấm phím 3: Gặp nhân viên phòng sau đại học
1.1.9 Tư vấn tuyển sinh tự động
Trang 34Bằng phát các file âm thanh chứa nội dung trả lời tới người dùng khi bấm phím1: Tổng đài tiếp tục điều hướng IVR, cho người dùng chọn 1 hoặc 2 tương ứngnhóm đào tạo thạc sĩ hoặc nhóm đào tạo tiến sĩ.
Hình 5-2: Sơ đồ ngữ cảnh nhánh tư vấn tuyển sinh cụ thể nhóm ngành thạc sĩ.
Trang 35-Hình 5-3: Mô hình nhánh tư vấn tuyển sinh cụ thể nhóm ngành tiến sĩ.
- Tùy vào người dùng bấm cuộc gọi đẩy vào file AGI_THS.php hoặc fileAGI_THS.php được lập trình sẵn chứa trong đường dẫn: /var/lib/asterisk/agi-bin Người cùng được yêu cầu làm theo hướng dẫn bằng IVR của tổng đài,nhập mã ngành cần tìm hiểu đẩy cuộc gọi tới nội dung câu trả lời, hệ thống
sẽ kiểm tra database trong cơ sỡ dữ liệu MySQL lấy dữ liệu file âm thanhphát theo yêu cầu
Trang 36- Dữ liệu database:
Hình 5-4: Bảng dữ liệu chưa tên file ậm thanh nhóm ngành thạc sĩ.
Hình 5-5: Bảng dữ liệu chưa tên file ậm thanh nhóm ngành tiến sĩ.
1.1.10 Tra cứu thông tin học vụ