Mộtsố tínhnăng cơ bản của Asterisk:

Một phần của tài liệu xây dựng tổng đài ip pbx (Trang 53)

1.1 Voice mail (hôp thư thoại):

Asterisklàhệthốngthưthoạikháhoànchỉnh.Hệthốngnàychophépngườigọiđểlạicáctinnhắnbằngâm thanhkhingườiđượcgọikhôngthểtrảlời.Hệ

thốngnàycũnghỗtrợthôngbáothưthoạibằngemailvàgởikèmtheofileghiâmtin nhắn.

1.2 Call forwarding (chuyển cuộc gọi):

ĐâylàtínhnăngthườngđượcsửdụngtronghệthốngAsterisk.Chứcnăngchophépchuyểnmộtcuộcgọi

đếnmộthaynhiềusốmáyđiệnthoạinhưđịnh

trước.Mộtsốtrườnghợpcầnchuyểncuộcgọinhư:Chuyểncuộcgọikhibận, chuyểncuộcgọi khi không trả

1.3 Caller ID (hiển thị số gọi):

Caller ID có chức năng cho phép chúng ta xác nhận số thuê bao gọi đến có nghĩa là dựa vào caller ID chúng ta có tiếp nhận hay không tiếp nhận cuộc gọi từ phía hệ thống Asterisk. Ngăn một số

cuộc gọi ngoài ý muốn.

1.4 Automated attendant (chức năng IVR):

Chức năng tương tác thoại 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 nghe thông điệp như “Xin chào mừng bạn đã gọi đến công ty chúng tôi. Hãy nhấn phím 1 để gặp phòng kinh doanh, phím 2 để gặp phòng kỹ thuật…” sau đó tùy vào sự tương tác của thuê bao gọi đến, hệ thống Asterisk sẽđịnh hướng cuộc gọi theo mong muốn.

Khi muốn xem điểm thi, muốn biết cước điện thoại của thuê bao, muốn biết tỉ giá đôla hiện nay như thế nào, kết quả sổ xố…tất 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.

1.5 Time and date:

Vào từ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 ngòai giờ sẽ hạn chế hay không cho phép gọi ra ngoài.

1.6 Call Parking:

Đây là chức năng chuyển cuộc gọi 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à 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.

1.7 Remote call pickup:

Đây là tính năng 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.

1.8 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 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.

1.9 Black list:

Black list cũng giống như Privacy Manager nhưng có một sự khác biệt là những sốđiện thoại nằm trong danh sách này 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).

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.

2. Cấu trúc Asterisk :

Hình 3.1. Cấu trúc Asterisk

Asterisk là sự kết hợp giữa nền tảng công nghệ hiện đạ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 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… (adsbygoogle = window.adsbygoogle || []).push({});

Một số chức năng chính trong Asterisk đóng vai trò quan trọng trong chuyển mạch cuộc gọi. Khi hệ thống Asterisk được khởi động 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 và 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 cũng được 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 extensions.conf.

Chức năng Application Launchar để rung chuông thuê bao, quay số, định hướng cuộc gọi, kết nối với hộp thư thoại…

Schedule 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 đến Asterisk đều thông qua các giao tiếp như SIP, Zaptel, IAX, do đó 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.

Hệ thống bao gồm 4 chức năng API chính:

o 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, GMS, G729…

o 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…

o Asterisk file format API : Asterisk tương thích với việc xử lý các loại tập tin có định dạng khác nhau như Mp3, wav, gsm…

o 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…

3. Các ngữ cảnh ứng dụng

Asterisk thực hiện rất nhiều ngữ cảnh ứng dụng khác nhau tuỳ vào nhu cầu sử dụng, dưới dây là những ngữ cảnh ứng dụng thường được sử dụng trong thực tế triển khai hệ thống asterisk.

3.1 Tổng đài VoIP IP PBX

Hình 3.2. Tổng đài IP PBX

Đây là hệ thống chuyển mạch voip được xây dựng phục vụ các công ty có nhu cầu thực hiện trên nền tảng mạng nội bộđã triển khai. Thay vì lắp đặt một hệ thống PBX cho nhu cầu liên lạc nội bộ thì nên lắp đặt hệ thống voip điều này sẽ làm giảm chi phí đáng kể. Hệ thống có thể liên lạc với mạng PSTN qua giao tiếp TDM.

3.2 Kết nối IP PBX với PBX

Hình 3.3. 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. Ngoài ra để

tăng khả năng liên lạc với mạng PSTN và VOIP khác, Công Ty có thể thực hiện kết nối với nhà cung cấp dịch vụ VoIP.

3.3 Kết nối giữa các server Asterisk

Hình 3.4. 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. Ví dụ Công ty Mẹ có trụ sởđặt tại nước Mỹ và các Chi nhánh đặt tại Việt Nam với các địa điểm Thành phố Hồ Chí Minh và Hà Nội. 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ể. Ngữ cảnh này về mặt pháp luật không cho cuộc gọi từ Mỹ vào Việt Nam.

3.4 Các ứng dụng IVR, Voicemail, điện thoại hội nghị

Hình 3.5. Triển khai server IVR, Voicemail, hội thoại

Ứ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 (adsbygoogle = window.adsbygoogle || []).push({});

ứ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ố hay kiểm tra cước cuộc gọi giống dịch vụ 19001260 vậy. Ứ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 Thành phố triển khai. Còn chức năng điện thoại hội nghị thiết lập cho nhiều máy điện thoại cùng nói chuyện với nhau.

3.5 Chức năng phân phối cuộc gọi tự động ACD

Hình 3.6. Phân phối cuộc gọi với hàng đợi

ACD (Automatic Call Distribution): Phân phối cuộc gọi tựđộng.

Đây là chức năng ứ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.

Công ty có khả năng tiếp nhận cùng một lúc 10 cuộc gọi như thế 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, trong lúc này nếu 1 trong mười số điện thoại trở về

Chương 4: GII THIU A2BILLING 1. Giới thiệu A2Billing

A2Billing cho ra nhiều phiên bản khác nhau với nhiều cải tiến và sửa lỗi. Tuy nhiên A2Billing vẫn là mã nguồn mở, chưa được thương mại hóa và do đó vẫn còn tồn tại một số lỗi và một số chức năng chưa hoàn thiện. Các tài liệu hướng dẫn sử dụng và cấu hình là rất thiếu. Trong chương này, em sẽ hướng dẫn người dùng cài đặt và tìm hiểu A2Billing 1.9.3. Từ đó thấy được những tính năng của A2Billing và áp dụng vào thực tế.

Trong phạm vi luận văn này, em chọn A2Billing để cài đặt và nghiên cứu vì 3 lý do chính: Một là A2Billing hoàn toàn miễn phí và đang được cộng đồng Asterisk đánh giá cao.

Hai là việc cài đặt và sử dụng A2Billing đòi hỏi phải có kiến thức tổng hợp về Asterisk, kết nối với cơ sở dữ liệu Mysql và nhiều kĩ năng khác.

A2Billing cho ta cái nhìn rất tổng quát về cách quản lý và tính tiền cuộc gọi vì A2Billing có mô hình rất giống các hệ thống tính tiền đang được sử dụng hiện nay của các nhà cung cấp dịch vụ.

Khi cài đặt thành công A2Billing cho chúng ta những tính năng cơ bản sau đây:

Các dịch vụ gọi điện bằng Card truyền thống: A2Billing có thểđược cấu hình để cung cấp các dịch vụ gọi điện bằng card chuẩn thông qua việc quay số và xác nhận số Number và Password.

Các dịch vụ VoIP: Các khách hàng có thểđược cung cấp soft-phone hoặc hard-phone và trả

tiền cho các cuộc gọi thiết lập qua VoIP.

Nhà cung cấp dịch vụ VoIP đầu cuối: A2Billing kết hợp với Asterisk có thể được sử dụng như một chuyển mạch mềm để kết nối và tính tiền cho số lượng lớn các cuộc gọi. Khi đó A2Billing

đóng vai trò như nhà kinh doanh và phân phối dịch vụ cho người dùng.

Như thế A2Billing kết hợp với Asterisk cung cấp một nền tảng công nghệđầy đủ tính năng và chuyển mạch mềm cung cấp các dịch vụ kết hợp. Trong A2Billing đã bao gồm các hình thức trả

trước và trả sau, báo cáo, thống kê, kiểm soát các cuộc gọi. Nó có thể được cấu hình để cung cấp nhiều dạng dịch vụ: gọi điện tính tiền, chuyển cuộc gọi, hộp thư thoại, trả tiền qua mạng (Visa card, Paypal,...).

Server: là một máy tính có cấu hình tốt.

Line Interface Cards: Các loại phần cứng kết nối với mạng TDM (PRI, BRI, Analogue).

Linux: Hệđiều hành chạy nền.

Apache: Chạy web server.

MySQL/ Postgresql: Quản lý cơ sở dữ liệu.

A2Billing: Bộ máy tính tiền và quản lý cuộc gọi.

A2Billing đã được triển khai trong một số môi trường thương mại không những cho các công ty có mục đích kết hợp hình thức TDM truyền thống với hệ thống VoIP mới, mà còn phục vụ cho các công ty cung cấp dịch vụ gọi điện trả tiền bằng card.

A2Billing đã được đăng kí bản quyền bởi GPL. Điều này nghĩa là bạn có quyền chỉnh sửa hệ (adsbygoogle = window.adsbygoogle || []).push({});

thống của bạn nhưng trong phạm vi qui định của GPL.

2. Tìm hiểu về AGI (Asterisk Gateway Interface)

Trong kiến trúc Asterisk, Asterisk hỗ trợ kênh giao tiếp với chương trình ngoài là AGI (Asterisk Gateway Interface), cho phép ta viết các ứng dụng bên ngoài tương tác 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.1.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.

STDERR: Thông tin lỗi.

Hình 4.1. Sơđồ giao tiếp giữa Asterisk 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. Coffee Maker thực hiện rất nhiều công việc còn lại trong hệ thống Asterisk như kiểm tra cấu hình hệ thống, liệt kê các extension, kiểm tra password, cấu hình hệ thống Asterisk…Nhìn chung AGI cho phép chúng ta thực hiện nhiều công việc giúp khai thác và quản lý Asterisk một cách hiệu quả nhất.

2.2.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, ngoài ra EAGI còn có khả năng đọc kênh âm thanh vào trên kênh STDERR+1.

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ả

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.

Hình 4.2. AGI giao tiếp với Asterisk

3. Cấu trúc và nguyên tắc hoạt động của A2Billing

Asterisk xuất ra một CDR (Call Detail Record) cho mỗi cuộc gọi. Thường thì tập tin lưu trữ

này sẽ được Asterisk xuất ra trong thư mục /var/log/asterisk/cdr-csv. CDR sẽ chứa đựng những thông tin chi tiết về các cuộc gọi trong asterisk. Và để thực hiện chức năng tính tiền, chúng ta sẽ phải tìm hiểu về CDR.

Trong mỗi file CDR sẽ bao gồm những thành phần chính sau:

accountcode: account number được sử dụng (là dãy gồm 20 kí tự).

src: CallerID number (là dãy gồm 80 kí tự).

dst: Destination extension (là dãy gồm 80 kí tự).

dcontext: Destination context (là dãy gồm 80 kí tự).

clid: CallerID (dãy gồm 80 kí tự).

dstchannel: Destination channel (80 kí tự).

lastapp: Ứng dụng cuối cùng sử dụng (80 kí tự).

lastdata: Dữ liệu ra của ứng dụng cuối cùng (80 kí tự). (adsbygoogle = window.adsbygoogle || []).push({});

start: Thời gian bắt đầu cuộc gọi (date/time).

answer: Thời gian trả lời cuộc gọi (date/time).

end: Thời gian kết thúc cuộc gọi (date/time).

duration: Thời gian cuộc gọi từ lúc quay số (giây).

billsec: Tổng thời gian gọi từ lúc có tín hiệu trả lời (giây).

disposition: Trạng thái cuộc gọi: ANSWERED, NO ANSWER, BUSY, FAILED.

amaflags: AMA = Automated Message Accounting.

omit: Không record calls.

billing: Đánh dấu để thực hiện billing.

documentation: Đánh dấu cho documentation.

user field: Người dùng tựđịnh nghĩa (tối đa 255 kí tự).

Trong một mạng lưới điện thoại thông thường, hệ thống tạo ra CDR từ các thành phần của mạng. Còn những ứng dụng mà thực thi trên cơ sở dữ liệu CDR sẽ sử dụng cơ sở dữ liệu đó ở dạng khác. Và OSS (operations support systems) là một quá trình được biết như chuyển cơ sở dữ liệu của CDR sang một dạng cơ sở dữ liệu khác mà ta có thể thực thi được dễ dàng. Với trường hợp của A2Billing thì cơ sở dữ liệu mà ta sẽ sử dụng để thực thi chức năng tính tiền, quản lý cuộc gọi là MySQL và PostgreSQL.

Hình 4.3. Chức năng của OSS

Trong Asterisk thì CDR được sinh ra trong cùng hệ thống máy chủ với Asterisk. Khi CDR

được sinh ra, một quá trình tính toán cho mỗi cuộc gọi sẽđược thực hiện dựa trên cơ sở dữ liệu của một hoặc nhiều file CDR. Quá trình này được gọi là đánh giá và có thể được thực thi trên một bộ

máy khác. Điều này cho phép chúng ta thực thi ứng dụng ở một máy chủ khác không phải là máy chủ

Asterisk.

Hệ thống đánh giá này là một phần của hệ thống tính tiền. Và hệ thống tính tiền của chúng ta sẽ quyết định thời gian cuộc gọi, tính toán số dư tài khoản và cho phép cuộc gọi được thiết lập hay không. Từđó sẽ tương tác trở lại hệ thống máy chủ Asterisk thông qua các các hàm AGI.

4. Một số khái niệm trong A2billing

Trước khi chúng ta làm việc với A2Billing, ta cần phải có một số khái niệm về A2Billing và các tính năng trong đó. A2Billing thực sự nhiều tính năng hơn là một ứng dụng gọi điện bằng card thông thường. Trong đó có mốt số khái niệm mà chúng ta cần phải giải thích qua là: Customers, Rates, Rate cards, Call plan, Trunks… Chúng ta sẽ tìm hiểu thiết lập chi tiết sau khi đã nói qua khái niệm từng mục.

Customers – Customers là người dùng, đồng thời cũng là card để người dùng thực hiện cuộc gọi. Đây hoàn toàn giống như các card VoIP đang được bán trên thị trường ở Việt Nam. Một Customer sẽđược xác nhận với một số PIN number hoặc số Card number.

Rates – Rates là chi phí thực hiện cuộc gọi đến một địa điểm cụ thể nào đó. Ta qui định rate là qui định phí thực hiện cuộc gọi đến một địa điểm.

Rate cards – Rate cards có thể hiểu là một nhóm các Rates. Ta có nhiều Rates khác nhau cho những địa điểm gọi điện khác nhau. Ví dụ ta có 3 nhà cung cấp dịch vụ PSTN, mỗi người tính phí khác nhau. Ta sẽ gom chung 3 rate đó vào 1 rate card là PSTN.

Call plan – Call plan thì lại là một nhóm các Rate cards. Dùng ví dụ trên, nếu ta có một Rate card cho mục đích gọi “nội hạt”, một Rate card khác cho gọi “liên tỉnh”. Ta sẽ gom hai Rate card đó

Một phần của tài liệu xây dựng tổng đài ip pbx (Trang 53)