• Asterisk giao tiếp với những công nghệ khác nhau, những kết nối được thực hiện trong các mạng.. Các gói phần mềm Asterisk• Zaptel: chứa các driver cho các phần cứng kết giao tiếp với
Trang 1PHẦN 7 CẤU TRÚC PHẦN MỀM MÃ
NGUỒN MỞ ASTERISK
CÔNG NGHỆ THOẠI IP
Trang 2Phần mềm mã nguồn mở Asterisk
• Phần mềm mã nguồn mở Asterisk có đầy đủ tính năng của
tổng đài IP PBX thương mại: phân luồng cuộc gọi, thư
thoại, hội đàm, tương tác (menu thoại) , hỗ trợ nhiều giao thức VoIP như SIP và H.323.
• Phần mềm mã nguồn mở Asterisk cung cấp các dịch vụ như
Voice mail, Video conferencing, Call conferencing,
Interactive voice response, Call queue
• Asterisk tích hợp một số công nghệ như TDM và IP Phone,
hoạt động như một softswitch, media gateway, voicemail, audio conference, nó cũng có các chức năng IVR
(Interactive Voice Response) và ACD (Automatic call
distribution)
• Asterisk hỗ trợ những kiểu truyền tín hiệu theo chuẩn của
Mỹ và Châu Âu hiện đang tại các doanh nghiệp, cho phép kết nối giữa những mạng tích hợp thoại - dữ liệu thế hệ kế tiếp với hạ tầng kỹ thuật hiện tại
Trang 4Kiến trúc của Asterisk
Trang 5Các API dùng cho việc giao tiếp với các
modul của Asterisk
• Channel API: cho phép phần lõi PBX giao tiếp với các
nguồn tín hiệu khác nhau, hỗ trợ các giao thức VoIP gồm SIP, H.323 và MGCP.
• Codec Translator API: cung cấp khả năng làm việc với các
định dạng âm thanh mã hóa như MP3, GSM, G.7123,
ADPCM
• File Format API: Cho phép đọc và phát âm thanh từ các
định dạng file WAV, MP3 đem đến sự linh hoạt cho các ứng dụng trên nền Asterisk trong việc xử lý âm chuông,
DTMF (âm thanh phát ra khi nhấn phím)
• Application API: Có thể dùng cho ứng dụng thứ ba như thư
thoại, hội đàm cho phép viết các ứng dụng mới có thể
tương tác trực tiếp với phần lõi PBX
Trang 6Cấu hình hệ thống cài đặt Asterisk
• Thông thường yêu cầu tối thiểu là máy PIII với 500 MHz,
máy > 1.5 GHz cho các hệ thống đa kênh.
• Có thể cài hệ điều hành Windows, Mac OS X hay Linux
như Fedora , CentOS, Redhat, hoặc Debian
• Source và các chương trình khoảng ~35 MB, có thể có các
loại codecs (i.e.: G.729, Speex, etc.) để nâng cao khả năng hoạt động của hệ thống
• Có thể dùng máy ảo VMWare Loader
Trang 7• Asterisk giao tiếp với những công nghệ khác nhau,
những kết nối được thực hiện trong các mạng Vì vậy
nó yêu cầu phần cứng cụ thể.
• Phần cứng phổ biến nhất cho Asterisk thường được thiết kế để làm việc thông qua các Digium Asterisk Hardware Device Interface (DAHDI), tất cả các cards này sẽ được cài đặt khác nhau và ở những nơi khác nhau.
Thiết bị phần cứng
Trang 8• Hiện nay có các phiên bản Asterisk 1.2, Asterisk 1.4,
Asterisk 1.6 và Asterisk 1.8 nhưng từ phiên bản 1.6 trở về trước thì không còn được sửa lỗi và cập nhật bảo mật.
• Phiên bản LTS (Long Term Support ) chính thức đầu tiên là Asterisk 1.8, Asterisk 1.8 được sửa lỗi trong bốn năm và một năm bổ sung các phiên bản bảo mật.
• Asterisk 1.8 được công bố vào 21-10-2010, nhưng phát hành chính thức sau đó bốn năm (21-10-2014) trong lúc này nó sẽ nhận được các phiên bản cấp nhật sửa lỗi bảo mật, nhưng
không sửa lỗi chung, và có một năm thử nghiệm.
• Đến 21-10-2015 Asterisk 1.8 sẽ chuyển sang trạng thái EOL,
sẽ không còn bất cứ thay đổi nào cho phiên bản này nữa.
Các phiên bản Asterisk
Trang 9Tổng đài Asterisk dựng sẵn
• Hiện nay có nhiều tổng đài dựng sẵn sử dụng mã nguồn mở
Asterisk như gói Trixbox
• Các tổng đài dựng sẵn mang đến cho các doanh nghiệp vừa,
văn phòng chi nhánh và các doanh nghiệp đa chi nhánh giao tiếp VoIP - PSTN
• Là một giải pháp tiết kiệm và dễ triển khai.
Trang 10Cài đặt Asterisk trên máy tính
• Để cài đặt Asterisk cần phải cài đặt hệ điều hành trên máy tính.
• Cài đặt các gói phần mềm:
ncurses-devel, openssl096b, openssl-devel
• Download các gói phần mềm
asterisk-addones
Trang 11Các gói phần mềm Asterisk
• Zaptel: chứa các driver cho các phần cứng kết giao tiếp với
asterisk do Digium phân phối
• Libpri cung cấp các driver cho các card giao tiếp trung kế
PRI và một số phần cứng khác
• Ngay cả Asterisk không giao tiếp với card PRI
nào chúng ta cũng nên cài đặt gói này bởi một số module của Asterisk yêu cầu thư viện này
• Asterisk-addons để sử dụng kênh H.323, format MP3 và ghi
CDR vào CSDL MySQL
Trang 12Một số thư mục chính của Asterisk
• /usr/sbin/asterisk thư mục cài đặt Asterisk
• /usr/lib/asterisk/modules/ - chứa tất cả các module cần thiết
để asterisk hoạt động Trong thư mục là các ứng dụng khác nhau, các codec, các định dạng âm thanh(format) và các
kênh thông tin(channel) Asterisk sẽ nạp các module vào lúc khởi động
• /var/spool/asterisk/ - chứa nhiều thư mục con bao gồm
outgoing/, qcall, tmp/, voicemail/
• Asterisk luôn kiểm qua thư mục outgoing/ và
qcall/ vì đây là hai thư mục chứa các file dạng
text chứa thông tin yêu cầu cuộc gọi theo cấu
trúc quy định
Trang 13Các file cấu hình Asterisk
• /etc/asterisk/ - chứa các tập tin cấu hình của hệ thống
Asterisk, riêng file zaptel.conf về phần cứng được đặt tại thư mục /etc/
• Extensions.conf là file cấu hình về các luật định
tuyến cuộc gọi, luật quay số, các extension trong ngoài và những tính năng đặc biệt khác
• Sip.conf là file cấu hình về các thông tin của các
UAC như username, password, IP, type, security, codec, là file lưu giữ thông tin trong Asterisk
• Iax.conf dùng cấu hình các kênh truyền của giao
thức IAX, các thông số về IAX (inter-asterisk protocol) dùng khi kết nối 2 asterisk box với nhau
Trang 14Các file cấu hình Asterisk
• Voicemail.conf: file cấu hình cho hệ thống voice-mail của
asterisk Asterisk có thể dùng lệnh Sendmail trên CentOS
để gởi mail đến cho các địa chỉ được lưu trong file cấu
hình này.
• Zaptel.conf: File này nằm ngoài /etc, là file chứa thông số
index, driver dành cho Linux khi kích hoạt các thiết bị
Telephony cắm trực tiếp vào Asterisk thông qua cổng PCI\
• Zapata.conf: Cũng thuộc module zaptel, nhưng là file kết
nối các thiết bị Telephony đã được khai báo vào hệ thống chính của Asterisk
• MeetMe.conf: Một chức năng tạo room conference căn
bản
Trang 15• Là phần Asterisk thực hiện theo, được kích hoạt khi có cuộc
gọi vào số thuê bao đó cần gọi Extensions giúp hệ thống xác định cuộc gọi cần thực hiện.
Extension gồm có 3 phần:
+ Name: Tên của Extension (Ký tự hoặc số).
+ Priority: Các bước của Extension.
+ Application: Thực hiện ứng dụng nào đó cho cuộc gọi
VD: exten=>123,1,Dial(Zap/1,20)
exten=>123,2,Voicemail(u123)
Trang 16Ví dụ
• exten=>8051,1,dial(sip/8051,20)
• exten=>8051,2,hangup()
• “exten=>” giống nhau cho mỗi dòng thực hiện trong
dialplan, 8051 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ố 8051 thì đổ chuông máy IP SIP
8051 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.
Trang 17• 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
• 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
Trang 18Hoạt động của Asterisk
• Khi cuộc gọi đến Asterisk, các kênh file cấu hình
(sip.conf) sẽ xác thực và định nghĩa các ngữ cảnh
(context) tương ứng trong dialplan (file extensions.conf)
• Dialplan sẽ xác định được tất cả các tham số để điều
khiển cuộc gọi.
• 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
• Dialplan sẽ định tuyến cuộc gọi tới thiết bị 002 với giao
thức SIP theo hàm Dial()
Trang 19Visual Dialplan cho Asterisk của APSTEL
Trang 20• Khi gọi đến tổng đài Asterisk có một thông điệp thông báo
“Chào các đã đến trường Đại học CNTT, bấm phím 22 để gặp phòng đào tạo, bấm phím 21 để gặp phòng kế toán …”
• Nếu người gọi chọn phím 22 thì hệ thống sẽ chuyển đến một
ngữ cảnh (context) là [phongdaotao] khi người gọi nhấn phím
21 thì hệ thống sẽ định hướng cuộc gọi qua ngữ cảnh (context) [Phongketoan]
• 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 []
Trang 22Giao thức IAX – Inter Asterisk eXchange
• Do không thích H.323 cồng kềnh, Mark Spencer thiết kế một
giao thức khác gọn nhẹ hơn là giao thức IAX Với bốn byte của mào đầu, so sánh với 12 byte mào đầu của SIP hay
H.323, bản tin IAX nhỏ hơn và IAX hỗ trợ xác thực đối với các cuộc gọi đến và đi
• IAX chuyển tải thoại và báo hiệu trên cùng một kênh (in
band) không giống như giao thức SIP chuyển tải thoại và báo hiệu trên hai kênh khác nhau (out of band),
• IAX có cơ chế chuyển tải nhiều cuộc gọi trên cùng một gói
IP được gọi là trung kế(Trunk) IAX có đoạn mào đầu rất
nhỏ IAX giải quyết được vấn đề NAT trong giao thức SIP Mặc khác IAX là giao thức tối ưu trong việc sử dụng băng thông, cho phép nhiều gói dữ liệu thoại trên cùng một IP
header,
Trang 23Giao thức IAX
Trang 24RTP và NAT
• Mạng sử dụng NAT là một mạng chia sẻ nhiều địa chỉ IP nội
bộ với một địa chỉ IP chung để kết nối với thế giới bên ngoài
• NAT dùng để chia sẻ nhiều máy tính trong mạng LAN nội
bộ sử dụng được Internet, nhưng cũng chính vì thế mà các
máy tính nội bộ gặp khó khăn trong việc thực hiện cuộc gọi VoIP qua Internet
• NAT làm cho các cuộc gọi từ Internet đàm thoại vào các
máy nội bộ qua NAT thì không nghe được, còn trong trường hợp các cuộc gọi từ các máy nội bộ ra các máy internet thì nghe tốt.
• Vấn đề NAT trên được giải quyết trong Asterisk bằng việc
khai báo thông số NAT=yes trong cấu hình kênh giao thức SIP.
Trang 25Sơ đồ tổng quát của IP-BPX Asterisk
Trang 26IAX
Ethernet Ethernet
SIP
Hệ thống chuyển mạch mềm Asterisk
Trang 27Khác biệt Asterisk và PBX thông thường
Trang 28Asterisk có gì khác biệt so với các PBX
• Không có khái niệm về
trunk hay trạm ngoại vi.
• Mọi thứ đi vào và đi ra
Trang 29Kiến trúc của Asterisk
phần chức năng được thiết kế thành từng Module riêng biệt
và tách rời với phần chuyển mạch lõi, điều này tạo khả năng
dễ điều chỉnh và mở rộng cao
của cuộc gọi được định nghĩa như một ứng dụng Quay số
là một ứng dụng; trả lời, phát lại, thư thoại là những ví dụ ứng dụng khác Ta có thể tạo kịch bản thực hiện gọi ứng
dụng bất kỳ trên kênh bất kỳ
chuông cùng lúc ở 2 kênh (có thể nối đến 2 máy điện thoại: 1 analog và 1 digital) trước khi chuyển cuộc gọi đến điện thoại di động, và sau đó chuyển qua hệ thống thư thoại
Trang 31app_authenticate So sánh âm thanh kép đa tần đầu vào với một chuỗi cung cấp sẵn (password).
app_cdr Ghi một hồ sơ ad hoc vào CDR
app_chanisavail Kiểm tra tình trạng các kênh
app_channelredirect Ghép một kênh khác vào một phần khác của dialplan
app_chanspy Cho phép một kênh lắng nghe một kênh khác
app_confbridge Hổ trợ cho hội nghị
app_controlplayback Phát lại một cách có kỳ hạn và cung cấp chức năng chuyển tiếp và tua lại.app_directed_pickup Trả lời các cuộc gọi từ các giao thức mở rộng khác
Trang 32Bridging Modules
Bridging modules làm cầu nối cho các kênh với các API
Cung cấp tính năng khác nhau, được sử dụng trong các tình huống khác nhau tùy thuộc vào những gì mà cầu nối cần.
bridge_builtin_features Đóng vai trò cầu nối cho các tính năng được xây dựng cho người dùng.
bridge_multiplexed Đóng vai trò ghép kênh phức tạp, được yêu cầu trong các phòng hội thảo lớn (nhiều bên tham gia) Đang được sử dụng bởi app_confbridge
bridge_simple Hổ trợ đơn giản hóa cầu nối giữa kênh với kênh
bridge_softmix Hổ trợ ghép kênh đơn giản, được yêu cầu trong các phòng hội thảo lớn (nhiều bên tham gia) Đang được sử dụng bởi app_confbridge
Trang 33Channel Event Logging Modules
Cung cấp cơ chế điều khiển ghi lại báo cáo hoạt động của các cuộc gọi.
cel_custom Ghi CEL vào đĩa/file
cel_manager Ghi CEL vào AMI
cel_odbc Ghi CEL vào ODBC
cel_pgsql Ghi CEL vào PostgreSQL
cel_radius Ghi CEL vào RADIUS
cel_sqlite3_custom Ghi CEL vào SQLite3
cel_tds Ghi CEL vào Microsoft SQL hoặc Sybase
Trang 34Call Detail Recording Modules
Được tạo ra như là những giải pháp thuận lợi nhất để lưu trữ chi tiết
hồ sơ các cuộc gọi
Có thể lưu CDRs dưới dạng file (mặc định), cơ sở dữ liệu, Remote Authentication Dial In User hoặc như một syslog.
cdr_adaptive_odbc Cho phép ghi CDRs thông qua ODBC framework với khả năng tùy chỉnh.
cdr_csv Ghi CDRs vào đĩa, với mỗi giá trị file sẽ được tách nhau bởi dấu phẩy.cdr_custom Ghi CDRs vào CSV file, nhưng cho phép bổ sung tùy chỉnh
cdr_odbc Ghi CDRs thông qua ODBC framework
cdr_pgsql Ghi CDRs vào PostgrSQL
cdr_radius Ghi CDRs vào RADIUS
cdr_sqlite Ghi CDRs vào hệ cơ sở dữ liệu SQLite2
cdr_sqlite3_custom Ghi CDRs vào hệ cơ sở dữ liệu SQLite3 với tùy chỉnh
cdr_syslog Ghi CDRs vào syslog
cdr_tds Ghi CDRs vào Microsoft SQL hoặc Sybase
Trang 35Channel Driver
Với channel drivers, Asterisk sẽ thực hiện cuộc gọi Mỗi
channel driver dành cho các giao thức hoặc loại kênh mà nó
hỗ trợ (SIP, ISDN, )
chan_agent Cung cấp kênh đại diện cho Queue()
chan_alsa Cung cấp kết nối đến kiến trúc Advance Linux Sound
chan_bridge Được sử dụng nội bộ bởi ConfBridge(), không nên sử dụng trực
tiếp
chan_console Sử dụng thư viện của portaudio để cung cấp nền tảng điều khiển kênh mà ở đó sử dụng các hệ thống âm thanh.chan_dahdi Cung cấp kết nối đến thẻ PSTN trong đó sử dụng kênh DAHDI chan_gtalk Cung cấp kết nối với GoogleTalk
chan_h323 Cung cấp kết nối tới thiết bị cuối H.323
chan_iax2 Cung cấp kết nối tới thiết bị cuối IAX2
chan_jingle Cung cấp kết nối tới thiết bị cuối Jingle-enable endpoints
Trang 36Code Translators
• Codec Translator xác nhận kênh nén dữ liệu ứng với các
chuẩn khác nhau có thể liên lạc được với nhau.
• Codec translator cho phép Asterisk chuyển đổi các định
dạng dòng âm thanh giữa các cuộc gọi.(1)
• Nếu một codes (như G.729) sử dụng thuật toán mã hóa phức tạp, dùng nhiều chuyển mã có thể làm tốn tài nguyên CPU.(2)
Trang 37Codec translators
codec_adpcm Adaptive Differential Pulse Coded Modulation (ADPCM) codec_alaw A- law PCM codec được sử dụng trên toàn thế giới ( ngoại trừ Canada / Mỹ) trên mạng PSTN
codec_g729 Không đi kèm với Asterisk do thực tế nó không phải là một codec mở, nhưng có thể được mua từ Digium ; một
codec rất phổ biến nếu quá trình nén được yêu cầucodec_a_mu Chuyển đổi trực tiếp từ a-law sang mu-law
codec_dahdi Sử dụng độc quyền thẻ chuyển mã phần cứng Digiumcodec_g722 Định dạng âm thanh băng rộng
codec_gsm Hệ thống toàn cầu cho truyền thông di động (GSM ) codeccodec_ilbc Internet Low Bitrate Code
codec_resample Resamples từ 8 -bit và 16- bit đã ký tuyến tínhcodec_speex bộ giải mã Speex
codec_ulaw Mu -law PCM codec được sử dụng ở Canada / Mỹ trên PSTN
Trang 38Format Interpreters
Format Interpreters thực hiện chức năng của Codec translator nhưng
chúng làm việc trên các file hơn là kênh Nếu lưu trữ một bản thu trên nhiều định dạng (wav ,gms ) Asterisk sẽ quyết dùng định định dạng ít tốn kém nhất khi kênh yêu cầu bản thu đó.
format_jpeg File hình ảnh: Jpeg, Jpg
format_pcm Formats: Alaw, Al, Alw, Pcm, Ulaw, Ul, Mu, Ulw, G722, Au
format_siren14 G.722.1 annex c (14 khz): Siren14
format_siren7 G.722.1 (7 khz): Siren7
format_wav Wav
format_wav_gsm Gsm audio in a wav container: Wav, Wav49
Trang 39func_db Cung cấp các chức năng của astdbfunc_devstate Lấy thông tin về trạng thái của thiết bị
Trang 40Dialplan functions (tiếp)
func_dialgroup Tạo ra một nhóm để quay số đồng thời
func_dialplan Xác nhận mục tiêu được chỉ tồn tại trong dialplan
func_global Lấy/ thiết lập biến toàn cục
func_groupcount Lấy thông tin/thiết lập số kênh cho các thành viên trong nhóm
func_md5 Chuyển đổi chuỗi sang mã hash MD5
func_realtime Thực hiện tra cứu trong thời gian thực của kiến trúc asterisk ( ARA )func_redirecting Cung cấp quyền truy cập vào thông tin về nơi chuyển hướng cuộc gọifunc_speex Giảm nhiễu và thực hiện db gain/loss trên dòng truyền âm thanh
func_timeout Thiết lập thời gian timeout cho kênh truyền
func_vmcount Gửi về số tin nhắn trong mục hộp thư thoại cho người dùng cụ thểfunc_volume Thiết lập âm lượng kênh truyền