Nhằm đáp ứng nhu cầu về lĩnh vực Viễn Thông-CNTT, tôi cung cấp những khái niệm cơ bản nhất về hệ thống VoIP và nghiên cứu về một hệ thống tổng đài nguồn mở . Đó là tổng đài Asterisk. Với bài báo cáo thực tập này, tôi đã được thực hành với mô hình trên công ty và đã rút ra một số khái niệm cơ bản và dễ hiểu nhất.
Trong bài thực tập này, tôi có nghiên cứu về Chức năng chia sẻ dữ liệu giữa máy tổng đài và máy cục bộ, cơ chế FastAGI,hàm TextToSpeech.
47 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 4795 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Nghiên cứu công nghệ VoIP và các ứng dụng cơ bản trogn tổng đài Asterisk, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
T
A
ATA : Analog Telephone Adaptors Bộ chuyển đổi điện thoại số
API : Application Programming Interface Giao diện ứng dụng
AGI : Asterisk Gateway Interface Giao diện cổng Asterisk
ACD : Automatic Call Distribution Phân phối cuộc gọi tự động
C
CGI : Computer Graphics International Đồ họa máy tính quốc tế
CSDL : Cơ sở dữ liệu
F
FXO : Foreign Exchange Office Cổng tiếp nhận đường tín hiệu tương tự
FXS : Foreign Exchange Station Cổng cung cấp đường tín hiệu tương tự
H
HTTP : Hypertext Transfer Protocol Giao thức truyền siêu văn bản
I
IP : Internet Protocol Giao thức Internet
IP-PBX : Internet Protocol- Tổng đài IP
Private Branch Exchange
IAX : Inter-Asterisk eXchange Giao thức chuyển đổi IAX
IVR : Interactive Voice Response Tương tác thoại
ITSP : Internet Telephony Service Provider Nhà cung cấp dịch vụ điện thoại Internet
IETF : Internet Engineering Task Force Cộng đồng quốc tế mở về mạng
ITU : International Telecommunication Union Liên minh Viễn thông quốc tế
ISDN : Interated Services Digital Network Mạng số tích hợp dịch vụ
M
MGCP : Media Gateway Control Protocol Giao thức điều khiển cổng truyền thông
MD5 : Message-Digest algorithm 5 Là hàm băm mật mã
N
NAT : Network Address Translators Biên dịch địa chỉ mạng
P
PBX : Private Branch Exchange Tổng đài Nhánh Riêng
PSTN : Public Switched Telephone Network Mạng điện thoại chuyển mạch công cộng
R
RJ-11 : Registered Jack 11 Kết nối các thiết bị điện thoại
RJ-45 : Registered Jack 45 Kết nối các thiết bị trong mạng Ethernet
RTP : Real-Time Transport Protocol Giao thức truyền thời gian thực
RSA : Resgister Admission Status Báo hiệu đăng kí, cấp phép, thông tin trạng thái
RFC : Request for Comment Yêu cầu cho ý kiến
RTCP : Real Time Control Protocol Giao thức điều khiển thời gian thực
S
SIP : Session Initiation Protocol Giao thức khởi tạo phiên
SCCP : Signaling connection Control Part Phần điều khiển kết nối tín hiệu
SMTP : Simple Mail Transfer Protocol Giao thức truyền thông tin đơn giản
T
TDM : Time Division Multiplexing Ghép kênh phân chia thời gian
TĐĐTS : Tổng đài điện tử số
TLS : Transport Layer Securit Giao thức bảo mật lớp truyền tải
TCP : Transport Control Protocol Giao thức điều khiển truyền TCP
U
UDP : User Datagram Protocol Giao thức gói người sử dụng
V
VoIP : Voice over Internet Protocol Thoại trên IP
VPN : Virtual Private NetWork Mạng riêng ảo
WAN : Wide Area Network Mạng diện rộng
MỞ ĐẦU
--o0o--
Công nghệ thoại qua nền Internet dung giao thức IP (Voice Over IP – VoIP), là một công nghệ mà cho phép tạo cuộc gọi bằng cách kết nối băng thông rộng thay vì dùng đường dây điện thoại sử dụng tín hiệu tương tự (analog).
Công nghệ Voip dựa trên chuyển mạch gói (thay thế công nghệ chuyển mạch kênh). Nó có thể nén-ghép nhiều kênh thoại trên một đường truyền tín hiệu. Các tín hiệu này được truyền qua mạng Internet, vì thế có thể giảm giá thành đáng kể. Để thực hiện việc truyền tải này, điện thoại IP phải tích hợp sẵn các giao thức báo hiêu chuẩn như SIP hay H.323 để kết nối tới một tổng đài IP của doanh nghiệp hay nhà cung cấp.
Và đã có một phần mềm ra đời trên sự kết hợp giữa chuyển mạch VoIP và chuyển mạch TDM. Sản phẩm này là một hệ thống chuyển mạch mềm – mã nguồn mở. Nó được viết bằng ngôn ngữ C,tích hợp chạy trên nền Linux. Đó chính là phần mềm Asterisk. Sản phẩm này thực hiện đầy đủ các tính năng của một tổng đài cùng một số tiện ích mới rất hấp dẫn.
Asterisk ra đời vào năm 1999 bởi một sinh viên sinh năm 1977 tên là Mark Spencer. Anh ta viết phần mềm này ban đầu với mục đích hỗ trợ cho công ty của mình trong việc liên lạc đàm thoại. Sản phẩm giúp gia tăng khả năng phục vụ khách hàng và giảm chi phí cho hệ thống thông tin liên lạc trong nội bộ doanh nghiệp
Asterisk hỗ trợ nhiều giao thức truyền thông khác nhau do sự kết hợp công nghệ hiện đại VoIP và công nghệ PSTN . Điều này làm cho nó một công cụ mạnh cho việc xây dựng các gateway và việc chuyển đổi giao thức.
Với tổng đài nội bộ, khi khách hàng gọi đến không phải lúc nào cũng có nhân viên bắt máy. Vì thế, hệ thống tổng đài này có một số chức năng như: ghi âm cuộc gọi, chuyển cuộc gọi vào hộp thư thoại.Hệ thống chuyển cuộc gọi tự động bằng cách yêu cầu khách hàng nhấn tổ hợp phím và xuất các thong tin cần thiết (với sự hỗ trợ cảu công nghệ Text To Speech).
Và để hiểu thêm về hệ thống Asterisk , chúng ta phải tìm hiểu công nghệ Voip và các tiện ích của nó.
LỜI CẢM ƠN
--o0o--
Trong kì thực tập tốt nghiệp vừa qua,chúng em đã có cơ hội để tổng kết và áp dụng những kiến thức mà mình đã học. Đồng thời, chúng em đã có thêm những kiến thức cơ bản về các kỹ thuật viễn thông, các kiến thức về lập trình trên phần cứng.Sau một thời gian làm việc với nhau, cùng với sự hướng dẫn và trợ giúp tận tình của thầy Trần Minh Nhật, chúng em hoàn thành đề tài này một cách thuận lợi và gặt hái được một số kết quả khả quan.
Chúng em xin chân thành cảm ơn khoa Công nghệ Thông tin II, đã tạo điều kiện thuận lợi và giúp đỡ chúng em hoàn thành tốt khóa luận tốt nghiệp này.
Chúng em xin chân thành cảm ơn thầy Trần Minh Nhật – giáo viên hướng dẫn đề tài của nhóm, đã tận tình chỉ dạy, giúp đỡ chúng em trong quá trình làm đề tài.
Chúng em xin chân thành cám ơn các thầy cô trong khoa Công nghệ thông tin II đã tạo điều kiện và giúp đỡ cho nhóm em hoàn thành đề tài.
Chúng em xin chân thành cảm ơn đến các anh chị ở công ty quốc tế Sông Hồng, đã tạo điều kiện cho chúng em hoàn thành tốt đề tài này.
Trên nền tảng những gì đã thực hiện, chúng sẽ tiếp tục phát triển đề tài này đề phần mềm có thể áp dụng trong thực tế.
Tuy chúng em đã cố gắng hoàn thành thật tốt đề tài nhưng chắc chắn sẽ không tránh khỏi những sai sót. Kính mong quí Thầy Cô và các bạn góp ý để đề tài hoàn thiện hơn.
Xin chân thành cảm ơn!
Sinh viên thực hiện
Nguyễn Thanh Tâm
CHƯƠNG 1: TỔNG QUAN VỀ VOIP
Giới thiệu VoIP
Khái niệm:
VoIP (Voice Over Internet Protocol) là một công nghệ cho phép truyền thoại sử dụng giao thức mạng IP trên cơ sở hạ tầng sẵn có của mạng Internet.
VoIP vừa có thể thực hiện mọi loại cuộc gọi như trên mạng điện thoại thông thường vừa có thể truyền dữ liệu trên mạng truyền số 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 rộng rãi.
Dịch vụ điện thoại VoIP bao gồm việc số hóa tín hiệu tiếng nói, thực hiện 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 trình tự bản tin và giải mã để phục hồi lại tiếng nói ban đầu.
Các cuộc gọi trong VoIP dựa trên cơ sở sử dụng kết hợp chuyển mạch kênh và chuyển mạch gói. Trong mỗi loại chuyển mạch đều có ưu và nhược điểm.
+ Với chuyển mạch kênh dành riêng một kênh có tốc độ truyền dẫn cố định (trong mạng PSTN, tốc độ này là 64Kbit/s) do đó có độ trễ nhỏ và độ chính xác cao nên không thể xảy ra tắc nghẽn.
+ Với chuyển mạch gói, các bản tin được chia thành các gói nhỏ, sử dụng hệ thống lưu trữ và chuyển tiếp các gói thông tin trong nút mạng. Đối với loại chuyển mạch gói này không tồn tại khái niệm kênh riêng và băng thông hoàn toàn có thể thay đổi được. Tuy nhiên, kỹ thuật này lại cho độ trễ lớn vì trong chuyển mạch này không quy định thời gian mỗi gói tới đích do đó không đáp ứng được tính thời gian thực như trong thoại.
Như vậy để truyền dẫn thoại trong môi trường mạng chuyển mạch gói, VoIP phải kết hợp cả ưu điểm của hai loại chuyển mạch trên.
Ưu và Khyết của VoIP:
Ưu điểm:
Đối với điện thoại Internet có các cơ chế để phát hiện khoảng lặng (khoảng thời gian không có tiếng nói) nên sẽ làm tăng hiệu suất mạng.
Điện thoại IP là bước đột phá về công nghệ và dịch vụ, mang lại khả năng gọi đường dài và quốc tế với giá rẻ.
Điện thoại IP còn mang lại lợi ích trong việc phát triển các dịch vụ viễn thông tích hợp và mở rộng .
Khuyết điểm của VoIP:
Không thể thực hiện mọi cuộc gọi qua Internet nếu như người gọi không trực tuyến trên mạng.
Không đảm bảo tính bảo mật.
Các thiết bị dùng trong VoIP:
VoIP phone
Là thiết bị phần cứng kết nối với VoIP giống như máy điện thoại cố định thông thường. Tuy nhiên để sử dụng cho VoIP cần phải cấu hình trước khi sử dụng.
Một số tính năng khi thực hiện mua thiết bị điện thoại VoIP:
Low Bandwidth: hỗ trợ cho loại Codec nào, thường hiện nay người ta sử dụng G729.
Web Interface: phải có giao tiếp thiết lập cấu hình thân thiện dễ sử dụng.
Audio Interface: xét xem có speaker phone hay không.
Softphone
Là một phần mềm được cài trên máy tính, thực hiện tất cả các chức năng giống như thiết bị điện thoại VoIP. Khi sử dụng softphone, để giao tiếp máy tính phải có card âm thanh, headphone và firewall không bị khóa(hoặc tắt firewall).
Đối với hệ thống Asterisk, nên dùng softphone với công nghệ giao thức mới dành cho Asterisk là IAX.
Card giao tiếp với PSTN
Để các máy điện thoại nội bộ trong hệ thống Asterisk kết nối và thực hiện cuộc gọi với mạng PSTN, chúng ta cần phải có thiết bị phần cứng tương thích. Thiết bị phần cứng sử dụng cho hệ thống Asterisk do chính tác giả lập công ty Digium phân phối, xuất phát từ ý tưởng phân phối phần mềm Asterisk và hệ thống nguồn mở miễn phí.
Thiết bị phần cứng thường ký hiệu bắt đầu bằng cụm từ TDMxyB trong đó x là số lượng port FXS, y là số lượng port FXO.Giá trị tối đa của cả x và y là 4.
ATA (Analog Telephone Adaptors)
ATA là thiết bị kết nối với điện thoại Analog thông thường đến mạng VoIP, một thiết bị ATA gồm có hai loại port:
RJ-11 để kết nối với máy analog thông thường.
RJ-45 để kết nối với mạng VoIP.
ATA là thiết bị FXS chuyển đổi tín hiệu Analog sang tín hiệu số, nó sử dụng cho mạng VoIP để tận dụng thiết bị Analog kết nối VoIP.
Thiết bị ATA sử dụng với giao thức IAX được Digium phân phối và thiết bị ATA này được sử dụng rộng rãi với Asterisk có tên gọi là IAXy.
Ưu điểm sử dụng tổng đài IP-PBX so với PBX truyền thống.
Hình 1.1: Một hệ thống của tổng đài IP-PBX
Tận dụng được toàn bộ hạ tầng mạng của đơn vị để truyền thông tin thoại, đơn giản hơn nhiều với PBX truyền thống, phải thực hiện đấu nối vật lý đường trung kế giữa 2 tổng đài.
Quản lý tập trung, thông qua giao diện web. quản trị viên có thể giám sát, vận hành, cấu hình từ bất kỳ đâu và bất cứ khi nào
Khả năng nâng cấp hệ thống cao nhất và không giới hạn số lương người dùng.
Có phần mềm Softphone cài trên máy tính, chỉ cần có thêm tai nghe và mic là biến thành điện thoại IP.
Khả năng di động: điện thoại IP có thể kết nối về tổng đài tại bất cứ vị trí nào có mạng là có thể sử dụng được ngay trong khi số điện thoại không hề thay đổi, thậm chí qua cả môi trường Internet.
Cắt giảm chi phí cuộc gọi đến mức thấp nhất giữa các chi nhánh, văn phòng và cuộc gọi quốc tế khi kết hợp với các nhà cung cấp dịch vụ điện thoại quốc tế (ITSP).
CHƯƠNG 2: TÌM HIỂU ASTERISK ỨNG DỤNG VOIP
Giới thiệu Asterisk
Vì sao chọn phần mềm Asterisk:
Tiết kiệm chi phí (hoặc chi phí thấp hơn so với các tổng đài khác)
Asterisk được xem như là một tổng đài PBX (Private Branch eXchange) và tích hợp nhiều tính năng mới.
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ả 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).
Phát triển trên môi trường mở:
Asterisk có thể chạy trên các hệ điều hành khác như: Mac OS X, FreeBSD, OpenBSD và Microsoft Windowns…
Với một máy tính đã cài hệ điều hành (một trong các hệ điều hành nói trên, ở đây ta xét hệ điều hành Microsoft Windowns) và có thêm phần mềm Asterisk đã cấu hình, khi đó máy tính này sẽ có đầy đủ tính năng của một tổng đài điện thoại và có thể hơn thế.
Khái niệm:
Asterisk là phần mềm nguồn mở,1 hệ thống chuyển mạch mềm, được viết bằng ngôn ngữ C, ra đời năm 1999 bởi Mark Spencer, đầu tiên được thiết kế và triển khai trên GNU/Linux nền x86 (của Intel).
Asterisk là một bộ công cụ mã nguồn mở cho các ứng dụng thoại. Là server xử lí đầy đủ các chức năng cuộc gọi, thực hiện tất cả các tính năng của tổng đài PBX.
Tích hợp giao tiếp với mạng PSTN và mạng VOIP cho phép gọi ra bất cứ số điện thoại nào trên mạng PSTN.
Hình 2.1: Cổng VoIP-to-PSTN bằng cách sử dụng Asterisk
ứng dụng cho điện thoại: chuyển mạch cuộc gọi, cuộc gọi hội nghị, voicemail, chuyển hướng cuộc gọi, …
Một Asterisk server được kết nối tới một mạng vùng nội hạt sẽ điều khiển các điện thoại trong mạng kết nối đến mạng khác, các điện thoại trong mạng có thể thực hiện cuộc gọi và kết nối Internet thông qua Asterisk server.
Cổng FXS dùng để Asterisk server điều khiển các điện thoại tương tự trong nội hạt. Cổng FXO và kênh T được dùng để kết nối giữa Asterisk server với mạng PSTN. Thuê bao trong mạng PSTN thực hiện cuộc gọi đến các thuê bao được quản lý bởi Asterisk server, các thuê bao của Asterisk cũng có thể thực hiện cuộc gọi đến thuê bao trong mạng PSTN.
Hình 2.2: Kiến trúc của Asterisk
Một số chức năng của Asterisk trong hệ thống chuyển mạch cuộc gọi:
Khi khởi động hệ thống Asterisk thì Dynamic Module Loader thực hiện nạp driver của thiết bị ,nạp các giao Hiện nay hệ thống Asterisk đang được phát triển mạnh, 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 máy tính, gọi điện thoại.
Hình 2.3.: Sơ đồ tổng quát hệ thống.
Asterisk không chỉ giao tiếp, kết nối giữa các điện thoại với nhau mà còn có thể mở rộng kết nối đến các tổng đài khác, với IP Phone và nhiều dịch vụ như: Softswitch, Media Gateway, Voicemail Services, Conference Server, Music on hold…
Asterisk là một phần mềm nguồn mở, miễn phí, có độ tin cậy cao.
Kiến trúc hệ thống
Asterisk là thiết bị trung gian dùng để liên kết công nghệ điện thoại và Internet. Asterisk được ứng dụng để kết nối điện thoại, đường dây điện thoại hoặc gói thoại đến một dịch vụ khác. Asterisk có độ tin cậy cao và dễ dàng triển khai cho các hệ thống ( từ hệ thống nhỏ đến các hệ thống lớn)
Asterisk hỗ trợ cho nhiều loại điện thoại với công nghệ khác nhau. Các công nghệ điện thoại: VoIP, SIP, H.323, IAX. Asterisk có thể kết nối với hầu hết loại điện thoại truyền thống mạng ISDN qua luồng T1 và E1. Các hàm API cũng được liên kết nạp vào hệ thống.
Hệ thống Asterisk PBX Switching Core chuyển sang trạng thái sẵn sàng thực hiện chuyển mạch cuộc gọi, các cuộc gọi được thực hiện tuỳ vào kế hoạch quay số (Dialplan).
Chức năng Application Launchar để rung chuông thuê bao, kết nối với hộp thư thoại hoặc gọi ra đường trung kế…
Scheduler and I/O Manager đảm nhiệm các ứng dụng nâng cao như: lập thời biểu và quản lý các cuộc gọi đến – gọi ra ngoài. Đây là 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 or IAX. Mọi cuộc gọi vào và ra ngoài đều được thực hiện thông qua các giao tiếp trên. Vì thế 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.
Chức năng của các giao tiếp chương trình ứng dụng (gọi là API: Application Program Interface)
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ư: GMS, G723, Mu-Law…
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, ISDN, 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, AU…
Asterisk Aplication API : Bao gồm tất cả các ứng dụng được thực thi trong hệ thống Asterisk như: cuộc gọi hội nghị, 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.
Tính năng cơ bản
Một sô tính năng cơ bản của tổng đài Asterisk:
Caller ID
- Hiển thị số người gọi trên điện thoại của bạn
- Caller ID cũng cho phép chúng ta xác nhận số thuê bao gọi đến.
Call
Forwarding
- Chuyển một cuộc gọi đến một hay nhiều số máy điện thoại được định trước.
- Chuyển cuộc gọi khi bận, chuyển cuộc gọi khi không trả lời, chuyển cuộc gọi tức thời, chuyển cuộc gọi với thời gian định trước.
Call Parking
- Thực hiện việc chuyển cuộc gọi nhưng có quản lý.
- Có một số điện thoại trung gian và hai thuê bao có thể gặp nhau khi thuê bao được gọi nhấn vào số điện thoại mà thuê bao chủ gọi đang chờ trên đó và từ đây có thể gặp nhau và đàm thoại.
IVR
- Chức năng tương tác thoại (tổng đài trả lời tự động).
- Có rất nhiều ứng dụng trong thực tế, khi gọi điện thoại đến một cơ quan hay xí nghiệp thuê bao thường được nghe thông điệp như:“Xin chào mừng bạn đã gọi đến công ty chúng XXX hãy nhấn phím 1 để gặp phòng kinh doanh, phím 2 gặp phòng kỹ thuật, phím 3 gặp phòng hỗ trợ khách hàng…” sau đó tuỳ vào sự tương tác của thuê bao gọi đến, hệ thống Asteisk sẽ định hướng cuộc gọi theo mong muốn.
- Dịch vụ xem điểm thi, tiền cước điện thoại của thuê bao, tỉ giá tiền tệ hiện nay như thế nào, hay kết quả sổ số, bản tin dự báo thời tiết… tất các những mong muốn trên đều có thể thực hiện qua chức năng tương tác thoại.
Time and Date
- Nhằm chỉ định các khoảng thời gian cụ thể cuộc gọi sẽ định hướng đến một số điện thoại hay một chức năng cụ thể khác.
- Ví dụ trong công ty giám đốc muốn chỉ cho phép nhân viên sử dụng máy điện thoại trong giờ hành chánh còn ngoài giờ thì sẽ hạn chế hoặc không cho phép gọi ra bên ngoài.
Remote call pickup
- Với tính năng này sẽ cho phép chúng ta từ máy điện thoại này có thể nhận cuộc gọi từ máy điện thoại khác đang rung chuông.
Privacy Manager
- Khi một người chủ doanh nghiệp triển khai Asterisk cho hệ thống điện thoại của công ty mình nhưng lại không muốn nhân viên trong công ty gọi đi ra ngoài trò chuyện với bạn bè, khi đó Asterisk cung cấp một tính năng tiện dụng là chỉ cho phép số điện thoại được lập trình được phép gọi đến những số máy cố định nào đó thôi, còn những số không có trong danh sách định sẵn sẽ không thực hiện cuộc gọi được
Blacklist
-Backlist cũng giống như Privacy Manager nhưng có một sự khác biệt là những máy điện thoại nằm trong danh sách sẽ không gọi được đến máy của mình (sử dụng trong tình trạng hay bị quấy rối điện thoại).
Voicemail
-Voicemail: hộp thư thoại với tính năng cho phép hệ thống nhận các thông điệp tin nhắn thoại, mỗi máy điện thoại được khai báo trong hệ thống Asterisk cho phép khai báo thêm chức năng hộp thư thoại. Khi số điện thoại bị gọi bận hay ngoài vùng phủ sóng thì hệ thống asterisk định hướng trực tiếp cuộc gọi đến hộp thư thoại tương ứng đã khai báo trước.
Voicemail cung cấp cho người sử dụng nhiều tính năng như: xác nhận password khi truy cập vào hộp thư thoại, gửi mail báo khi có thông điệp mới
Call Conference -Meetme
- Chức năng là 1 cuộc gọi hội nghị.
-Các cuộc họp khách hàng,họp nhóm… mà nhân viên hay bạn bè ở những địa điểm khác nhau. Cuộc gọi hội nghị này được xem như là một phương tiện chính để cắt giảm chi phí đi lại và cho phép người lao động có hiệu quả hơn bằng cách không phải đi ra ngoài văn phòng cho các cuộc họp.
Listening music
Chức năng nghe nhạc (nhạc chờ, các chương trình quà tặng âm nhạc).
Bảng 2.3: Tính năng của hệ thống Asterisk.
Và còn rất nhiều tính năng nữa mà hệ thống asterisk có thể cung cấp cho người sử dụng, trên đây chỉ là một số tính năng thường được sử dụng.
Các giao thức VoIP trong Asterisk
IAX ( Inter-Asterisk eXchange):
IAX là một giao thức mở, ta có thể download và phát triển nó miễn phí.
Phiên bản hiện tại của nó là IAX2, nhưng tất cả các hỗ trợ cho IAX1 không còn tồn tại nữa. Vì vậy khi nói đến IAX có nghĩa là IAX2. Trong Asterisk, IAX được hỗ trợ bởi module chan_iax2.
IAX được phát triển bởi Digium với mục đích giao tiếp với các server Asterisk khác, vì thế nó được gọi là Inter-Asterisk eXchange. IAX là giao thức truyền tải (giống như SIP), sử dụng port UDP 4569 cho cả kênh tín hiệu lẫn dòng dữ liệu RTP.
IAX có khả năng kết hợp lại nhiều phiên kết nối thành một dòng dữ liệu duy nhất. Việc kết hợp này làm tăng khả năng sử dụng băng thông. Thêm vào đó việc sử dụng một header chung duy nhất làm giảm thời gian overhead cho mỗi kênh riêng lẽ. Giao thức này thích hợp khi có nhiều kênh kết nối giữa hai đầu cuối.
Vì IAX được tối ưu hóa cho thoại, nên trên thực tế nó không ưu việc lắm khi truyền tín hiệu video. Tuy nhiên, vì nó là một giao thức mở, nên các việc mở rộng dành cho các loại dữ liệu khác ngoài thoại là điều hoàn toàn có thể.
Về khía cạnh bảo mật, IAX có khả năng nhận thực bằng 3 cách khác nhau như sau:
Plain text
Mã hóa MD5
Mã hóa trao đổi khóa RSA.
Điều này tất nhiên không mã hóa phần header giữa hai đầu cuối. Có nhiều giải pháp sử dụng mạng riêng ảo (VPN) và các phần mềm mã hóa khác đã được sử dụng, đòi hỏi đầu cuối phải thiết lập trước các phương pháp tunnel và hoạt động. Trong tương lai, IAX có thể mã hóa dòng dữ liệu giữa hai đầu cuối sử dụng việc trao đổi khóa RSA hoặc trao đổi hóa động tại thời điểm thiết lập cuộc gọi. Điều này rất hấp dẫn vì nó có tính bảo mật khá cao, đặc biệt trong các lĩnh vực đòi hỏi tính bảo mật như ngân hàng.
IAX và NAT:
+ IAX2 được thiết kế để tương thích với các thiết bị sử dụng giao thức NAT. Việc sử dụng duy nhất một port UDP cho cả tín hiệu báo hiệu và truyền dẫn dẫn đến tăng cườg tính năng bảo mật của firewall. Điều này làm cho IAX là một trong các giao thức bảo mật tốt nhất cho mạng.
SIP:
Sự ra đời của SIP đã giúp phát triển mạnh VoIP. SIP có ưu điểm là nó là giao thức đơn giản, có cấu trúc syntax khá giống với các giao thức như HTTP hay SMTP. SIP được hỗ trợ bởi module trong Asterisk là chan_sip.so module.
SIP được phát triển bởi IETF vào tháng 2-1996. Ban đầu SIP chỉ có chức năng yêu cầu thiết lập cuộc gọi. Vào tháng 3-1999, phiên bản thứ 11 có tên gọi là SIP RFC 2543 ra đời.
SIP được coi như là giao thức thông dụng của VoIP. Tất cả các user và doanh nghiệp đều có xu hướng hỗ trợ SIP. Ngày nay,SIP hỗ trợ thêm cả những chức năng không có trong VoIP như video, âm nhạc và các dịch vụ multimedia thời gian thực khác.
Về khía cạnh bảo mật, SIP sử dụng hệ thống challenge/response để nhận thực user. Khởi đầu là câu lệnh INVITE được gởi đển proxy để đến các thiết bị đầu cuối mong muốn. Proxy lúc này sẽ gởi đến một gói tin là 407 Proxy Authorization Request, chứa các ký tự được cài đặt một các ngẫu nhiên thường được gọi là “nonce”. Con số này được xem như là password để tạo ra mã MD5 được gởi ngược trở lại cho lệnh INVITE. Giả sử mã MD5 phù hợp với mã mà proxy tạo ra, client được xác thực.
Hình 2.4: Mô hình hoạt động SIP.
DoS (Denial of Service) được xem như phương thức tấn công thông dụng nhất trên mạng VoIP. Một phiên tấn công DoS sẽ diễn ra khi có một số lượng lớn các lời mời INVITE không hợp lệ đến proxy server để làm quá tải hệ thống. SIP có một vài phương thức để giảm thiểu tác động của DoS nhưng không thể hoàn toàn phòng ngừa nó.
Một lược đồ hỗ trợ tính bảo mật được cài đặt thêm bởi SIP là mật mã phương thức truyền tải (TLS- Transport Layer Security). Nó được sử dụng để thiết lập kết nối giữa người gọi và domain. Yêu cầu được gởi một cách bí mật đến đầu cuối, dựa trên các chính sách bảo mật của mạng. Lưu ý rằng phương thức mật mã không nằm trong khả năng của SIP và phải được kết hợp một cách độc lập.
SIP và NAT: Một trong những vấn đề lớn nhất khi triển khai SIP là truyền tải thông qua lớp NAT. Bởi vì SIP mật mã thông tin địa chỉ trong cấu trúc khung của nó. NAT ở lớp mạng sẽ không nhận đúng địa chỉ này.Vì thế dòng dữ liệu sẽ không được truyền tải đúng như mong muốn. Như vậy, các firewall được tích hợp chức năng NAT sẽ loại bỏ các kết nối SIP này.
H.323:
H323 được phát triển bởi ITU từ tháng 5-1996, để hỗ trợ truyền thoại, video, dữ liệu ,fax… trong mạng IP trong khi vẫn duy trì kết nối với mạng PSTN truyền thống. Từ thời điểm đó, H323 đã có một vài phiên bản với các tính năng bổ sung cho phép nó hoạt động trong một mạng thuần VoIP và các mạng phân bố khác.
Dù có nhiều tranh cãi xung quanh việc sử dụng H323 hay là SIP .Trên thực tế mạng VoIP, H323 có vài trò cao nhất nhưng trên hệ thống Asterisk, SIP vẫn là sự lựa chọn số 1.
Hai phiên bản của H323 được hỗ trợ trong Asterisk được hỗ trợ bởi 2 module chan_h323.so và chan_oh323.so.
Về khía cạnh bảo mật. H323 là một giao thức có tính bảo mật tương đối cao.Vì H323 sử dụng RTP để kết nối media, nó không hỗ trợ mật mã. Việc sử dụng VPN hay các phương pháp tunnel khác giữa đầu cuối là cách thức thông dụng nhất để đảm bảo tính bảo mật. Tất nhiên là nó cũng gây ra một vài vấn đề. Khi VoIP được sử dụng cho các lĩnh vực đòi hỏi tính bảo mật cao như ngân hàng, đòi hỏi giao thức VoIP phải hỗ trợ một phương pháp mật mã mạnh.
H323 và NAT: H323 cũng gặp những vấn đề tương tự như SIP khi triển khai với NAT. Phương pháp đơn giản nhất là cho forward những port nhất định qua thiết bị tích hợp NAT đối với các client nội bộ. Để tiếp nhận cuộc gọi, TCP port 1720 phải luôn được forward. Thêm vào đó, port UDP cho các dữ liệu RTP và RTCP cũng phải được forward. Những client cũ như MS Netmeeting cũng yêu cầu forward port TCP cho việc tunnel của giao thức H245. Nếu có một số lượng các client đằng sau thiết bị có tích hợp NAT, chúng ta phải sử dụng gatekeeper chạy proxy mode. Gatekeeper sẽ cần một Interface liên lạc với một mạng IP subnet và mạng Internet. H323 client trên mạng riêng sẽ đăng ký đến gatekeeper, sau đó gatekeeper sẽ gọi cuộc gọi thay mặt cho client. Các client bên ngoài muốn gọi bên trong cũng phải thực hiện thủ tục đăng ký đến proxy server.
Hình 2.5: Mô hình điều khiển cuộc gọi H.323
Vào thời điểm hiện tại, Asterisk không thể đóng vai trò gatekeeper, chúng ta phải sử dụng các ứng dụng độc lập như Open H323 Gatekeeper.
MGCP (Media Gateway Control Protocol):
MGCP được thiết kế để đơn giản hóa thiết bị đầu cuối .Nó được định nghĩa bởi IETF.
MGCP được tiến hành khá nhanh nhưng không có tính khả dụng bằng SIP và IAX.
Việc thực hiện xử lý đều được tiến hành tại media gateway và call agent. Không giống như SIP, MGCP sử dụng cấu trúc tập trung. Cuộc gọi MGCP không thể được tiến hành trực tiếp mà phải đi qua controller.
Hình 2.6 : Giao thức MGCP
Asterisk hỗ trợ MGCP qua module chan_mgcp.so và đầu cuối được đinh nghĩa thông qua file cấu hình mgcp.conf. Bởi vì Asterisk cung cấp các cuộc gọi cơ bản nên nó không thể giả lập MGCP phone.
Nếu có một MGCP phone, chúng ta có thể sử dụng chúng với Asterisk. Tuy nhiên không thể xem MGCP phone như một sản phẩm của hệ thống Asterisk vì nó đã có những chuẩn riêng.
Skinny/SCCP:
Là giao thức mặc định cho các đầu cuối của Cisco Call Manager PBX. Skinny được hỗ trợ bởi Asterisk .Nếu chúng ta kết nối Cisco phoen đến Asterisk, thông thường chúng ta mặc định sử dụng giao thức SIP.
UNISTIM:
Là giao thức hỗ trợ của Nortel cho VoIP, cũng đã được bổ sung vào Asterisk. Điều đáng nói ở đây là Asterisk là tổng đài PBX đầu tiên hỗ trợ đầu cuối IP cho cả hai nhà sản xuất lớn nhất trên lĩnh vực VoIP là Nortel và Cisco.
Ngữ cảnh ứng dụng tổng đài IP
Kết nối IP PBX với PBX:
Một ngữ cảnh đặt ra ở đây là hiện tại Công ty đã trang bị hệ thống PBX bây giờ cần trang bị thêm để đáp ứng nhu cầu liên lạc trong công ty sao cho với chi phí thấp nhất, giải pháp để thực hiện đó là trang bị hệ thống Asterisk và kết nối với hệ thống PBX đang tồn tại qua luồng E1.
Hình 2.7: Kết nối IP PBX với PBX
Ngoài ra để tăng khả năng liên lạc với mạng PSTN và VoIP khác, Công Ty sẽ đăng ký kết nối dịch vụ với nhà cung cấp dịch vụ VoIP.
Kết nỗi giữa các server Asterisk:
Phương pháp trên ứng dụng rất hiệu quả cho các công ty nằm rãi rác ở các vị trị địa lý khác nhau nhằm giảm chi phí đường dài.
Hình 2.8 : Kết nối các server Asterisk
Ví dụ Công ty Mẹ có trụ sở đặt tại nước Mỹ và có các Chi nhánh đặt tại Việt Nam với hai địa điểm là Hà Nội và thành phố Hồ Chí Minh. Thông qua mạng WAN của Công Ty các cuộc gọi nội bộ giữa các vị trí khác nhau sẽ làm giảm chi phí đáng kể.
Các ứng dụng IVR,VoiceMail,Conference Call:
Hình 2.9 : Các ứng dụng của tổng đài IP
Ứng dụng thực hiện các server kết nối với hệ thống PSTN hay tổng đài PBX để triển khai các ứng dụng như tương tác thoại IVR.
Một ví dụ cho ứng dụng tương tác thoại đó là cho biết kết quả sổ số, kiểm tra cước cuộc, dịch vụ giải trí – tra cứu thông tin thông qua số 19001260. Ứng dụng VoiceMail thu nhận những tin nhắn thoại từ phía thuê bao giống như chức năng hộp thư thoại của Bưu Điện
Chức năng cuộc gọi hội nghị được thiết lập cho nhiều máy điện thoại cùng nói chuyện với nhau.
Phân phối cuộc gọi tự động ACD
ACD (Automatic Call Distribution): Phân phối cuộc gọi tự động.
Chức năng được ứng dụng cho nhu cầu chăm sóc khách hàng hay nhận phản hổi từ phía khách hàng.
Với chức năng này, hệ thống tổng đài sẽ bớt tình trạng tắt nghẽn khi có nhiều cuộc gọi cùng lúc.
Hình 2.10: Phân phối cuộc gọi ACD
Giả sử một Công ty hệ thống điện thoại có khả năng tiếp nhận cùng một lúc 10 cuộc gọi,nếu có thêm cuộc gọi thứ 11 gọi đến thì hệ thống giải quyết như thế nào? Bình thường thì sẽ nghe tín hiệu bận nhưng với chức năng phân phối cuộc gọi sẽ đưa thuê bao đó vào hàng đợi để chờ trả lời, trong khi chờ trả lời cuộc gọi thuê bao có thể nghe những bài hát hay do asterisk cung cấp và khi nào một trong mười số điện thoại đang gọi trở về trạng thái rỗi thì cuộc gọi đang chờ sẽ được trả lời. Giống như chức năng của dịch vụ: dịch vụ hỗ trợ thông tin 1080, dịch vụ hẹn giờ 116 của Bưu Điện, dịch vụ hỗ trợ khách hàng của các tổng đài điện thoại.
CHƯƠNG 3: CẤU HÌNH THÀNH PHẦN CỦA ASTERISK
Tổ Chức Thư Mục của Asterisk:
Một số thư mục được sử dụng bởi ASTERISK:
Cd /etc/asterisk/
Chứa các tập tin cấu hình ASTERISK. Tuy nhiên tập tin zaptel.conf lại nằm trong thư mục /etc/. zaptel.conf được dùng để cấu hình thực hiện liên lạc giữa máy tính và môi trường điện thoại truyền thống.
Cd /usr/lib/asterisk/modules/
Chứa tất cả các module được khởi động bởi ASTERISK. Các ứng dụng chương trình, codecs, formats, và các kênh thoại. Mặc định ASTERISK sẽ khởi động tất cả các modules lúc khởi động.
Cd /var/lib/asterisk
Chứa đựng tập tin astdb và các thư mục con khác. Tập tin astdb chứa thông tin về cơ sở dữ liệu của ASTERISK bao gồm các thư mục chính:
agi-bin/ : Chứa các custom scripts, như là các ứng dụng AGI.
Firmware : Chứa các thông tin về các thiết bị gắn kết với ASTERISK.
mohmp3 : Chứa tập tin mp3 cho chức năng Music on Hold
sounds : Tất cả các thông báo từ hệ thống ASTERISK đều nằm trong thư mục sounds.
Cd /var/spool/asterisk/
Chứa một số thư mục con như outgoing/, qcall/, tmp/, và voicemail/
Hình 3.1: Cấu trúc thư mục var
Thư mục tmp/ được dùng để lưu trữ các thông tin tạm thời cho các quá trình như sao chép, hoặc ngăn cản hai quá trình ghi và đọc tập tin cùng một lúc.
Tất cả các voicemail và các lời chào đều chứa trong thư mục voicemail.
Cd /var/run/
Chứa tất cả thông tin về các tiến trình đang hoạt động trong hệ thống, bao gồm ASTERISK (đặt biệt là trong tập tin asterisk.conf).
Cd /var/log/asterisk/
Chứa các thông tin logs của ASTERISK. Các thông tin này có thể được hiệu chỉnh trong logger.conf trong thư mục /etc/asterisk/.
Các tập tin cấu hình của Asterisk:
Các file cấu hình cho hệ thống asterisk đều nằm tại thư mục /etc/asterisk
Ví dụ như:
extensions.conf
sip.conf
voicemail.conf
asterisk.conf…….
Tuy nhiên, file zaptel.conf cấu hình cho phần cứng TDM nằm tại thư mục /etc, cách thức cấu hình giống như tập tin .ini của window.
Quản lí các User và Dialplan
Quản lí User:
User là những tài khoản người dùng trong một hệ thống. User dùng để xác định người sử dụng, nhằm cấp quyền sử dụng tương ứng khi người dùng sử dụng hệ thống. Thường thì trong một hệ thống, hoặc một chương trình có
nhiều người sử dụng thì sẽ có sự phân quyền cho các người dùng để khai thác, sử dụng tài nguyên hiệu quả. Như vậy khi phân quyền chính là việc tạo ra các loại user khác nhau, với mỗi nhóm loại user sẽ được cấp những quyền tương ứng.
User root đóng vai trò là admin, người có quyền cao nhất trong hệ thống.
Một user khi muốn login vào hệ thống phải có account trong hệ thống mới login vào được. Như vậy, Khi user muốn login vào hệ thống thì phải đăng ký account. Sau khi đăng ký thành công, thì user sẽ dùng account đó login vào hệ thống để thực hiện các quyền tương ứng với user.
Khái niệm Dialplan
Dialplan là trái tim của hệ thống ASTERISK. Dialplan cho biết các cuộc gọi sẽ được xử lý như thế nào qua hệ thống ASTERISK. Dialplan bao gồm tập hợp các dòng lệnh hay các ứng dụng theo một trình tự nào đó mà hệ thống phải thực hiện để đáp ứng nhu cầu chuyển mạch cuộc gọi. Để hiểu rõ và cấu hình thành công hệ thống ASTERISK thì điều kiện tiên quyết là phải biết cách thức họat động của một Dialplan như thế nào.
Dialplan là công việc thiết lập cho hoạt động của hệ thống như định hướng các cuộc gọi vào và ra hệ thống, đó là một danh sách các bước hay các lệnh liên tục nhau để thực hiện một tác vụ nào đó mà hệ thống phải thực hiện theo. Khác biệt với các hệ thống điện thoại truyền thống tất cả các công việc cấu hình hệ thống đều là từ phía người sử dụng.
Hệ thống chúng ta có hoàn chỉnh tốt hay không phụ thuộc rất nhiều vào việc chúng ta hiểu rõ Dialplan hay không?.
Trong phần này sẽ tập trung đi vào việc tìm hiểu cấu trúc diaplan ở mức nền tảng thực hiện trước khi đi sâu tìm hiểu kỹ ở những phần sau.
Tìm hiểu Dial plan
Được cấu hình qua tập tin extension.conf, với các khái niệm về:
Extentions: Điện thoại nội bộ
Priorities: Thứ tự thực hiện
Applications: Các ứng dụng
Contexts: Các ngữ cảnh
Dialplan là một tập gồm nhiều extention, khi một cuộc gọi tương ứng với extention nào thì ứng dụng cho cuộc gọi đó sẽ được thực hiện.
/etc/asterisk/extention.conf
exten=>101,1,dial(sip/101,20)
exten=>101,2,hangup()
“exten=>” giống nhau cho mỗi dòng thực hiện trong dialplan, 101 là số điện thoại mà thuê bao quay hay là extention, còn các con số 1 và 2 là các priorites tức là thứ tự thực hiện các lệnh. Khi thuê bao quay số 101 thì đỗ chuông máy ip sip 101 nếu trong vòng 20 giây mà thuê bao không nhấc máy thì kết thúc cuộc gọi.
Extension là thành phần mà asterisk thực hiện theo, được kích hoạt khi có cuộc gọi vào extension chính là con số mà thuê bao đó cần gọi. Trong mỗi ngữ cảnh sẽ có thể có nhiều extension. Extenstion chính là hạt nhân để hệ thống xác định cuộc gọi cần thực hiện. Extenstion hoàn chỉnh gồm có các phần :
exten => Name,priority,application( )
Giải thích:
Name hay number
s: Start. Được dùng như việc bắt đầu một extensions, thay thế cho một tên hoặc một số cụ thể.
t: Timeout. Được dùng trong trường hợp cuộc gọi đến một user chưa active. Cũng được dùng để gác máy - hangup trong trường hợp bận - idle.
T: AbsoluteTimeout. Được dùng trong trường hợp cuộc gọi bị gác máy - hangup.
h: Hangup. Được dùng để xoá một cuộc gọi. Dùng để phát lời chào tạm biệt trước khi gác máy - hangup.
i: Được dùng trong trường hợp extension không có trong một Context hoặc IVR menu.
· Priority (Mỗi extension có thể bao gồm nhiều bước mỗi bước được gọi là “priority”)
· Application (or command) Thực hiện một ứng dụng cụ thể nào đó cho cuộc gọi
Một ví dụ cụ thể như sau:
/etc/asterisk/extention.conf
exten => 7325010,1,Dial(Zap/1,20)
exten => 7325010,2,Voicemail(u7325010)
exten => Tương ứng với mỗi ứng dụng thực hiện
7325010 Con số nhận được khi thuê bao chủ gọi quay số.
1, 2 là các “priority” thứ tự được thực hiện 1 rồi tới 2…
Trong ví dụ của chúng ta con số 7325010 sẽ được gửi đến kênh zap/1 rung chuông tối đa 20 giây. Nếu sau 20 giây không trả lời thì cuộc gọi sẽ được định hướng đến hộp thư thoại u7325010 chữ u ở đây có nghĩa là “'u'navailable message”.
Priorities – Thứ tự thực hiệ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 thứ tự số “2” được thực hiện, kể từ vertion 1.2 của Asterisk thay vì sử dụng gán một con số cụ thể cho thứ tự thực hiện như trên thì ở đây có 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ẽ thực hiện.
Ví dụ:
/etc/asterisk/extention.conf
exten=>8051,,hangup()
exten=>8051,1,dial(sip/8051,20)
Ở ví dụ trên dòng có thứ tự “2” đứng trước dòng có thứ tự “1”, nhưng khi thực hiện diaplan thì dòng có thứ tự Priorities “1” ưu tiên thực hiện trước bất kể thứ tự sắp xếp như thế nào.
Ví dụ :
/etc/asterisk/extention.conf
exten=>8051,n,dial(sip/8051,20)
exten=>8051,n,hangup()
Thứ tự thực hiện từng dòng 1 từ trên xuống dưới.
Aplications – Các hàm ứng dụng
Đây là phần quan trọng trong diaplan tức là ứng dụng nào sẽ được thực hiện trên mỗi dòng, các ứng dụng như thực hiện quay số,trả lời cuộc gọi hay đơn giản là nhấc gác máy để biết thêm thông tin về các ứng dụng cũng như các thông số kèm theo thì hãy dùng lệnh show Aplications trên giao tiếp dòng lệnh của asterisk:
show Aplication
Trong phần xây dựng Dialplan ta sẽ tìm hiểu kỹ các Aplication này.
Contexts - Ngữ cảnh
Ví dụ khi gọi đến tổng đài Asterisk có một thông điệp thông báo như sau “Chào mừng các Bạn gọi đến Hệ thống tra cứu điểm thi nhấn phím 1 để tra cứu điểm phím 2 để đăng kí mô học…” khi người gọi chọn phím 1 thì hệ thống sẽ chuyển đến một ngữ cảnh (context) là [xemdiem] khi người gọi nhấn phím 2 thì hệ thống sẽ định hướng cuộc gọi qua ngữ cảnh (context) [dangki] như vậy ứng với mỗi trường hợp hệ thống sẽ có ngữ cảnh khác nhau, ngữ cảnh được đặt trong dấu [] .
Tính năng hỗ trợ cấu hình user và diaplan trong Asterisk
Lập trình ứng dụng qua Asterisk Manager API (AMI)
Quản lý kiểu Client/Server trên giao thức TCP
Hoạt động trên port 5038 cấu hình trên file manager.conf
Hình 3.2: Mô hình AMI
Asterisk RealTime
Cung cấp một tích hợp, linh hoạt, liền mạch giữa các cấu trúc cấu hình Asterisk nội bộ và các cơ sở dữ liệu SQL bên ngoài khác.
Hình 3.3: Mô Hình kết nối CSDL
Lập trình ứng dụng qua hệ thống AGI (Asterisk Gateway Interface)
Cho phép lập trình phát triển ứng dụng trong hệ thống Asterisk.Giúp ích trong việc phát triển cấu hình hệ thống – Dialplan
Hình 3.4: Mô hình hệ thống AGI
Thông tin giữa AGI và Asterisk thông qua giao tiếp qua STDOUT/STDIN. với 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
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 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,tra cứu điểm….
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ý Asteriskmột cách hiệu quả nhất.
Hình 3.5: Mô hình quản lí với CSDL và web.
Để giúp cho Server tổng đài điện thoại của bạn giảm bớt tải và xử lí các công việc nhanh hơn thì Asterisk có hỗ trợ thêm cơ chế FastAgi.
FASTAGI
Khái niệm:
Có thể giúp giảm tải CPU trên máy chủ điện thoại của bạn bằng cách chuyển các kịch bản tài nguyên đó đến một máy chủ trên mạng.
Hình 3.6 : Mô hình hoạt động của FastAGI
Để kết nối đến máy chủ mạng nào đó ta phải cung cấp cho nó 1 địa chỉ ip máy chủ - nơi lưu trữ các dịch vụ FastAGI.
exten => 101,1, AGI (agi://192.168.1.2)
Theo mặc định, Asterisk sẽ kết nối với máy chủ qua cổng 4573 – cổng này có thể thay đổi tùy theo cấu hình của bạn.
Các node nhận được FastAGI yêu cầu từ Asterisk.Nó sẽ kiểm tra dòng đến để biết chi tiết yêu cầu AGI. Cụ thể hơn là tại các tham số agi_request. Sau đó URL AGI so sánh với các định nghĩa cấu hình tuyến đường, tuyến đường định nghĩa các giá trị tĩnh hoặc động. Giá trị động chỉ là những Script / / trỏ đến một bối cảnh biến có chứa tất cả các thông số yêu cầu cùng với các mặt hàng nhóm phù hợp với regexp.
Trong các cuộc gọi FastAGI, ta sẽ gửi kèm theo 1 yêu cầu. Nó như 1 biến agi_network_script AGI
exten => 101,1, AGI (agi://192.168.1.2/GetCallerRecord)à
nếu kết nối thành công thì sẽ có thông báo như sau:
agi_network: đúng
agi_network_script: GetCallerRecord
Máy chủ FASTAGI:
FastAGI vẫn là một trong những lựa chọn thay thế tốt nhất để xây dựng các ứng dụng Asterisk, tách các ứng dụng riêng của mình, nhân rộng trên nhiều ứng dụng máy chủ FastAGI.
Để kết nối với một giao diện AGI /API interfaces,ta phải có một số thư viện để kết nối. Chúng bao gồm:
Asterisk –Java
Asterisk.NET
PHPAGI
Asterisk-Perl
Asterisk-PyThon
Để chạy được dịch vụ thì máy chủ FastAgi , ta chọn dùng Asterisk.NET.
Hình 3.7: Mô hình kết nối của Asterisk.NET
Thư viện Asterisk. NET bao gồm một tập hợp các lớp C # cho phép bạn dễ dàng xây dựng các ứng dụng tương tác với một máy chủ PBX Asteris. Cả FastAGI và API đều được hỗ trợ trong .NET / Mono tương thích.
Asterisk NET hỗ trợ cả hai giao diện đó Asterisk cung cấp cho kịch bản này:Các giao thức FastAGI và quản lý API. Việc thực hiện FastAGI hỗ trợ tất cả các lệnh có sẵn từ Asterisk.
Link down :
CHƯƠNG 4: CÁC ỨNG DỤNG DIAL PLAN CƠ BẢN
Ứng dụng hộp thư thoại (Voicemail)
Asterisk cung cấp khả năng xây dựng ứng dụng VoiceMail, với khả năng này giúp cho người sử dụng điện thoại không bỏ lỡ bất cứ cuộc gọi điện thoại nào.
Khi người gọi không được trả lời, máy không được kết nối mạng hay máy điện thoại đang bận, hệ thống đều có thông điệp riêng để thông báo tình trạng của máy thuê bao được gọi và phát thông điệp mời để lại tin nhắn. Khi thông điệp được nhận, hệ thống VoiceMail có thể gửi email để thông báo - Có thể kiểm tra VoiceMail trực tiếp trên máy điện thoại. Những thông điệp Lời chào trong hệ thống hoàn toàn có thể thay đổi phù hợp với ngữ cảnh sử dụng, không nhất thiết phải sử dụng thông điệp mặc định.
Các bước cấu hình thiết lập một hộp thư thoại :
/etc/asterisk/voicemail.conf
Trong voicemail.conf : tạo ra người sử dụng và password của hòm thư Cú pháp :
Tenuser = > matma,tendaydu,diachimail.
Ví dụ : [mailbox]
8051=>1212,Thanhtam,thanhtamptit@gmail.com
Cấu hình trong extensions.conf : để chuyển các cuộc gọi vào hộp thư thoại
[voicemail]
exten=1234,1,Dial(SIP/thanhtam,20)
exten=1234,n,VoiceMail(8051@mailbox)
exten=1234,n,Hangup()
Cấu hình trong sip.conf để đăng kí số voicemail
[8051]
Type=friend
Username=8051
Secret=1212
Host=dynamic
Context=voicemail
Mailbox=8051@mailbox
[1234]
Type=friend
Username=1234
Secret=1212
Host=dynamic
Context=voicemail
Kiểm tra Voice mail:
exten => 8,1,voicemailmain(s${CALLERIDNUM})
exten => 8,n,hangup()
Như vậy , nếu một người sử dụng 8051 gọi đến số 1234,nếu máy bận thì nội dung cuộc gọi sẽ được ghi vào hộp thư thoại.(thường hộp mail sẽ lưu trên server theo đường dẫn var/spool/asterisk/tmp)
Ứng dụng ngữ cảnh (IVR )
Khi người gọi bấm số 11 để gọi vào hệ thống thì sẽ xuất hiện lời chào và chuyển đến ngữ cảnh [demo-menu]. Ở đây, nếu ta bấm số 1 thì hệ thống sẽ đọc lên số 1 ,bấm số 2 hệ thống đọc lên số 2.
exten => 11,1,Background(loichao)
exten => 11,n,Goto(demo-menu,s,1)
[demo-menu]
exten => s,1,Answer(2)
same => n(loop),Background(press-1&or&press-2)
same => n,WaitExten()
exten => 1,1,Playback(you-entered)
same => n,SayNumber(1)
same => n,Goto(s,loop)
exten => 2,1,Playback(you-entered)
same => n,SayNumber(2)
same => n,Goto(s,loop)
Ghi âm cuộc gọi
Khi gọi vâo số 205, hệ thống sẽ chờ 2 giây, sau đó nghe tiếng beep và bắt đầu ghi âm. Nếu nói xong, hệ thống sẽ chờ 5 giây rồi sau đó phát lại phần ghi âm phía trên.
exten => 205,1,Answer exten => 205,2,Wait(2) exten => 205,3,Record(record%d:ulaw) exten => 205,4,Wait(2) exten => 205,5,Playback(${RECORDED_FILE}) exten => 205,6,Wait(5) exten => 205,7,Hangup
Test ứng dụng qua AGI & FastAgi
AGI:
Vào trong thư mục /var/lib/asterisk/agi-bin
Tạo file helloworld.php
Một số hàm ứng dụng của AGI có sẵn trong :
Hình 4.1 Script thực thi AGI.
Để thực thi helloworld.php này, ta phải cấp quyền cho nó bằng lệnh:
Chmod –R 775 helloworld.php
Vào thư mục /etc/extensions.conf để gọi php này.
exten => 999,1, Aswer()
exten => 999, n, Wait (0,5)
exten => 999, n, AGI (helloworld.php)
exten => 999, n, Hangup ()
Fast Agi:
Gọi dịch vụ trên các máy có kết nối mạng với nhau.
AGI (agi://hostname[:port][/script],arguments)
Ví dụ:
Kết nối đến chương trình FastAGI "fastagi-test" trên một máy local bất kì :
exten => 123,1,Answer()
exten => 123,n,AGI(agi://localhost/fastagi-test)
Connect to the AGI script "test" on the host "testbox" at port 9000 and pass parameter "123":
exten => 124,1,Answer()
exten => 124,n,AGI(agi://testbox:9000/test,123)
CHƯƠNG 5: TRIỂN KHAI VÀI TÍNH NĂNG CỦA TỔNG ĐÀI
Mô tả mô hình hệ thống
Xây dựng hệ thống gồm :
Một máy cài đặt hệ điều hành Linux Centos 5.6 làm server – địa chỉ ip là 192.168.1.123
Một (có thể nhiều) máy đặt hệ điều hành Window 7 làm client và chạy các dịch vụ FastAgi – địa chỉ ip là 192.168.1.2
Cài đặt thêm 2 softphone 3CX để test cuộc gọi.
Demo chức năng gọi nội bộ.
Đăng kí 2 softphone có tên là 2007 và 2009 trong file sip.conf
Vào file extensions.conf,ta viết dial plan để 2007 gọi 2009 và ngược lại:
Demo chức năng ghi âm cuộc gọi
Gọi vào số 205 để thực hiện dịch vụ
Câu chào”mời bạn để lại lời nhắn sau khi nghe tiếng beep”
Bắt đầu ghi âm lời nói của bạn
Chờ 0.5s hay bấm phím # để kết thúc lời ghi âm.
Sau đó hệ thống phát lại lời nhắn của bạn
Nếu sau 1s bạn không thao tác gì, hệ thống sẽ chào tạm biệt bạn và shut down
Dial plan trong extensions:
exten => 205,1,Answer()
exten => 205,n,Background(thanh/moidelailoinhan)
exten => 205,n,Playback(beep)
exten => 205,n,Record(asterisk-recording%d:ulaw)
exten => 205,n,Playback(thanh/GHIAMTHANHCONG)
exten => 205,n,Wait(0.5)
exten => 205,n,Playback(${RECORDED_FILE})
exten => 205,n,Wait(1)
exten => 205,n,Playback(thanh/goodbye)
exten => 205,n,Hangup()
Demo chức năng đọc file âm thanh trên máy local
Tạo file Chia sẻ dữ liệu giữa máy Linux và máy Window
Cài đặt gói samba
Thiết lập user samba:
smbpasswd -a root
Tạo file chia sẻ dữ liệu đặt tên Share
[share]
comment = Share Folder
path= /var/lib/asterisk/sounds àthư mục muốn chia sẻ
writeable=yes
browseable=yes
create mode=0666
directory mode=0777
public=yes
valid users=root à user khi đang nhập vào
write list=+share
read only = yes
Cấp quyền đầy đủ cho file share bằng lệnh :
chmod 775 –R /share/
Từ máy window đang nhập vào file chia sẻ thì ta vào run đánh lệnh: ”
\\ip máy Linux\ à nhập user,password đã thiết lập phía trên.
(khi đăng nhập thành công, ta sẽ thấy thư mục share và được toàn quyền thao tác trên file này.)
Thực thi chương trình .NET tạo ra file âm thanh trên thư mục chia sẻ.
Hình 5.1: Tạo âm thanh
Sau khi tạo file âm thanh thì âm thanh “thanhtam.wav” sẽ được tạo ra trong thư mục share.
Gọi điện thoại vào để đọc file âm thanh đó lên.
Trên window,ta Script để đọc file âm thanh cục bộ này lên với StreamFile:
key=StreamFile("thanhtam", escapeKeys);
Hình 5.2 : Gọi vào file âm thanh
Trên Linux,ta dùng cơ chế FastAgi để gọi dịch vụ từ xa
Exten=>11,1,AGI(agi://ip máy window/CustomerIVR)
Demo chức năng TextToSpeech
Chức năng này là sự kêt hợp cả hai ví dụ trên
Ta viết hàm TextToSpeech để đọc chuỗi kí tự đã có trong bộ từ điển.
Dùng Append để nối kí tự thành chuỗi
Hàm MergeFile, ta có thể ghép các chuỗi kí tự lại sau đó xuất thành 1 câu hoàn chỉnh.
Hình 5.3: Hàm TextToSpeech
Cài đặt hệ thống
Cài đặt server – hệ điều hàng Centos 5.6
Cài đặt các gói Asterisk phiên bản 1.6.2.0
Tải các gói sau và để trong thư mục : usr/src/
Asterisk 1.6.2.0
Dahdi-2.2.0.2
Dahdi-tool-2.2.0
Libpri 1.4.10.1
Sau khi tải thành công, ta giải nén các gói và cài đặt theo trình tự sau:
cd /usr/src/asterisk/libpri-1.4.11.5
make
make install
cd /usr/src/asterisk/dahdi-linux-2.2.0.2
./configure
make all
make install
cd /usr/src/asterisk/dahdi-tool-2.2.0
make
make config
cd /usr/src/asterisk/asterisk-1.6.2.0
./configure
make
make install
make config
make samples
Ta có thể cài them gói Asterisk-Addon để hổ trợ các file âm thanh mp3….
Khởi động Asterisk bằng lệnh sau:
service dahdi start
asterisk -cvvvv
Phần mềm FAST AGI Server:
. NET giúp ta thực hiện cơ chế FastAGI. Nó bao gồm chức năng quản lí API.
Link down:
Cài đặt softphone
Link down:
Với điện thoại phần mềm 3CX, bạn có thể gọi điện trực tiếp từ PC hoặc laptop tới mọi điện thoại phần mềm, di động hoặc cố định bằng cách sử dụng công nghệ Thoại qua giao thức IP (VOIP) để truyền giọng nói qua mạng Internet.
Hình 5.4: Softphone 3CX
Hinh 5.5 : Cấu hình Softphone
Cài đặt putty
Putty là một chương trình truy cập ssh thông dụng dành cho người dùng, hỗ trợ đầy đủ cả ssh phiên bản 1 và 2. Sau khi tải về bạn có thể chạy ngay không cần cài đặt.
Hình 5.6 : Kết nối server bằng Putty
Link down:
Kết quả xây dựng hệ thống
Đã xây dựng cài đặt phần mềm Asterisk tổng đài trên nền Linux Server Centos 5.6.
Tìm hiểu về cơ chế FASTAGI.
Nghiên cứu được các chức năng thực tế của tổng đài như:
Dial giữa các phone nội bộ.
Record and Playback (ứng dụng cho việc ghi danh,điền thông tin).
Chức năng lấy dữ liệu, đọc file âm thanh trên các máy local.
Chúng em đã hoàn thành đề cương đặt ra cho kì thực tập này,tuy nhiên vẫn còn nhiều thiếu mong được sự góp ý kiến của quý thầy cô.
ĐÁNH GIÁ CHUNG VÀ XU HƯỚNG PHÁT TRIỂN ĐỀ TÀI
Qua quá trình tìm hiểu, chúng em đã có những kiến thức cơ bản về các kỹ thuật viễn thông, các kiến thức về lập trình trên phần cứng.
Với công nghệ VOIP, việc xây dựng một tổng đài thực tế Asterisk này sẽ rất hữu ích cho các doanh nghiệp muốn có một tổng đài với chi phí vừa phải.
Dựa vào nền tảng là các ứng dụng nhỏ trong quá trình làm đề tài, chúng sẽ phát triển lên thành một hệ thống cuộc gọi hoàn chỉnh hơn như các ứng dụng về các IVR.
Hình 1: Mô hình một hệ thống IVR
DANH MỤC TÀI LIỆU THAM KHẢO
Tiếng Việt:
Asterisk Tiếng Việt – Tác giả: Lê Quốc Toàn
Asterisk PBX trên Wikipedia tại trang:
Tiếng Anh:
Phần mềm Asterisk download tại trang
Asterisk The Future of Telephone
Các lệnh và hàm thực thi thao khảo tại trạng:
Sametime Unified Telephony 8 CF1 Administration :
Thư viện Asterisk.NET:
Danh mục các Website tham khảo:
Forum Asterisk Group:
Tạp chí Bưu Chính Viễn Thông :
Các file đính kèm theo tài liệu này:
- Nghiên cứu công nghệ VoIP và các ứng dụng cơ bản trogn tổng đài Asterisk.docx