TÓM TẮT LUẬN VĂN Cấu trúc luận văn chia làm 5 chương, nội dung luậnvăn bao quát ñầy ñủ các vấn ñề cơ bản về tổng ñài IP PBX và phần mềm máy trạm do nhómxây dựng. Với nội dung chính của từng chương ñược mô tả như sau: Chương 1: Lý thuyết cơ bản. Chương này nhằm mục đích chuẩn bị cho người đọc một số kiến thức cơ bản về các khái niệm và giao thức mạng có liên quan đến hệ thống tổng đài IP PBX và chương trình truyền thoại trên máy trạm Chương 2: Trong chương này, nhóm trình bày về tổng đài IP PBX, đưa ra các mô hình PBX, các tính năng cần thiết cho một tổng ñài IP PBX ñể xây dựng cho một doanh nghiệp. Từ đó, nhóm trình bày việc xây dựng tổng đài IP PBX, việc xây dựng tổng đài IP PBX cần phần mềm hệ thống với nhiệm vụ cung cấp, điều khiển các tính năng của tổng đài cung cấp cho các máy trạm. Bên cạnh đó nhóm sẽ trình bày thư viện ngoài hệ thống, có khả năng kết nối với phần mềm hệ thống tổng đài IP PBX, dựa trên thư viện này nhóm đã lập trình tương tác cơ sở dữ liệu của công ty, giúp nhóm xây dựng thành công hệ thống trả lời tự động cho khách hàng. Chương 3: Giới thiệu lý thuyết và xây dựng chương trình phần mềm thoại máy trạm. Chương 4: Xây dựng hệ thống Call Center cho công ty Chứng Khoán. Trong chương này, nhóm đưa ra mô hình, tiến trình xây dựng hệ thống Callcenter . Chương 5: Tổng kết đề tài. Nhóm tổng kết lại toàn bộ đề tài, các công việc mà nhóm đã thực hiện thành công trong đề tài này.
Trang 1KHOA ðIỆN-ðIỆN TỬ
BỘ MÔN ðIỆN TỬ-VIỄN THÔNG -o0o -
LUẬN VĂN TỐT NGHIỆP ðẠI HỌC
NGHIÊN CỨU THIẾT KẾ TỔNG ðÀI IP PBX VÀ
PHẦN MỀM THOẠI MÁY TRẠM
GVHD: ThS Nguyễn Chí Ngọc SVTH: Hoàng Hải Nguyên-40301853 Trần Nhật Huy -40301114
Tp Hồ Chí Minh, Tháng 12/2007
Trang 2Luận văn tốt nghiệp là kết quả của quá trình phấn ựấu học tập suốt 4,5
n năm trên giảng ựường ựại học đó là khoảng thời gian tuy không phải là ngắn nhưng chúng em biết rằng ựối với kiến thức mênh mông của khoa học
kỹ thuật thì không bao giờ có giới hạn cả Tuy nhiên, chắnh nhờ sự giảng dạy tận tình của thầy cô khoa điện-điện tử trường đại học Bách Khoa, chúng em ựã nắm bắt ựược những kiến thức cơ bản của ngành Viễn Thông, ựây là hành trang quý báu giúp chúng em vững tiến trên bước ựường lập nghiệp
Sau thời gian gần 4 tháng làm việc, ựề tài luận văn tốt nghiệp của chúng
em ựã hoàn thành để hoàn thành Luận văn tốt nghiệp này trong thời gian cho phép, chúng em ựã phải nỗ lực rất nhiều, dồn toàn lực cho ựề tài này ựể
ựề tài hoàn thành tốt nhất và ựúng tiến ựộ
Chúng em gửi lời tri ân sâu sắc ựối với sự hướng dẫn tận tình, nhiệt huyết của thầy hướng dẫn Nguyễn Chắ Ngọc Thầy là người ựã truyền nhiệt huyết làm việc cho chúng em, hết lòng chỉ bảo và truyền ựạt những kiến thức và kinh nghiệm rất quý giá cho chúng em
Chúng em gửi lời cảm ơn chân thành ựến các anh chị trong công ty chứng khoán Phú Gia ựã hỗ trợ chúng em thực hiện ựề tài
Chúng em chân thành cảm ơn, thầy Trương Tấn đức Anh, thầy Bùi Quang Huy, ở bộ môn Viễn Thông, ựã bổ trợ cho chúng em các kiến thức cần thiết, bên cạnh ựó các thầy hết lòng chỉ dẫn chúng em thực nghiệm tại phòng Thắ nghiệm Viễn Thông Việt-Pháp, chúng em cũng cám ơn anh Trần đoàn Anh Quân, cựu sinh viên K2002, ựã nhiệt tình hỗ trợ cho chúng em trong quá trình thực hiện luận văn
Chúng con xin gởi ựến gia ựình sự phấn ựấu, rèn luyện, sự trưởng thành của chúng con ựể bày tỏ lòng biết ơn của chúng con với những hi sinh vất vả của gia ựình ựể cho chúng con những ựiều tốt nhất
Mặc dù ựã cố gắng rất nhiều trong suốt quá trình làm việc, nhưng chúng
em sẽ vẫn còn ựó sự sai sót, chúng em rất mong sự ựóng góp ý kiến của thầy
cô, của các bạn và của mọi người
Xin chân thành cảm ơn
Tp Hồ Chắ Minh ngày 20 tháng 12 năm 2007 Hoàng Hải Nguyên
Trần Nhật Huy
Trang 3Hiện nay, trên thế giới cũng như ở Việt Nam, công nghệ ñang phát triển như vũ bão Việc áp dụng công nghệ vào công việc kinh doanh của các doanh nghiệp ñã và ñang ñóng góp thiết yếu cho sự thành công của doanh nghiệp Việt Nam ñang trong quá trình hội nhập và phát triền, công nghiệp hóa và hiện ñại hóa ñang diễn ra, các doanh nghiệp Việt Nam ñang nỗ lực hết mình ñể hội nhập thế giới, việc ñầu tư công nghệ cao là rất cần thiết
Tại các doanh nghiệp Việt Nam, việc liên lạc bằng ñiện thoại cho công việc kinh doanh là thiết yếu, tại mỗi doanh nghiệp ñều có trang bị tổng ñài nội bộ ða số ñều có mạng
hạ tầng internet với chất lượng khá tốt Tuy nhiên, hàng tháng các doanh nghiệp phải trả một khoản tiền ñiện thoại lớn cho Bưu ñiện Vì vậy, việc xây dựng hệ thống có thể tận dụng ñường truyền internet ñể truyền thoại ñang là cấp thiết, ñể giảm chi phí cho doanh nghiệp
Bên cạnh ñó, ñối với một doanh nghiệp, khách hàng chính yếu tố sống còn của doanh nghiệp Việc chăm sóc khách hàng tốt nhất là yêu cầu hàng ñầu, Khách hàng hài lòng với các dịch vụ của một doanh nghiệp, tạo cho doanh nghiệp ñó sự uy tín cao, và ñó sẽ là sức mạnh
vô cùng lớn trên thị trường và có thể cạnh tranh với các doanh nghiệp khác Việc xây dựng một hệ thống trả lời tự ñộng, cung cấp các thông tin chính yếu cho khách hàng Phương thức này khá hiệu quả, giảm chi phí cho doanh nghiệp, tăng tính tương tác giữa doanh nghiệp với khách hàng, khách hàng có thể biết nhanh chóng và chính xác các thông tin họ mong muốn
Trước tình hình trên, nhóm tập trung nghiên cứu xây dựng hệ thống toàn diện bao gồm: Tổng ñài thoại IP PBX và phần mềm thoại cho máy trạm Với hệ thống này, doanh nghiệp có thể tận dụng những thứ sẵn: tổng ñài nội bộ, ñường truyền internet tốc ñộ cao, liên kết cơ sở dữ liệu của doanh nghiệp,… từ ñó doanh nghiệp có thể truyền thoại qua mạng internet và mạng ñiện thoại công cộng (PSTN), có trung tâm trả lời tự ñộng cho khách hàng
Với mô hình nhóm ñưa ra, có thể áp dụng rộng rãi cho các trường ðại học, các trung tâm cung cấp thông tin, ……
Nhóm tác giả Hoàng Hải Nguyên Trần Nhật Huy
Trang 4Cấu trúc luận văn chia làm 5 chương, nội dung luận văn bao quát ñầy ñủ các vấn ñề cơ bản về tổng ñài IP PBX và phần mềm máy trạm do nhóm xây dựng Với nội dung chính của từng chương ñược mô tả như sau:
Chương 1: Lý thuyết cơ bản Chương này nhằm mục ñích chuẩn bị cho người ñọc một số kiến thức cơ bản về các khái niệm và giao thức mạng có liên quan ñến hệ thống tổng ñài IP PBX và chương trình truyền thoại trên máy trạm
Chương 2: Trong chương này, nhóm trình bày về tổng ñài IP PBX, ðưa ra các mô hình PBX, các tính năng cần thiết cho một tổng ñài IP PBX ñể xây dựng cho một doanh nghiệp Từ
ñó, nhóm trình bày việc xây dựng tổng ñài IP PBX, việc xây dựng tổng ñài IP PBX cần phần mềm hệ thống với nhiệm vụ cung cấp, ñiều khiển các tính năng của tổng ñài cung cấp cho các máy trạm Bên cạnh ñó nhóm sẽ trình bày thư viện ngoài hệ thống, có khả năng kết nối với phần mềm hệ thống tổng ñài IP PBX, dựa trên thư viện này nhóm ñã lập trình tương tác cơ sở
dữ liệu của công ty, giúp nhóm xây dựng thành công hệ thống trả lời tự ñộng cho khách hàng Chương 3: Giới thiệu lý thuyết và xây dựng chương trình phần mềm thoại máy trạm Chương 4: Xây dựng hệ thống CallCenter cho công ty Chứng Khoán Trong chương này, nhóm ñưa ra mô hình, tiến trình xây dựng hệ thống Callcenter
Chương 5: Tổng kết ñề tài Nhóm tổng kết lại toàn bộ ñề tài, các công việc mà nhóm ñã thực hiện thành công trong ñề tài này
Trang 5GIỚI THIỆU ðỀ TÀI iii
TÓM TẮT LUẬN VĂN iv
MỤC LỤC v
DANH SÁCH HÌNH VẼ vii
DANH SÁCH CÁC BẢNG viii
CHƯƠNG I: Lý thuyết cơ bản 1
1.1 Giới thiệu về TCP/IP: 1
1.2 Giới thiệu RTP (Real-Time Transport Protocol) 3
1.3 Giới thiệu giao thức SIP 5
CHƯƠNG II: Nghiên cứu tổng ñài nội bộ IP PBX 9
2.1 Giới hiệu tổng ñài PBX: 9
2.1.1 Hệ thống tổng ñài PBX là gì? 9
2.1.2 Hệ thống PBX truyền thống: 10
2.1.3 Hệ thống PBX Hybrid: 10
2.2 Các tính năng cần thiết cho một tổng ñài nội bộ PBX ngày nay: 11
2.2.1 Tổng ñài chuyển mạch cuộc gọi trên nền IP: 11
2.2.2 Hệ thống trả lời tự ñộng: 12
2.2.3 Hệ thống hộp thư thoại: 12
2.2.4 Hệ thống VoIP: 12
2.2.5 Hệ thống phân phối tự ñộng cuộc gọi: 13
2.3 Giới thiệu về phần mềm hệ thống cho tổng ñài IP PBX: 14
2.3.1 Asterisk là gì? 14
2.3.2 Kiến trúc Asterisk: 15
2.3.3 Cài ñặt, cấu hình Asterisk 16
2.3.3.1 Cài ñặt Asterisk 16
2.3.3.2 Hướng dẫn cấu hình các file cần thiết trong Asterisk: 17
2.3.3.2.1 Cấu hình file zaptel.conf 17
2.3.3.2.2 Cấu hình file zapata.conf: 18
2.3.3.2.3 Cấu hình file sip.conf: 18
2.3.3.2.4 Cấu hình file voicemail.conf: 19
2.3.3.3 Cấu hình Dialplan: 20
2.3.3.3.1 Cú pháp của dialplan: 20
2.3.4 Giới thiệu Asterisk Gateway Interface (AGI) 23
2.3.4.1 Asterisk Gateway Interface ( AGI ) là gì ? 23
2.3.4.2 Cấu trúc cơ bản AGI 24
2.3.4.3 Phân loại AGI 24
2.3.4.4 FastAGI 25
2.3.4.4.1 Giới thiệu FastAGI 25
2.3.4.4.2 Cấu hình gọi FastAGI trong Dialplan 25
2.3.5 Giới thiệu Thư viện Asterisk dot net: 25
2.3.5.1 Giới thiệu: 25
2.3.5.2 Các lệnh FastAGI trong Asterisk.NET: 25
CHƯƠNG III: Xây dựng phần mềm thoại máy trạm 28
3.1 Giới thiệu tổng quát về thư viện PJSIP 28
3.1.1 Tổng quan: 28
3.1.2 Kiến trúc thư viện PJSIP: 31
Trang 63.2.1 Giới thiệu PJSUA: 34
3.2.2 Tạo và khởi ñộng PJSUA 34
3.2.3 ðăng ký và hủy tài khoản SIP trong PJSUA 35
3.2.4 Các hàm quản lý cuộc gọi trong PJSUA 36
3.3 Giới thiệu Bkphone 39
3.3.1 Chức năng và cấu trúc Bkphone : 40
3.3.2 Các trạng thái hoạt ñộng của chương trình Bkphone 41
3.3.3 Quá trình khởi ñộng của chương trình Bkphone .43
3.3.4 Quá trình thực hiện cuộc gọi ñi 43
3.3.5 Quá trình nhận cuộc gọi ñến 45
3.3.6 Hướng dẫn sử dụng Bkphone 46
CHƯƠNG IV: Xây dựng hệ thống CallCenter ứng dụng cho công ty chứng khoán 48
4.1 Giới thiệu hệ thống CallCenter ứng dụng cho công ty chứng khoán : 48
4.2 Các bước xây dựng hệ thống CallCenter .50
4.2.1 Thiết lập tổng ñài IP nội bộ: 50
4.2.1.1 Tạo kết nối phần cứng: 50
4.2.1.2 Tạo tài khoản SIP: 51
4.2.1.3 Cấu hình Dialplan trong Asterisk server 51
4.2.1.4 Cấu hình phần mềm thoại trên máy nhân viên .52
4.2.2 Thiết lập hệ thống ContactCenter: 53
4.2.2.1 Giới thiệu về hệ thống ContactCenter: 53
4.2.2.2 Sơ ñồ dịch vụ của hệ thống ContactCenter: 53
4.2.2.3 Hướng dẫn sử dụng dịch vụ: 55
4.2.2.4 Mô hình thực hiện: 56
4.2.2.5 Phương thức thực hiện: 59
4.2.2.5.1 Cấu hình Asterisk: 59
4.2.2.5.2 Cấu hình file sip.conf: 59
4.2.2.5.3 Cấu hình file extensions.conf: 60
4.2.2.5.4 Các thư mục cần chú ý: 63
4.2.3 Tạo giao diện quản lý cho máy chủ Asterisk-Asterisk GUI: 64
4.2.3.1 Khái niệm: 64
4.2.3.2 Các yếu tố của Asterisk GUI: 64
4.2.3.3 Hướng dẫn cài ñặt Asterisk GUI: 65
4.3 Các ứng dụng khác của hệ thống: 67
Chương V: Tổng kết ñề tài 68
TÀI LIỆU THAM KHẢO 70
Trang 7Hình 1.1: Sự tương ñương của TCP/IP và mô hình OSI 1
Hình 1.2: Sự di chuyển dữ liệu giữa các lớp trong mô hình TCP/IP 3
Hình 1.3: Các trường tiêu ñề của RTP 4
Hình 1.4: Mô tả các quá trình diễn ra cho một cuộc gọi SIP ñiển hình qua 16 bước 7
Hình 2.1: Mô hình PBX truyền thống 10
Hình 2.2: Mô hình hệ thống PBX Hybrid ñơn 11
Hình 2.3: Mô hình cơ bản kết nối của IP PBX 11
Hình 2.4: Mô hình kết nối của một mạng VoIP 13
Hình 2.5: Mô hình phân phối cuộc gọi cơ bản 13
Hình 2.6: Kiến trúc Asterisk 15
Hình 2.7: Hình ảnh về card TDM kết nối PSTN (loại TDM800P) 16
Hình 2.8: Sơ ñồ giao tiếp giữa Asterik và AGI Script 24
Hình 3.1: Hiệu suất xử lý cuộc gọi của máy chủ khi dùng PJSIP 29
Hình 3.2: Cấu trúc thư viện PJSIP 30
Hình 3.2: Lược ñồ tương tác của các khối trong thư viện PJSIP 31
Hình 3.4: Lược ñồ trạng thái module 32
Hình 3.4: Lược ñồ tương tác giữa các module 32
Hình 3.3: Giao diện chính của BKphone 40
Hình 3.5: Quá trình khởi ñộng của BKphone 43
Hình 3.6: Quá trình thực hiện cuộc gọi của BKphone 44
Hinh 3.7: Quá trình nhận cuộc gọi của BKphone 45
Hình 3.8: Hướng dẫn thiết lập phần setting trong BKphone 46
Hình 3.9: Hình ảnh BK phone khi ñăng ký tài khoản SIP thành công 46
Hình 3.10: Trạng thái BKphone khi nhận cuộc gọi vào 47
Hình 3.11: BKphone ở trạng thái ACTIVE 47
Hình 4.1: Mô hình hệ thống tổng ñài IP PBX kết hợp máy trạm 49
Hình 4.2: Lược ñồ phân bố cuộc gọi cho các phòng ban 52
Hình 4.3 Cấu hình tài khoản SIP trong X-lite 53
Hình 4.4: Sơ ñồ dịch vụ của hệ thống ContactCenter 54
Hình 4.5: Lược ñồ tổng quát hệ thống contactcenter: 56
Hình 4.6: Lược ñồ chi tiết các dịch vụ của hệ thống contactcenter 57
Hình 4.7: Tiến trình thực hiện trong chương trình báo giá cổ phiếu 58
Hình 4.8: Tiến trình thực hiện trong chương trình báo số dư tài khoản 58
Hình 4.9: Tiến trình thực hiện trong chương trình báo số dư chứng khoán 58
Hình 4.10: Tiến trình thực hiện trong chương trình báo thông tin thị trường 59
Hình 4.11: Màn hình ñăng nhập vào Asterisk GUI 66
Hình 4.12: Màn hình thiết lập các thông số trong Asterisk GUI 66
Hình 4.13: Giao diện chính của Asterisk GUI sau khi ñăng nhập và thiết lập hệ thống 67
Trang 8Bảng 1.1: Các loại tải audio ñược hỗ trợ bởi RTP 4 Bảng 1.2: Các loại tải video ñược hỗ trợ bởi RTP 4
Trang 9A
ABNF Augmented Backus-Naur Format
ACD Automatic call Distribution
ACELP Algebraic Code Excited Linear Prediction
ACK Acknowledgement
AEC Acoustic Echo Cancellation
AF Assured Forwarding
AGI Asterisk Gateway Interface
AOR Address of Record
API Application Program Interface
ARP Address Resolution Protocol
ASCII American Standard Code for Information Interchange
ASN Abstract Syntax Notation
C
CB WFQ Class-Based Weighted Fair Queuing
CCITT Culsultative Committee for International Telephony and Telegraphy
CDR Call Detail Records
CID Context Identifier
CNG Comfort Noise Generator
CPU Central Processing Unit
CQ Custom Queuing
cRTP Compressed Real-Time Protocol
CSRC Contributing source
D
DISA Direct Inwards Services Access
DMA Direct Memory Access
DNS Domain Name System
DSCP Differentiated Service Code Point
DSP Digital Signal Process
DTMF Dual Tone Multi_Frequency
FXO Foreign exchange office
FXS Foreign exchange station
Trang 10I
IANA Internet Assigned Numbers Authority
IAX Inter-Asterisk eXchange
ICE Interactive Connectivity Establishment
ICMP Internet Control Message Protocol
ID Identifier
IEEE Institute of Electrical and Electronic Engineers
IETF Internet Engineering Task Force
IGMP Internet Group Management Protocol
IP Internet Protocol
ISDN Integrated Services Digital Network
ISO International Standard Organization
ITU International Telecommunication Union
IVR Interactive voice response
L
LAN Local Area Network
LDAP Lightweight Directory Access Protocol
LLQ Low Latency Queuing
LSP Label Switching Path
LSR Label Switch Router
M
MAC Media Access Control
MCU Multipoint Control Unit
MGC Media Gateway Controller
MGCP Media Gateway Control Protocol
MIME Multipurpose Internet Mail Extensions
MPLS MultiProtocol Label Switch
MTU Maximum Transmission Unit
N
NAPTR Naming Authority pointer
NAT Network Address Translation
PCM Pulse Code Modulation
PENH Perceptual Enhancement
PLC Packet Lost Concealment
PQ Priority Queuing
PRI Primary rate interface
Trang 11QoS Quality of Service
R
RARP Reverse Address Resolution Protocol
RAS Registration, Admission and Status
RFC Request for Comment
RPC Remote Procedure Call
RR Resource record
RSVP Resource Reservation Protocol
RTCP Real Time Control Protocol
RTP Real Time Transport Protocol
RTT Round-trip Time
S
SCTP Stream Control Transport Protocol
SDP Session Description Protocol
SER SIP Express Router
SIP Session Initiation Protocol
SMTP Simple Mail Transfer Protocol
SNMP Simple Network Management Protocol
SS7 Signaling System 7
STDERR Standard Error
STDIN Standard Input
STDOUT Standard Output
STUN Simple Traversal of UDP through NATs
T
TCP Transport Control Protocol
TDM Time Division Multiplexing
TLS Transport Layer Security
ToS Type of Service
TTL Time - to - Live
TU Transaction User
U
UAC User Agent Client
UAS User Agent Server
UDP User Datagram Protocol
URI Uniform Resource Indicator
URL Uniform Resource Locator
V
VAD Voice Activity Detector
VoIP Voice over Internet Protocol
W
WAN Wide Area Network
WFQ Weighted Fair Queuing
Trang 12CHƯƠNG I: Lý thuyết cơ bản
Chương này nhằm mục ñích chuẩn bị cho người ñọc một số kiến thức cơ bản về các khái niệm và giao thức mạng có liên quan ñến hệ thống tổng ñài IP PBX và chương trình truyền thoại trên máy trạm Sau ñây là phần trình bày ngắn gọn các khái niệm và giao thức : mạng TCP/IP, RTP, SIP
1.1 Gii thi u v TCP/IP:
Bộ giao thức TCP/IP là một bộ các giao thức truyền thông cài ñặt chồng giao thức mà Internet và hầu hết các mạng máy tính thương mại ñang chạy trên ñó Bộ giao thức này ñược ñặt tên theo hai giao thức chính của nó là TCP (Giao thức ðiều khiển Giao vận) và IP (Giao thức Liên mạng) Chúng cũng là hai giao thức ñầu tiên ñược ñịnh nghĩa
Như nhiều bộ giao thức khác, bộ giao thức TCP/IP có thể ñược coi là một tập hợp các tầng, mỗi tầng giải quyết một tập các vấn ñề có liên quan ñến việc truyền dữ liệu, và cung cấp cho các giao thức tầng cấp trên một dịch vụ ñược ñịnh nghĩa rõ ràng dựa trên việc sử dụng các dịch vụ của các tầng thấp hơn
Mặc dù OSI và TCP/IP khác nhau, mô hình bảy lớp vẫn có ích ñể tham khảo khi nói về truyền dữ liệu Kiến trúc TCP/IP chia làm 4 lớp tương ñương với 7 lớp của mô hình OSI Sự tương ñương ñó ñược thể hiện cụ thể như sau:
Hình 1.1: Sự tương ñương của TCP/IP và mô hình OSI
Lớp ứng dụng:
Lớp ứng dụng bao gồm các ứng dụng ñược sử dụng trong mạng Lớp ứng dụng và lớp ñại diện của mô hình OSI nằm trong lớp này của kiến trúc TCP/IP Ví dụ, nếu dữ liệu ñược truyền
Trang 13giữa hai chương trình ngang hàng ñược nén thì ứng dụng sẽ có trách nhiệm nén và giải nén Thực
ra lớp vận chuyển cũng có liên quan ñến lớp ứng dụng chứ không tách ra thành một thực thể như trong mô hình OSI
Ví dụ của ứng dụng là Telnet, FTP, SMTP và Gopher Giao diện giữa lớp ứng dụng và lớp vận chuyển ñược ñịnh nghĩa bởi số cổng và socket
Lớp vận chuyển:
Lớp vận chuyển cung cấp phân phối dữ liệu từ ñầu cuối ñến ñầu cuối Lớp vận chuyển và lớp phiên trong mô hình OSI nằm trong lớp này của kiến trúc TCP/IP Một socket TCP/IP là một ñầu cuối của giao tiếp bao gồm một ñịa chỉ máy tính và một cổng ñặc biệt cho máy tính ñó Lớp vận chuyển của OSI hơi giống với TCP của TCP/IP TCP cung cấp phân phối dữ liệu tin cậy và bảo ñảm cho các gói dữ liệu ñến ñúng thứ tự chúng ñã ñược gửi, không có dữ liệu trùng và không có mất dữ liệu
Lớp Internet:
Còn gọi là lớp Network hay Internetwork Lớp này ñịnh nghĩa gói dữ liệu và xử lý ñịnh tuyến cho datagram Datagram là một gói dữ liệu ñược ñiều khiển bởi giao thức IP Một datdagram chứa một ñịa chỉ nguồn, ñịa chỉ ñích, dữ liệu cũng như các trường ñiều khiển Chức năng của lớp này tương ñương với chức năng của lớp mạng trong mô hình OSI Nó có trách nhiệm ñóng gói vào mạng sẵn có từ những lớp trên cũng như xử lý ñịa chỉ và phân phát các datagram IP không cung cấp tính tin cậy, ñiều khiển dòng và khắc phục lỗi Những chức năng này phải ñược cung cấp ở lớp cao hơn Những giao thức lớp Internet bao gồm IP, ICMP, IGMP, ARP và RARP
Lớp giao diện mạng (Network Interface):
TCP/IP không ñịnh nghĩa những kết nối vật lý cho mạng sẵn có Thay vào ñó, nó sử dụng những chuẩn ñã tồn tại trước do các tổ chức ví dụ như IEEE ñịnh nghĩa RS232, Ethernet và các giao diện ñiện tử khác dùng trong truyền dữ liệu Lớp này có thể hoặc không cung cấp phân phát tin cậy, có thể ñịnh hướng dòng hay ñịnh hướng gói TCP/IP không ñặc tả bất kỳ giao thức nào ở ñây nhưng có thể sử dụng hầu hết các giao diện mạng có sẵn, thể hiện sự linh ñộng của lớp IP
Sự di chuyển dữ liệu giữa các lớp trong mạng TCP/IP ñược thể hiện trong hình:
Trang 14Hình 1.2: Sự di chuyển dữ liệu giữa các lớp trong mô hình TCP/IP Khi một gói ñược gửi, nó ñến lớp vận chuyển và header của lớp vận chuyển ñược thêm vào Sau ñó, lớp Internet cũng thêm header của nó vào Cuối cùng lớp Network Interface cũng thêm header của nó vào Khi một gói dữ liệu nhận ñược, quá trình ñược tiến hành ngược lại ñể tạo ra
dữ liệu ban ñầu cho lớp ứng dụng
1.2 Gii thi u RTP (Real-Time Transport Protocol)
Giao thức RTP cung cấp các chức năng vận chuyển thích hợp cho các ứng dụng truyền tải thời gian thực như tín hiệu audio, video hay tín hiệu mô phỏng qua các dịch vụ mạng ña chiều (multicast) hay hai chiều (unicast).Và giao thức RTCP giúp quản lý việc cấp phát băng thông cho quá trình ñàm thoại ña chiều, ñồng thời cung cấp một số chức năng ñiều khiển RTCP dựa vào việc phát ñịnh kì các gói ñiều khiển cho tất cả các thành phần trong mạng trong một phiên, sử dụng cùng một kỹ thuật phân phát gói như các gói dữ liệu RTP và RTCP ñược thiết kế ñể chạy ñộc lập với các lớp bên dưới Do RTP và RTCP chạy ñộc lập với nhau nên cần phải thiết lập hai kênh truyền riêng biệt bằng việc sử dụng hai cổng UDP khác nhau
Trường tiêu ñề của các gói RTP
Bốn loại tiêu ñề chính trong gói RTP là loại tải, số thứ tự, timestamp và bộ xác ñịnh nguồn ñồng bộ như ñược chỉ ra trong hình
Trang 15Hình 1.3: Các trường tiêu đề của RTP Loại tải: trường này dài 7 bit ðối với dịng audio, trường loại tải được sử dụng để chỉ ra loại
mã hĩa audio được sử dụng (ví dụ, điều chế PCM, điều chế delta thích nghi, mã hĩa dự đốn tuyến tính) Nếu bên gửi quyết định thay đổi kiểu nén giữa phiên, bên gửi cĩ thể thơng báo cho bên nhận về sự thay đổi thơng qua trường này Bên gửi cũng cĩ thể muốn thay đổi kiểu nén để tăng chất lượng âm thanh hay giảm tốc độ bit dịng RTP Bảng liệt kê một số loại tải âm thanh thường được hỗ trợ bởi RTP
Số của loại tải ðịnh dạng audio Tốc độ lấy mẫu Tốc độ bit
Bảng 1.1: Các loại tải audio được hỗ trợ bởi RTP
ðối với dịng video, loại tải được sử dụng để chỉ ra các kiểu nén video Cũng như trên, bên gửi cũng cĩ thể thay đổi kiểu nén video trong suốt quá trình diễn ra một phiên Bảng liệt kê danh sách các loại tải video thường được hỗ trợ bởi RTP
Bảng 1.2: Các loại tải video được hỗ trợ bởi RTP
Số thứ tự: Trường này dài 16 bit Số thứ tự tăng lên một mỗi khi gĩi RTP được gửi đi và cĩ thể được sử dụng bởi bên thu để phát hiện sự mất mát gĩi và lưu trữ số thứ tự của các gĩi Ví dụ, nếu bên nhận của ứng dụng nhận được một dịng gĩi RTP với một khoảng trắng giữa số thứ tự 86
và 89 thì bộ thu biết rằng gĩi 87 và 88 đã bị mất Sau đĩ, bộ thu cố gắng thơng báo về sự mất dữ liệu
Timestamp: trường timestamp dài 32 bit Nĩ phản ánh thời điểm lấy mẫu của byte đầu tiên Loại tải Số thứ tự Timestamp SSRC Các trường khác
Trang 16ñể cung cấp sự ñồng bộ ở bộ nhận Timestamp ñược lấy ra từ ñồng hồ lấy mẫu ở bên gửi Ví dụ, ñối với audio, xung clock của timestamp tăng lên một sau mỗi chu kỳ lấy mẫu (125µs) Nếu ứng dụng audio tạo ra những chunk gồm 160 mẫu ñã ñược mã hóa, timestamp sẽ tăng thêm 160 cho mỗi gói RTP khi nguồn ñang hoạt ñộng ðồng hồ timestamp sẽ tiếp tục tăng với một tốc ñộ không ñổi cho dù nguồn có thể không hoạt ñộng
Bộ xác ñịnh nguồn ñồng bộ (SSRC): Trường SSRC dài 32 bit Nó xác ñịnh nguồn của dòng RTP Thông thường nhất, mỗi dòng trong một phiên RTP có một SSRC ñặc trưng SSRC không phải là ñịa chỉ IP của bên gửi mà thay vào ñó là một số mà nguồn ñăng ký một cách ngẫu nhiên khi dòng mới ñược bắt ñầu Khả năng ñể hai dòng ñăng ký cùng một SSRC là rất nhỏ Nếu ñiều
ñó xảy ra, hai nguồn sẽ lấy một giá trị SSRC mới
1.3 Gii thi u giao th$c SIP
SIP ( Session Initiation Protocol ) là một giao thức ñiều khiển thuộc lớp ứng dụng, có thể thiết lập, thay ñổi và kết thúc các phiên ña phương tiện như các cuộc gọi ñiện thoại qua Internet SIP cũng có thể mời thêm các thành viên tham gia vào những phiên ñã tồn tại sẵn, ví dụ như các hội nghị multicast Media có thể ñược thêm vào, hoặc lấy ra từ các phiên có sẵn SIP hỗ trợ một cách thông suốt việc ánh xạ tên và các dịch vụ chuyển hướng, từ ñó hỗ trợ cho tính di ñộng của con người, tức là người sử dụng có thể ñảm bảo một sự xác ñịnh duy nhất một cách trực quan mà không cần biết ñến vị trí mạng của họ
SIP thực hiện các công việc sau :
_ SIP cung cấp cơ chế ñể thiết lập cuộc gọi giữ người gọi và người nhận cuộc gọi qua mạng
IP Nó cho phép người gọi báo hiệu cho người nhận cuộc gọi rằng người gọi muốn bắt ñầu một cuộc thoại Nó cho phép các bên ñồng ý về cách mã hóa thoại ðồng thời người tham gia thoại
Các thành phần của giao thức SIP :
_ SIP User Agent (UA) : User Agent là thành phần hệ thống ñầu cuối của cuộc gọi và SIP Server là thiết bị mạng quản lý các báo hiệu liên kết với sự thiết lập nhiều cuộc gọi, ñịnh vị, hội thảo
_ SIP Network Server : là các thành phần chuyển tiếp bản tin trên mạng Network server có thể lưu trữ thông tin về các ñầu cuối trên mạng, phục vụ cho các quá trình tìm gọi
Có 5 loại SIP server như sau:
Trang 171 Proxy Server : giữ thông tin về vị trí, nằm ở giữa cuộc gọi, chuyển các cuộc gọi và thông tin báo hiệu ñến mỗi ñiểm cuối / host UA
2 Re-direct Server (Server chuyển hướng): giữ thông tin vị trí, nhưng không giống như proxy server, nó làm việc với ñiểm ñầu cuối/host UA, cho phép cuộc gọi và báo hiệu giữa các UA’s
3 Registrar Server : ñăng ký, quản lý và xác nhận các UA
4 Conference Server: cho phép chia nhánh các cuộc gọi và tiếp xúc ñể tạo cơ sở cho hội nghị
5 Applications Server : cung cấp cơ sở cho sự nhất quán, các chức năng và ñặc ñiểm – ví dụ như Instant Messaging (IM)
Một UA có thể gọi một UA trên cơ sở peer – to – peer không cần một network server
SIP ñịnh ñịa chỉ các user bởi một ñịa chỉ ñịnh dạng như sau: “sip:users@host”
Quá trình thiết lập cuộc gọi trên mạng ñược thực hiện thông qua quá trình trao ñổi các bản tin giữa các user agent trên mạng Các bản tin SIP ñược phân thành hai nhóm:
Nhóm các bản tin yêu cầu (request message): ñược gửi ñi từ các thành phần ñóng vai trò client trên mạng Các bản tin này sẽ thực hiện các chức năng xác lập cũng như quản lý các cuộc gọi Ví dụ như các yêu cầu : INVITE, REGISTER, OPTIONS …
Các bản tin ñáp ứng (responde message): là các bản tin ñược phúc ñáp tương ứng từ các server cho các yêu cầu từ các client.Nó có dạng là một số từ 1xx ñến 6xx, mỗi số có một
ý nghĩa khác nhau Ví dụ: 100/Trying, 180/Ringing, 200/OK, 302/Moved Temporarily, 408/Resquest Timeout, 486/Busy Here, 502/Bad Gateway, 603/Decline …
Ta xem hình sau ñể có thể biết ñược toàn bộ quá trình thiết lập và kết thúc một cuộc gọi bằng SIP, truyền thoại bằng RTP:
Trang 18Hình 1.4: Mô tả các quá trình diễn ra cho một cuộc gọi SIP ñiển hình qua 16 bước
Bước 1 – Người sử dụng ở UA 1 muốn kết nối tới người ñược gọi Khi ñó phần mềm UA chạy trên UA1 sẽ tạo một yêu cầu INVITE và gửi ñến proxy ðịa chỉ của proxy ñã ñược cấu hình trước trên chương trình
Bước 2 – Proxy tiếp nhận ñược yêu cầu của sofpthone nhờ listen trên port 5060/UDP lập tức trả lời bằng một ñáp ứng 100 (TRYING) nhằm yêu cầu client chờ kết nối Sau ñó qua bước 3 Bước 3 – Proxy xem xét yêu cầu INVITE, xác ñịnh host mà ở ñó người ñược gọi ñang login vào, chuyển tiếp yêu cầu INVITE ñến ñó
Bước 4 – UA 2 trả lời cho proxy bằng ñáp ứng 100 (TRYING)
Bước 5 – UA 2 gởi ñáp ứng 180 (RINGING) về cho proxy ñể báo rằng ñang ñổ chuông Bước 6 – proxy chuyển tiếp 180(RINGING) về UA 1
Bước 7 – UA 1 nhận ñược 180(RINGING) lập tức tự phát âm hiệu ringback tone dạng
colorring dựa vào cấu hình nhạc chuông ñược thiết lập sẳn
Bước 8 – Người ñược gọi ở UA 2 nhấc máy UA 2 thông báo cho proxy tín hiệu nhấc máy bằng 200 (OK)
Bước 9 – proxy chuyển tiếp 200(OK) cho UA 1
Bước 10 – UA 1 gửi yêu cầu ACK cho proxy nhằm confirm rằng nó ñã nhận ñược tín hiệu
200 (OK)
Trang 19Bước 11 – proxy chuyển tiếp ACK tới UA 2
Bước 12 – UA 1 tạo RTP stream với UA 2 và bắt ñầu truyền voice
Bước 13, 14 – Giả sử người gọi ở UA 1 gác máy trước UA 1 tạo yêu cầu BYE và gửi ñến
UA 2 thông qua proxy
Bước 15, 16 – UA 2 nhận ñược yêu cầu BYE của UA 1, nó trả lời bằng ñáp ứng 200 (OK), ñồng thời kết thúc cuộc gọi
Trang 20CHƯƠNG II: Nghiên cứu tổng ñài nội bộ IP PBX
2.1 Gii hi u t&ng ñài PBX:
2.1.1 Hệ thống tổng ñài PBX là gì?
PBX là từ viết tắt của Private Branch Exchange PBX là một tổng ñài nội bộ, nó cung cấp cho hệ thống thoại nội bộ Khởi ñầu, tổng ñài ñiện thoại ñược ñiều khiển bởi những nhà cung cấp thoại, như AT&T ở Mỹ, British Telecom ở Anh Những công ty này cung cấp tất cả ñường dây và ñịnh tuyến cuộc gọi giữa các công ty và công cộng Khởi ñầu, việc ñịnh tuyến cuộc gọi ñược thực hiện bởi một nhóm các nhân viên (nữ) trong các văn phòng của những công ty thoại và việc ñịnh tuyến ñược thực hiện bằng cách thay ñổi
vị trí các cable ñể kết nối từ người gọi này ñến người gọi khác Khi sự tín nhiệm và nhu cầu dịch vụ này ngày càng gia tăng, ñòi hỏi phải có hệ thống tổng ñài chuyển mạch tự ñộng ñể quản lý các cuộc gọi
Khi các mạng ñiện thoại hình thành, các công ty ñã thấy ñược sự tin cậy hơn và lợi ích của thông tin thoại Một số quyết ñịnh thực hiện những dịch vụ riêng cho họ ñể họ có thể ñiều chỉnh ñược các cuộc gọi nội bộ Thông thường, các thiết bị ñược cung cấp bởi các công ty thoại, vì vậy các công ty này cũng sẵn lòng hỗ trợ các dịch vụ này Các công
ty sử dụng các ñường dây và kết nối cuộc gọi ra bên ngòai công ty phải trả một khoản phí cho các công ty cung cấp thoại
Có nhu cầu rõ ràng ở các công ty, nhu cầu cài ñặt các thiết bị và ñịnh tuyến cuộc gọi nội bộ và cuộc gọi ra vào công ty ñược thực hiệnmột cách chắc chắn và ñịnh tuyến ñúng Vì vậy có ñòi hỏi cho tổng ñài PBX là hiệu quả quản lý cuộc gọi và chắc chắn các thông tin liên lạc bằng thoại giữa các bộ phận và nhân viên trong công ty và với khách hàng ñược duy trì tình trạng tốt nhất
Về hình thức cơ bản, PBX là giao tiếp giữa mạng thoại chung bên ngòai và mạng thoại nội bộ riêng của công ty PBX có thể ñịnh tuyến hiệu quả tất cả cuộc gọi ra vào công ty PBX có thể ñiều khiển ñược các cuộc gọi trong công ty, vì thế một cuộc gọi từ một số nội bộ ñến một nơi khác không phải ra chuyển qua hệ thống mạch ñiện thoại khác
PBX ngày càng trở nên phổ biến hơn, các công ty và nhân viên của họ ñòi hỏi nhiều tính năng hơn như: hộp thư thoại, chuyển cuộc gọi, nghe nhạc trong lúc chờ cuộc gọi, mục trả lời tự ñộng, ñịnh tuyến giá trị thấp nhất, và phân bố tự ñộng cuộc gọi Với nhu cầu ngày càng tăng cho thông tin liên lạc trong tất cả khía cạnh của việc kinh doanh, các tính năng ñược yêu cầu trong hệ thống thoại trở nên phức tạp hơn, ñắt hơn Nếu các công ty phải dựa vào các nhà cung cấp dịch vụ cho tất cả các tính trên, thì thông tin sẽ trở nên ñắt và có thể không mua nổi
Trang 21Khi một công ty muốn nâng cấp tổng ñài PBX của mình ñể ñáp ứng nhu cầu ngày một gia tăng, họ phải trả một khoản phí cho các nhà cung cấp dịch vụ PBX, và thông thường khoản chi phí là không nhỏ Ví dụ: muốn thêm chức năng voicemail vào hệ thống PBX,
họ gần như phải thay ñổi toàn bộ cấu trúc của PBX truyền thống, và ñiều này là rất tốn kém
Vấn ñề ñặt ra, hiện nay internet phát triển rất mạnh, nên người ta mới nghĩ ñến việc kết hợp truyền thoại qua internet với ñiện thoại truyền thống, từ ñó người ta nghĩ ra hệ thống PBX hybrid
2.1.3 Hệ thống PBX Hybrid:
Hệ thống PBX Hybrid là sự kết hợp các ñặc tính của hệ thống PBX truyền thống với hệ thống truyền thoại VoIP Với mạng VoIP, ta có thể sử dụng các ñiện thoại IP hoặc Soft phone, và khả năng dùng ITSP (Internet Telephone Service Providers), không chỉ là dịch vụ ñiện thoại truyền thống Ưu ñiểm chinh của việc kết hợp hai hệ thống là, ta vừa có thể sử dụng ưu ñiểm chất lượng
Trang 22của ñiện thoại truyền thống, cũng như là cơ sở hệ thống mạng ñiện thoại truyền thống có sẵn, kết hợp với những tính năng mới của công nghệ VoIP ñem lại, tính kiệm chi phí ñầu tư
Mô hình hệ thống PBX Hybrid ñơn:
Internet
Public telephone Network
Phone Stations
PBX hybrid
Hình 2.2: Mô hình hệ thống PBX Hybrid ñơn
2.2 Các tính năng c.n thi/t cho m0t t&ng ñài n0i b0 PBX ngày nay:
2.2.1 Tổng ñài chuyển mạch cuộc gọi trên nền IP:
Hình 2.3: Mô hình cơ bản kết nối của IP PBX
Trang 23- Hỗ trợ các ñường trung kế cho phép nhiều cuộc gọi cùng ñược chuyển tải trên một ñường dây trung kế ñến mạng
- Tra cứu các thuộc tính của cuộc gọi và ra quyết ñịnh chuyển cuộc gọi dựa trên các thuộc tính ñó
- Lưu trữ các thông tin cuộc gọi trong cơ sở dữ liệu ñể tiện việc tra cứu Cũng như ta có thể
so sánh các thông tin này với hóa ñơn hàng tháng của công ty ñiện thoại gởi cho ta Nó cho phép
ta phân tích lưu lượng thoại trong công ty , tìm ra 10 số phone thường gọi nhất , xem thời gian của các cuộc gọi , so sánh với thời gian trung bình trong các cuộc gọi Nhờ vậy , ta hoàn toàn có thể phát hiện ñược việc liệu nhân viên công ty có sử dụng ñiện thoại một cách hoang phí trong giờ làm việc hay không
-Các cuộc gọi sẽ ñược lưu tại dưới ñịnh dạnh file nào ñó ta có thể nhận biết, Khi ñó các cuộc gọi quan trọng sẽ ñược lưu lại, và có thể nghe lại bất cứ khi nào người dung muốn
2.2.2 Hệ thống trả lời tự ñộng:
Các doanh nghiệp có thể xây dựng hệ thống dịch vụ phục vụ 24/24 trong khi vẫn có thể giảm công sức thuê muốn nhân viên cho việc này Hệ thống cho phép phát lại giọng nói, ñọc văn bản, hoặc thu thập thông tin từ cơ sở dữ liệu Các chức năng này thường cần trong dịch vụ ñiện thoại của ngân hàng , hoặc hệ thống tính cước Ví dụ khi bạn gọi ñến ngân hàng , bạn sẽ nghe lời chào mừng , bạn nhập vào các thông tin chứng thực , sau ñó bạn sẽ ñược nghe các thông tin cá nhân ñược trích ra từ cơ sở dữ liệu …
2.2.3 Hệ thống hộp thư thoại:
Hệ thống có thể sắp xếp sao cho nhiều hộp thư có thể ñược lưu trữ trên cùng một máy chủ, ñiều này phù hợp cho một doanh nghiệp khi triển khai cho công ty mình Hệ thống hỗ trợ việc ñiều chỉnh nhiều múi giờ khác nhau nên người sử dụng có thể biết khi nào cuộc gọi ñến, và bên cạnh ñó cung cấp khả năng thông báo cho người sử dụng khi có voicemail mới bằng email trong
ñó có ñính kèm tin nhắn thoại
2.2.4 Hệ thống VoIP:
Hệ thống cho phép nhân viên có thể sử dụng các dịch vụ văn phòng (voicemail, ñiện thoại ñường dài …) giữa các chi nhánh với nhau dựa trên ñường truyền internet tốc ñộ cao
Trang 24Hình 2.4: Mô hình kết nối của một mạng VoIP
2.2.5 Hệ thống phân phối tự ñộng cuộc gọi:
Hệ thống tiếp nhận các cuộc gọi từ bên ngoài ñể ñưa vào hệ thống hàng ñợi (nơi cuộc gọi ñược chờ cho ñến khi cuộc gọi ñó ñược thực thi), sau ñó chuyển ñến nhân viên trả lời theo những chiến lược thích hợp, ñiều này sẽ làm cho việc trả lời các cuộc gọi linh hoạt và hiệu quả Trong lúc các thuê bao gọi ñến sẽ ñược ñưa ñến hàng ñợi và tại ñây thuê bao có thể nghe nhạc hoặc ñược giới thiệu các thông tin về công ty Mục tiêu chính của hệ thống nhằm phục vụ khách hàng gọi ñến ñể ñược hỗ trợ kỹ thuật, tìm hiểu thống tin hay trao ñổi mua bán một cách tốt nhất
Hình 2.5: Mô hình phân phối cuộc gọi cơ bản
Những công việc chính của một hệ thống phân phối cuộc gọi có thể ñược trình bày như sau: -Tiếp nhận các cuộc gọi vào, hệ thống có số lượng cuộc gọi vào lớn hơn hoặc bằng số lượng người trả lời thường là lớn hơn số lượng người trả lời, nếu thuê bao gọi ñến trong trường hợp tất
Trang 25cả người trả lời ựều bận thì cuộc gọi sẽ ựược ựặt vào hàng ựợi
-Người trả lời sẽ trả lời các cuộc gọi ựến theo các chiến lược phân phối cuộc gọi phù hợp -Thuê bao có thể nghe nhạc khi trong hàng ựợi
-Thuê bao có thể nghe thông báo vị trắ của mình trong hàng ựợi
Trong một hệ thống có thể thiết lập hàng ựợi ựể giải ựáp các thông tin khác nhau của công ty
Có hai phương pháp phục vụ trả lời cuộc gọi qua hàng ựợi:
+ Phương pháp thứ nhất: là mỗi người trả lời làm việc cố ựịnh trên một máy ựiện thoại, khi
có cuộc gọi ựến người trả lời chỉ việc nhấc máy trả lời cuộc gọi, tất nhiên cuộc gọi sẽ phân phối ựến các người trả lời một cách thắch hợp Phương pháp này còn gọi là phương pháp tĩnh
+ Phương pháp thứ hai: Người trả lời sử dụng tai phone ựeo thường trực trên tai luôn sẵn sàng trả lời cuộc gọi, khi có cuộc gọi ựến người trả lời sẽ nghe một âm hiệu báo hiệu cuộc gọi ựã hiện diện tại vị trắ mình, lúc này thuê bao chỉ việc lên tiếng trả lời cuộc gọi, thường làm việc với phần mềm thoại Phương pháp này còn gọi là phương pháp ựộng
Hiện nay, có nhiều công ty ựã cung cấp các tổng ựài phần cứng trên thị trường, các tổng ựài phần cứng này cung cấp ựầy ựủ các tắnh năng cho tổng ựài PBX cho một công ty Nhưng giá thành của các tổng ựài là rất ựắt, việc ựầu tư chi phắ ban ựầu rất cao, ựây là một thách thức cho các doanh nghiệp Việc xây dựng một tổng ựài mềm có cũng có ựầy ựủ các tắnh năng là một trong hướng phát triển, làm giảm chi phắ (ựầu tư và sử dụng), bên cạnh ựó cung cấp các dịch vụ linh hoạt phù hợp với khách hàng của mỗi công ty
để xây dựng một tổng ựài nội bộ PBX mềm trên nền IP ựòi hỏi một phần mềm hệ thống ựể tạo, quản lý, hiệu chỉnh các dịch vụ do tổng ựài PBX
2.3 Gii thi u v ph.n m m h th3ng cho t&ng ựài IP PBX:
Trong quá trình nghiên cứu, nhóm nhận biết ựược phần mềm hệ thống có thể áp dụng cho tổng ựài IP PBX đó là phần mềm Asterisk
2.3.1 Asterisk là gì?
Asterisk là phần mềm mã nguồn mở ựược viết bằng ngôn ngữ lập trình C chạy trên hệ ựiều hành Linux Asterisk ra ựời vào năm 1999 ựược viết bởi Mark Spencer, với phần mềm có thể thực hiện các tắnh năng cần thiết của tổng ựài IP PBX
Asterisk có các ựặc trưng như sau:
+ Tổng ựài nội bộ (Private Branch Exchange-PBX)
+ Máy chủ hội họp thoại (Conferencing Server): máy chủ thoại gói, âm thanh ựược ựịnh dạng dưới hình thức gói, và có thể truyền ựi trên nền IP
+ Gateway giao tiếp với nhiều giao thức báo hiệu như: H.323, SIP, MGCP, IAX
+ Hệ thống trả lời thoại tự ựộng cho máy trạm
+ Hệ thống chuyển mạch mềm
+ Chuyển ựổi số gọi ựến người dùng
+ Gọi các thành viên trong hàng ựợi với các Agent ựiều khiển bên ngoài
+ Các dịch vụ thoại cho các người dùng hoặc văn phòng ở xa
+ Hệ thống Voicemail chuẩn
Với sự hỗ trợ của Asterisk, nhóm sẽ sử dụng phần mềm này làm phần mềm hệ thống cho tổng ựài IP PBX
Trang 262.3.2 Kiến trúc Asterisk:
Hình 2.6: Kiến trúc Asterisk
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ện thoạ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ống chuyển mạch cuộc gọi Khi khởi ñộng hệ thống Asterisk thì chức năng Dynamic Module Loader thực hiện nạp driver của thiết bị, nạp các kênh giao tiếp, các format, 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
Sau ñó hệ thống PBX Switching Core của Asterisk chuyển sang trạng thái sẵn sàng hoạt ñộng chuyển mạch cuộc gọi, các cuộc gọi ñược chuyển mạch tuỳ vào kế hoạch quay số (Dialplan) ñược thực hiện cấu hình trong file extension.conf
Chức năng Application Launcher ñể rung chuông thuê bao, quay số, ñịnh hướng cuộc gọi, kết nối với hộp thư thoại…
Scheduler and I/O Manager ñảm nhiệm các ứng dụng nâng cao, các chứ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ẩn khá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 giao tiế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 ñó
Trang 27ñể xử lý cuộc gọi
Hệ thống cũng bao gồm 4 chức năng API chính:
Codec translator API: các hàm ñảm nhiệm thực thi và giải nén các chuẩn khác nhau như G711, GSM, G729…
Asterisk Channel API : Giao tiếp với các kênh liên lạc khác nhau, ñây là ñầu mối cho việc kết nối các cuộc gọi tương thích với nhiều chuần khác nhau như SIP, IAX, H323 Zaptel… Asterisk file format API: Asterisk tương thích với việc xử lý các loại file có ñịnh dạng khác nhau như Mp3, wav, gsm…
Asterisk Aplication API: Bao gồm tất cả các ứng dụng ñược thực thi trong hệ thống Asterisk như voicemail, callerID…
Ngoài ra, Asterisk còn có thư viện Asterisk Gateway Interface (AGI, tương tự như CGI) - cơ chế kích hoạt ứng dụng bên ngoài, cho phép viết kịch bản phức tạp với một số ngôn ngữ như PHP hay Perl Nói chung, khả năng viết các ứng dụng tùy biến rất lớn
Sau khi nắm các tính năng và toàn bộ kiến trúc Asterisk, nhóm tiến hành cài ñặt và cấu hình Asterisk
2.3.3 Cài ñặt, cấu hình Asterisk
2.3.3.1 Cài ñặt Asterisk
Asterisk hoạt ñộng trên hệ ñiều hành Linux
Asterisk có thể ñược download tại ñịa chỉ website: www.asterisk.org Bạn có thể download các gói zaptel, Asterisk, Asterisk-sounds, Asterisk-addon
Trong ñó zaptel là driver, Asterisk dùng cho giao tiếp phần cứng analog hoặc digital hardware, kết nối với mạng PSTN Nếu ta không kết nối với mạng PSTN thì có thể bỏ qua gói này, ta chỉ cần dùng một gói Asterisk ñể cài ñặt và sử dụng chương trình Asterisk ) Nếu ta có kết nối với mạng PSTN, ta phải cài ñặt gói này trước khi cài ñặt gói Asterisk
Giới thiệu về hình ảnh của một card giao tiếp với ñường dây thoại
Hình 2.7: Hình ảnh về card TDM kết nối PSTN (loại TDM800P)Nếu một tổng ñài muốn kết nối với mạng PSTN thì cần cài ñặt gói zaptel ñầu tiên ðây là driver của card giao tiếp Digium trong Asterisk
Trang 28Cài ñặt gói zaptel với các bước như sau:
# make samples ; cài ñặt các ñoạn code mẫu
# make config ;ñảm bảo Asterisk sẽ ñược khởi ñộng cùng HðH Linux
Tiếp theo cài ñặt gói Asterisk-sound, phần này bổ sung thêm các file âm thanh với các chuẩn codec khác nhau: gsm, wav, G.711,… Các bước cài ñặt
2.3.3.2 Hướng dẫn cấu hình các file cần thiết trong Asterisk:
Trong các file cấu hình của Asterisk, ta có file zaptel.conf là file khai báo về card giao tiếp phần cứng, nhóm ñặt nó riêng biệt trong thư mục etc/ Ngoài ra, các file cấu hình còn lại ñều nằm trong thư mục etc/Asterisk/ ðầu tiên nhóm sẽ tìm hiểu việc cấu hình file zaptel.conf
2.3.3.2.1 Cấu hình file zaptel.conf
Việc cấu hình Asterisk cho kết nối phần cứng với mạng PSTN nằm trong file zaptel.conf tại thư mục etc/
fxsks : chỉ ra các port kết nối với máy trạm
fxoks : chỉ ra các port kết nối với tổng ñài
loadzone : chỉ ra tên quốc gia mà dữ liệu ñược sử dụng khi khởi tạo
defaultzone : chỉ ra tên quốc gia mà dữ liệu mặc ñịnh
Trang 29Tuy nhiên, việc card giao tiếp với tín hiệu thoại analog, nhóm sẽ cấu hình trong file zapata.conf
2.3.3.2.2 Cấu hình file zapata.conf:
Các lựa chọn cấu hình trong file zapata:
language: là ngôn ngữ mặc ñịnh sử dụng Việc thiết lập mặc ñịnh là “en” cho tiếng Anh context: thông báo cho Asterisk context mà cuộc gọi từ line analog qua phần cứng vào Asterisk
switchtype: chỉ dùng cho mạng ISDN, các thông số
pridiaplan: Thiết lập cho kết nối PRI
overlapdial: VIệc thiết lập này quyết ñịnh gửi hoặc không gửi trùng các số trong khi dialing Giá trị lựa chọn là “yes” hoặc “no”
signaling: chọn lựa phương thức báo hiệu Các giá trị lựa chọn là
em: báo hiệu E&M
em_w: E&M Wink
featd: Feature Group D, Adtran
featdmf: Feature Group D, US
featb: Feature Group B, US
pri_cpe: báo hiệu PRI, CPE (Customer Premises Equipment)
Pri_net: báo hiệu PRI, network
sf: báo hiệu SF
…
usecallerid: thiết lập là “yes” nếu chúng ta mong muốn dùng ñịnh danh người gọi (caller ID)
và ngược lại là “no”
callwaiting: thiết lập là “yes” ñể cho phép call waiting trên các thiết bị phần cứng giao tiếp bằng cổng FXO
group: chúng ta chỉ ñịnh các group cho các line
Callgroup: chỉ ñịnh một group mà
amaflags: ảnh hương ñến CDR () Biến này có thể thiết lập là ”default”, “omit”, “billing”,
‘documentation’ (các ký tự này sẽ ñược giải thích trong phần sau)
Accountcode: gán cho các kênh truyền các mã tài khoản với mục ñích tính toán (billing) Busydetect: thiết lập là “yes” ñể tìm những line bị ngắt kết nối hoặc ñang bận
Busycount: biến thiết lập thời gian busy tones có thể nghe trước khi ngắt kết nối kênh truyền Giá trị mặc ñịnh là 4
Musiconhold: thiết lập âm nhạc nghe trong lúc chờ
Channel: có thể là 1 kênh hoặc dãy các kênh Các kênh này phải phù hợp với các kênh ñịnh nghĩa trong file zaptel.conf
2.3.3.2.3 Cấu hình file sip.conf:
SIP là giao thức dùng ñể thiết lập, chỉnh sửa và kết thúc các phiên làm vụ trong các dịch vụ multimedia, chẳng hạn như các cuộc gọi ñiện thoại qua Internet
Trang 30Việc cấu hình sip là tạo tài khoản trong file sip.conf, user sẽ sử dụng tài khoản này ñể sử dụng các dịch vụ hay tiện ích do Asterisk cung cấp cho một SIP account Các thông tin cấu hình SIP ñược lưu trữ trong file /etc/Asterisk/sip.conf
ðịnh nghĩa cho các tài khoản
type: có 3 chọn lựa
user: cho phép thực hiện cuộc gọi ñến user
peer: cho phép user thực hiện cuộc gọi ñi
Friend: cho phép user nhận cuộc gọi ñến và gửi cuộc gọi ñi
Username: thiết lập username cho việc chứng thực
Secret: thiết lập password cho việc chứng thực
Md5secret: MD5 băm và mã hoá username và password
Callerid: thiết lập ñịnh danh caller ID
Host: thiết lập ñịa chỉ host của user Ở ñây ñược chỉ ra IP tĩnh hoặc từ khoá “dynamic” Defaultip: với host = dynamic, ở ñây thiết lập ñịa chỉ IP mặc ñịnh cho việc khi nhánh không ñược ñăng ký
Nat: thiết lập “yes”, hoặc “no” tuỳ việc thiết bị SIP có nằm sau firewall 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 thời gian nhất ñịnh
Incominglimit: thiết lập số lượng tối ña cuộc gọi, mà thiết bị có thể khởi tạo tại một thời ñiểm
Callgroup and pickupgroup: ñược thiết lập giống trong file Zapata.conf
Deny: là danh sách các ñịa chỉ IP loại bỏ khỏi máy chủ Asterisk
Permit: danh sách các ñịa chỉ IP ñược phép truy cập máy chủ Asterisk
2.3.3.2.4 Cấu hình file voicemail.conf:
Thông qua file /etc/Asterisk/voicemail.conf, chúng ta có thể cấu hình toàn bộ lựa chọn cho hệ thống voicemail tốt như ñịnh nghĩa của các hộp voicemail khác
Trong file cấu hình, chúng ta cấu hình những lựa chọn chung:
serveremail: ñịa chỉ server mà email có ñính kèm voicemail ñược gửi ñến
fromstring: tên hiển thị email ñến
attach: thông số ñáp ứng của serveremail, ta sẽ cấu hình là “yes” hoặc “no”
maxmessage: thời gian tối ña của thông ñiệp voicemail (ñơn vị: giây)
Minmessage: thời gian tối thiểu của thông ñiệp voicemail (ñơn vị: giây)
Maxgreet: thời gian tối ña mà các user có thể thu âm lời chào (ñơn vị: giây)
Maxsilence: thời gian im lặng trước khi kết thúc viêc thu âm (ñơn vị: giây)
Maxlogin: thiết lập số lần users login không ñược, khi ñạt ñến số lần này sẽ bị ngắt kết nối
Trang 31Tạo vùng thời gian (timezone)cho thông ñiệp ðiều này làm cho Comedian mail biết nó nên nói vùng thời gian chính xác khi báo cho các user về thông ñiệp mà các users nhận ñược Ví dụ: chúng ta sống ở vùng thời gian Central, ta sẽ cấu hình như sau:
[zonemessages]
Central=Vietnam/Chicago|’vm-received’ Q ‘digits/at’ IMp
Vùng thời gian ñược ñịnh nghĩa trong thư mục /usr/share/zoneinfo/
Cuối cùng ta ñịnh nghĩa các hộp mail mailboxes Chúng ta phải ñặt mỗi hộp mailbox trong một context, hộp voicemail box nên giống với extension của user Cấu hình:
Voicemailbox => password,username,emailaddress,pageraddress,options
Chúng ta có thể cấu hình một hoặc nhiều option cho một user
tz: là thiết lập vùng thời gian timezones, ñược ñịnh nghĩa trong [zonemessages]
attach: 1 user muốn file voicemail của họ ñược ñính kèm vào email
Saycid: làm Comedian Mail speak Caller ID của caller, người gửi thông ñiệp
Operator: cho phép chúng ta ñịnh nghĩa việc một caller có thể nhấn số 0 cho việc gửi thông ñiệp
Mỗi option ñược tách biệt ký hiệu “|”
Nếu chúng ta muốn có hộp voicemail cho nhánh 1000, với password là 1234, chấp nhận mọi
sự mặc ñịnh, không gửi mail, chúng ta sẽ cấu hình trong file voicemail.conf như sau:
Dialplan gồm 4 phần chính: contexts, extensions, priorities, và applications
Nhóm giải thích chi tiết từng phần như sau
a) Contexts:
Contexts là tên của một nhóm các nhánh, với mỗi nhánh có một ứng dụng Như vậy, trong mỗi context này sẽ thực hiện các chức năng mà nhóm mong muốn cho mỗi context Ví dụ: Context A thì nhóm quy ñịnh chỉ thực hiện ñược gọi ñến tài khoản X, có thể sử dụng ñược hộp thư thoại, trong khi context B nhóm quy ñịnh có thể thực hiện ñược gọi ñến tài khoản Y, và không sử dụng ñược hộp thư thoại
Các nhánh trong những context khác nhau là cách li hoàn toàn, tức là nhánh trong context có thể giống với nhánh trong context khac, nhưng Asterisk vẫn phân biệt ñược các nhánh này Context ñược chứa trong dấu ngoặc vuông “[]”
Tên của context có thể ñược thiết lập với các chữ cái (A Z),chữ số (09) và gạch nối
Ví dụ: [abc]
Có 2 loại context ñặc biệt là [globals] và [general] Chúng ta sẽ tìm hiểu trong phần sau
Trang 32b) Extension:
Extension là một cấu trúc mà Asterisk sẽ cho phép thực hiện cuộc gọi vào một kênh extensions chỉ rõ những cái mà xảy ra trong cuộc gọi khi chúng thực hiện những cách thức thông qua dialplan
Cú pháp thực hiện extension là:“exten =>”
Một extension hoàn chỉnh bao gồm 3 thành phần:
+ Tên (hoặc số)
+ Thứ tự thực hiện lệnh
+ Ứng dụng (hoặc lệnh) thực hiện vài hành ñộng trong cuộc gọi
Cả 3 thành phần này ñược tách biệt bởi các dấu phẩy
exten=> name,priority,application()
Ví dụ: exten => 123,1,Answer()
Các các tên của nhánh ñặc biệt:
S Khi những cuộc gọi ñến một context với không một nhánh ñích
xác ñịnh, chúng ñược ñiều chỉnh tự ñộng bởi nhánh này
i (invalid) Khi người gọi nhấn phím không có giá trị, thì cuộc gọi sẽ ñược
chuyển ñến nhánh i
t (timeout) Người gọi không nhấn phím nào trong 1 khoảng thời gian nhất
ñịnh (timeout), thì cuộc gọi sẽ ñươc chuyển ñến nhánh t
Ta có thể thiết lập các nhánh tùy 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ố có thể chúng ta muốn làm cho phù hợp Những hình thức luôn luôn bắt ñầu dấu gạch dưới (_)
Sau dấu gạch dưới, bạn có thể sử dụng 1 hoặc nhiều ký tự theo sau:
X: những số từ 09
Y: những số từ 19
Z: những số từ 29
[15-7]: một số hoặc 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 tùy biến trong Dialplan của bạn, ñặt hình thức (pattern) tại nơi tên (số) nhánh
Ví dụ: exten => _NXX,1,Playback(auth-thankyou)
Ở ñây hình thức là bất kỳ nhánh gồm 3 số từ 200 ñến 999 (N là 1 trong các số từ 2 >9) mà khi người gọi gọi vào nhánh bất kỳ trong 3 số này (NXX) thì họ sẽ nghe âm thanh từ file auth-thankyou.gsm
Sử dụng biến kênh truyền ${EXTEN}:
Khi gọi ñến 1 nhánh, Asterisk thiết lập biến kênh truyền ${EXTEN} ñến số ñược gọi Biến này nhận giá trị mà chúng ta nhấn vào
Chúng ta có thể sử dụng ứng dụng gọi SayDigits() ñể kiểm tra biến:
exten=> _XXX,1,SayDigits(${EXTEN})
SayDigits(): ñọc trở về 3 số mà bạn gọi
Trang 33Xóa x số ñứng ở vị trí bên trái bằng cú pháp:
exten => _XXX,1,SayDigit(${EXTEN:x})
Ví dụ: giá tri của EXTEN là 95551212, ${EXTEN:1} bằng 5551212
ðọc ngược lại y số ñứng ở vị trí bên phải
Answer() Là trả lời một kênh ðiều này thực hiện thiết lập ban ñầu cho kênh
mà nó nhận cuộc gọi vào Playback() Chạy file âm thanh ñược ghi lại sẵn trên 1 kênh Khi sử dụng ứng
dụng này, ngõ vào từ người sử dụng bị từ chối, tức là user không thể thực hiện bất kỳ thao tác nào
Background(): Giống như Playback() nó play file âm thanh, và khác với
Playback() là khi người gọi nhấn một phím hay một chuỗi phím trên ñiện thoại, nó sẽ ngắt Background() và chạy nhánh mà ñáp ứng với việc nhấn số
Thông thường việc dùng ứng dụng Background() nhằm tạo ra những menu voice ñể những công ty hướng người sử dụng vào nhưng extension thích hợp
Hangup() Từ chối kênh chủ ñộng Ngừơi gọi sẽ nhận tín hiệu cuộc gọi bị từ
chối Bạn sẽ sử dụng ứng dụng khi bạn muốn kết thúc một cuộc gọi Goto() ðược sử dụng ñể gửi cuộc gọi ñến context, extension và priority
khác Ứng dụng này làm cho nó dễ dàng di chuyển một cách lập trình cuộc gọi giữa những phần khác của dialplan
Dial() Ứng dụng này giúp kết nối những máy trạm lại với nhau ðiều này
là lợi ích ñặc biệt cho những máy trạm ñang sử dụng những phương pháp thông tin liên lạc khác nhau Ví dụ, máy trạm A có thể thông tin liên lạc qua chuẩn mạng ñiện thoại tương tự, trong khi máy trạm
B sử dụng IP phone Cả 2 có thể liên lạc với nhau bằng tổng ñài sử dụng Asterisk với ứng dụng Dial()
Cú pháp: Dial(channel,timeout,r) Một số kênh truyền ñược hỗ trợ: SIP, IAX, ZAP
Trang 34GotoIf() Cú pháp:
GotoIf(expression?destination1:destination2) Nếu giá trị expression là true, người gọi se ñược chuyển ñến destination1 và ngược lại
Destination có thể là:
_ Một priority trong cùng extension, như 10 _ Một extension và một priority trong cùng context, như 123,10 _ Một context, extension, priority, như incoming, 123,10 _ Tên priority trong cùng extension
GotoIfTime() Dựa vào thời gian hiện hành của hệ thống và sử dụng nó ñể quyết
ñịnh hoặc không ñể thực hiện các ứng dụng khác nhau trong dialplan
Cú pháp cho hàm GotoIfTime():
GotoIfTime(times,days_of_week,days_of_month,months?label) Hàm GotoIfTime() chuyển cuộc gọi ñến label ñặc biệt nếu ngày hiện hành và thời gian phù hợp vời tiêu chuẩn chỉ ñịnh bởi times, days_of_week, days_of_month và months
Chi tiết về các thông số:
times: ñây là danh sách một hay nhiều khoảng thời gian, trong mặc ñịnh là 24h
days_of_week: gồm 1 hay nhiều ngày trong tuần Các ngày ñược chỉ ñịnh là: mon, tue, wen, thu, fri, sat, sun
days_of_month: gồm 1 hay nhiều ngày trong tháng Các ngày ñược chỉ ñịnh bởi những số từ 1 ñến 31
Thông số label là : _ Một priority trong cùng extension
_ Một extension và một priority trong cùng context
_ Một context, extension, và priority
_ Tên priority trong cùng extension
MeetMe() Ứng dụng này cho phép nhiều người nói chuyện với nhau trong
phòng thoại Các ñặc ñiểm chính:
_ Khả năng tạo mật mã bảo vệ
_ Quản trị hội thảo (chặn tiếng hội thoại, khóa hội thoại, lọai bỏ một thành viên)
_ Sự tạo ra hội thoại tĩnh hoặc ñộng
Kết hợp file cấu hình cho hệ thống hội thoại MeetMe là meetme.conf
2.3.4 Giới thiệu Asterisk Gateway Interface (AGI)
Trong kiến trúc Asterisk, Asterisk hỗ trợ kênh giao tiếp với chương trình ngoài, cho phép ta viết các ứng dụng bên ngoài tương tác với Asterisk
2.3.4.1 Asterisk Gateway Interface ( AGI ) là gì ?
Trang 35Asterisk Gateway Interface ( AGI ) là một chuẩn giao tiếp với Asterisk 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 …
2.3.4.2 Cấu trúc cơ bản AGI
AGI Script liên lạc với Asterisk bằng các kênh thông tin STDOUT, STDIN và STDERR
STDOUT : AGI script gửi thông tin ñến Asterisk
STDIN : Asterisk gửi thông tin về AGI script
STDERR: Thông tin lỗi
Hình 2.8: Sơ ñồ giao tiếp giữa Asterik và AGI Script
Trong sơ ñồ trên cho chúng ta thấy AGI giao tiếp với rất nhiều các thành phần khác nhau Giao tiếp với database ñể 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 trên nền web như kiểm tra mail, Coffiee 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
2.3.4.3 Phân loại AGI
AGI gồm một số loại như sau :
• AGI : ðây là loại AGI bình thường AGI Script có thể ñược lập trình bởi nhiều loại ngôn ngữ khác nhau , có khả năng ñiều khiển Dialplan,và phải ñặt trên máy chủ Asterisk
• EAGI (enhanced AGI) : ðây là loại AGI nâng cấp có các chức năng giống như AGI ,
Trang 36• DeadAGI : có chức năng tương tư như AGI nhưng DeadAGI còn có khả năng làm việc trên các kênh “chết” ( kênh “chết” là kênh thoại ñã ñược kết thúc ) , ñây là khả năng mà AGI bình thường không có
• FastAGI : cho phép Asterisk gọi AGI Script qua mạng TCP/IP , AGI Script không cần phải ñặt ngay trên máy chủ Asterisk
2.3.4.4 FastAGI
2.3.4.4.1 Giới thiệu FastAGI
FastAGI giúp Asterisk gọi các AGI Script trên các TCP sockets Ưu ñiểm khi dùng FastAGI là giúp máy chủ Asterisk giảm bớt ñược công việc thực hiện các AGI Script , ngoài ra nếu có nhiều máy chủ Asterisk thì chúng có thể gọi các AGI Script từ một máy trung tâm
2.3.4.4.2 Cấu hình gọi FastAGI trong Dialplan
ðể gọi AGI Script từ Dialplan , ta cần cấu hình Dialplan như sau :
exten => 100,1,AGI(agi://IP_Address:Port/AGI_Script)
Trong câu lệnh trên :
- IP_Address : là ñịa chỉ IP của máy chứa AGI Script
- Port : là port của chương trình AGI Script , mặc ñịnh là port 4573 ( TCP ) Nếu ta muốn thay ñổi port khác thì ta cần lập trình lại trong AGI Script
- AGI_Script : ðây là tên của AGI Script là mà ta muốn gọi
Ví dụ ta muốn gọi AGI Script tên noaction ở máy 192.168.16.70 thì ta cấu hình trong Dialplan như sau :
exten => 100,1,AGI(agi:// 192.168.16.70/filename)
2.3.5 Giới thiệu Thư viện Asterisk dot net:
2.3.5.1 Giới thiệu:
Asterisk.NET là một thư viện ñược viết bằng C# , giúp ta có thể lập trình các ứng dụng giao tiếp với tổng ñài Asterisk Asterisk NET hỗ trợ ñầy ñủ 2 chuẩn tiếp của Asterisk với các chương trình ngoài , ñó là FastAGI và Manager API Asterisk.NET hỗ trợ tất cả các lệnh mà FastAGI của Asterisk hỗ trợ Còn với Manager API , ta có thể nhận các sự kiện từ máy chủ Asterisk ( ví dụ như tình trạng ñăng ký của các người dùng, quá trình gọi ….) và gởi các lệnh ñiều khiển ñến máy chủ Asterisk (ví dụ như : mở hoặc dừng thu âm …) Ta có thể download thư viện này tại ñịa chỉ website: http://sourceforge.net/projects/asterisk-dotnet/
Dựa vào thư viện này, nhóm lập trình trên thư viện này làm một chương trình trung gian có thể kết nối với Asterisk server và database server, nhằm mục ñích xây dựng hệ thống trả lời tự ñộng Hệ thống trả lời tự ñộng do nhóm xây dựng sẽ ñược trình bày chi tiết trong phần sau
2.3.5.2 Các lệnh FastAGI trong Asterisk.NET:
ðây cũng là các ứng dụng trong Asterisk, và các ứng dụng này ñược hỗ trợ trong thư viện Asterisk dot net với mục ñích ñiều khiển Asterisk
Trang 371 Answer() Nhận cuộc gọi
ðặt callerId cho người gọi trên kênh thoại hiện thời
5 PlayMusicOnHold() Thực hiện chức năng Music On Hold
6 GetChannelStatus() Cho biết trạng thái kênh thoại , kết quả trả về là giá trị số
nguyên như sau :
0 Kênh thoại rảnh, có thể gọi
1 Kênh thoại rảnh , nhưng ñã bị ñặt trước , không thể gọi
2 Kênh thoại không có tone ( offhook )
3 Số ñã ñược gọi
4 Line ñang reo chuông
5 ðầu cuối ñang reo chuông
6 Line ñang nhấc máy
Trang 3815 SayDigits(string
digits)
Asterisk ñọc số digits giới hạn là 0 – 999999999 Các file
âm thanh ñược chứa tại /var/lib/asterisk/sounds/digits Ví
dụ khi thực hiện lệnh SayDigits (“1000”) thì Asterisk ñọc
17 SayAlpha(string text) Asterisk sẽ ñọc rời rạc từng chữ trong text
18 SayTime(long time) Asterisk sẽ ñọc giờ trong time
- Trong AGI Script , ta lập trình như sau : GetVariable(extension);
Kết quả trả về của hàm này sẽ cho giá trị của biến
${EXTEN}
21 SetVariable(string
name, string val)
Hàm ñặt giá trị biến của kênh thoại
int timeout, int offset,
bool beep, int
maxSilence)
Thu âm cuộc gọi
file : là tên file lưu
format : là ñịnh dạng file , thường là wav
escapeDigits : là phím quy ñịnh ñể khi nhấn thì việc thu
âm dừng lại
timeout : là thời gian thu âm tối ña , -1 thì sẽ không giới hạn
beep : nếu là true thì sẽ có tiếng beep trước khi thu âm
maxSilence : khoảng im lặng tối ña ( tính theo giây)
Trang 39CHƯƠNG III: Xây dựng phần mềm thoại máy trạm
ðể có thể lập trình phần mềm thoại máy trạm, nhóm dựa trên thư viện cung cấp giao thức SIP và
xử lý âm thanh Trong số các thư viện mã nguồn mở có trên Internet thì PJSIP là một thư viện hỗ trợ ñầy ñủ các tính năng nhóm cần
3.1 Gii thi u t&ng quát v th5 vi n PJSIP
3.1.1 Tổng quan:
PJSIP là một thư viện mã nguồn mở, giúp dễ dàng lập trình phần mềm thoại có hỗ trợ giao thức SIP và xử lý âm thanh Toàn bộ thư viện ñược viết theo ngôn ngữ C Ta có thể download dễ dàng thư viện này tại http://pjsip.org/ Sau ñây là một số ñặc ñiểm quan trọng của thư viện này :
- ðặc ñiểm hỗ trợ SIP :
• ðăng ký nhiều tài khoản
• Nhiều cuộc gọi
• PRACK (100rel, RFC 3262)
• UPDATE (RFC 3311)
• OPTIONS
• Giữ cuộc gọi ( Hold )
• Chuyển cuộc gọi ( RFC 3515, 3891, 3892, 4488)
• SIMPLE với PIDF và XPIDF (SUBSCRIBE/NOTIFY, RFC 3265, 3856, 3863)
• Hỗ trợ tên trạng thái tùy chọn (RPID, RFC 4480)
- ðặc ñiểm hỗ trợ về âm thanh :
• Nhiều cuộc gọi cùng lúc
• Hội thảo
• Codec : Speex, iLBC, GSM, G711, và L16
• Hỗ trợ thu âm thoại , phát , truyền file âm thanh dạng WAV
Trang 40• AEC (Accoustic echo cancellation)
• Adaptive jitter buffer
• Adaptive silence detection
• PLC (Packet Lost Concealment)
• Giả lập mất gói
• Gởi nhiều khung trong một gói RTP
• Bảo mật SRTP (còn ñang phát triển )
- ðặc ñiểm hỗ trợ NAT:
• ICE (Interactive Connectivity Establishment)
• STUN (rfc3489-bis)
• Luôn cập nhật SIP TCP và TLS
• Tự ñộng phát hiện và phục hồi ñịa chỉ SIP UDP bị thay ñổi
• Tự ñộng phát hiện sự thay ñổi khi truyền âm thanh thanh ICE
- Hiệu năng cao: hàng ngàn cuộc gọi có thể ñược xử lý trên một máy tính ñể bàn
Intel/2.66Ghz Sau ñây là kết quả ño vào ngày 11 tháng 07 năm 2006 , phiên bản PJSIP 0.5.6.5 Kết quả cho thấy chỉ cần một máy P4/2.66GHz cũng có thể xử lý ñược 7000 giao dịch trên 1 giây (Số liệu lấy từ http://pjsip.org/)
Hình 3.1: Hiệu suất xử lý cuộc gọi của máy chủ khi dùng PJSIP
- Có thể hoạt ñộng trên nhiều hệ ñiều hành: Linux, BSD, Windows 95 (win95/win98/winME), WinNT (WinNT/2000/XP/2003/Vista), Symbian, Microsoft Windows Mobile , Windows CE (WinCE), PocketPC, SmartPhone, Solaris … Có thể biên dịch bởi nhiều loại compiler như : MSVC 6, VS.NET 2003, VC.NET 2005, GCC
... II: Nghiên cứu tổng ñài nội IP PBX2.1 Gii hi u t&ng ñài PBX:
2.1.1 Hệ thống tổng đài PBX gì?
PBX từ viết tắt Private Branch Exchange PBX tổng. .. Xây dựng phần mềm thoại máy trạm
ðể lập trình phần mềm thoại máy trạm, nhóm dựa thư viện cung cấp giao thức SIP
xử lý âm Trong số thư viện mã nguồn mở có Internet PJSIP thư viện...
Trong trình nghiên cứu, nhóm nhận biết ựược phần mềm hệ thống áp dụng cho tổng ựài IP PBX phần mềm Asterisk
2.3.1 Asterisk gì?
Asterisk phần mềm mã nguồn mở ựược