Hệ thống VoIP và tổng đài Asterisk

Kiến trúc thời gian thực(Asterisk RealTime Architecture) ra đời nhằm đáp ứng nhu cầu thực tế trên. Kiến trúc thời gian thực thay vì lưu tập tin cấu hình trên tập tin dạng text thì được lưu vào database. Khi có một cuộc gọi tới( incoming call) một extension do Asterisk quản lý được Asterisk tìm kiếm trong bảng( có chức năng tương tự SIP.conf) của Database đã được định hướng trong file SIP.conf. Khi một trong 2 bên truyền thông phát ra lệnh hangup thì Asterisk sẽ phát tín hiệu kết thúc kênh truyền thông giữa 2 thiết bị đầu cuối và xóa Record đã nạp vào bộ nhớ. Như vậy, Asterisk tra cứu Extension theo kiểu thời gian thực trái với trước kia là nó load tất cả các extension trong file SIP.conf vào bộ nhớ

doc36 trang | Chia sẻ: lylyngoc | Lượt xem: 3676 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Hệ thống VoIP và tổng đài Asterisk, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Phần I Tổng quan về công nghệ VoIP Ứng dụng VoIP đầu tiên được phát triển năm 1995 bởi một công ty của Israeli tên là VocalTel . Ứng dụng này là phần mềm điện thoại internet chạy trên máy tính cá nhân giống như điện thoại PC ngày nay sử dụng card âm thanh, microm loa. Ý tưởng của nó là sử dụng các phương pháp nén tín hiệu thoại rồi chuyển chúng vào các gói IP và truyền qua mạng Internet. Ứng dụng VoIP đầu tiên này nói chung còn gặp phải nhiều vấn đề như : trễ , chất lượng còn thấp và không tương thích với các mạng ngoài. Mặc dù vậy, sự ra đời của nó cũng là một bước đột phá quan trọng. Kể từ đó đến nay, công nghệ VoIP phát triển ngày càng nhanh. I. Khái niệm VoIP ( Voice Over IP ) là công nghệ cho phép truyền thông tin thoại từ nơi này sang nơi khác thông qua các mạng sử dụng giao thức IP ( Internet Protocol ) để truyền tải thông tin. VoIP cũng thường được biết đến dưới một số tên khác như : điện thoại Internet, điện thoại IP, điện thoại dải rộng ( Broadband Telephony ) vv… Ở điện thoại thông thường, tín hiệu thoại được lấy mẫu với tần số 8 KHz sau đó lượng tử hóa 8 bit/mẫu và được truyền với tốc độ 64 KHz đến mạng chuyển mạch rồi truyền tới đích. Ở phía thu, tín hiệu này sẽ được giải mã thành tín hiệu ban đầu. Công nghệ VoIP cũng không hoàn toàn khác với điện thoại thông thường. Đầu tiên , tín hiệu thoại cũng được số hóa , nhưng sau đó thay vì truyền trên mạng PSTN qua các trường chuyển mạch , tín hiệu thoại được nén xuống tốc độ thấp rồi đóng gói , truyền qua mạng IP . Tại bên thu, các luồng thoại sẽ được giải nén thành các luồng PCM 64 rồi truyền tới thuê bao bị gọi. II. Ưu nhược điểm Ưu điểm . Gọi điện thoại giá rẻ : Đây là ưu điểm nổi bật nhất của VoIP. Sử dụng công nghệ VoIP có thể gọi điện thoại đường dài hoặc điện thoại ra nước ngoài với giá rẻ tương đương với giá gọi nội hạt. Tính thống nhất : Hệ thống VoIP có thể tích hợp cả mạng thoại , mạng số liệu và mạng báo hiệu. Các tín hiệu thoại, dữ liệu, báo hiệu có thể cùng đi trên một mạng IP. Việc này sẽ giảm đáng kể chi phí đầu tư Khả năng mở rộng : Hệ thống VoIP có thể được mở rộng thêm nhiều loại dịch vụ , nhiều tính năng mới . Nhược điểm Chất lượng dịch vụ : Do các mạng truyền số liệu vốn dĩ không được thiết kế để truyền thoại thời gian thực cho nên việc trễ truyền hay việc mất mát các gói tin hoàn toàn có thể xảy ra và sẽ gây ra chất lượng dịch vụ thấp . Bảo mật : Do mạng Internet là một mạng hỗn hợp và rộng khắp bao gồm rất nhiều máy tính cùng sử dụng cho nên việc bảo mật các thông tin cá nhân là rất khó. III. Các thành phần trong mạng VoIP Mạng VoIP phải có khả năng thực hiện các chức năng mà mạng điện thoại công cộng thực hiện, ngoài ra phải thực hiện chức năng của một gateway giữa mạng IP và mạng điện thoại công cộng. Thành phần của mạng điện thoại IP có thể gồm các phần tử sau đây: - Thiết bị đầu cuối kết nối với mạng IP ( Terminal) : Có thể là một phần mềm máy tính ( softphone) hoặc một điện thoại IP (hardphone). - Mạng truy nhập IP: Là các loại mạng dữ liệu sử dụng giao thức TCP/IP, phổ biến nhất là mạng Internet. - Gateway: Là thiết bị có chức năng kết nối hai mạng không giống nhau, hầu hết các trường hợp đó là mạng IP và mạng PSTN. Có 3 loại gateway là: Gateway truyền tải kênh thoại, Gateway điều khiển truyền tải kênh thoại và Gateway báo hiệu. - Gatekeeper: Có thể xem gatekeeper như là bộ não của hệ thống mạng điện thoại IP. Nó cung cấp chức năng quản lý cuộc gọi một cách tập trung và một số các dịch vụ quan trọng khác như là: nhận dạng các đầu cuối và gateway, quản lý băng thông, chuyển đổi địa chỉ (từ địa chỉ IP sang địa chỉ E.164 và ngược lại), đăng ký hay tính cước...Mỗi gatekeeper sẽ quản lý một vùng bao gồm các đầu cuối đã đăng ký, nhưng cũng có thể nhiều gatekeeper cùng quản lý một vùng trong trường hợp một vùng có nhiều gatekeeper. IV. Các giao thức trong mạng VoIP 1. Giao thức H323 Khi đề cập đến thoại IP, tiêu chuẩn quốc tế thường được đề cập đến là H.323. Giao thức H.323 là chuẩn do ITU-T SG16 phát triển cho phép truyền thông đa phương tiện qua các hệ thống dựa trên mạng chuyển mạch gói, ví dụ như Internet. Nó được ITU-T ban hành lần đầu tiên vào năm 1996 và gần đây nhất là năm 1998. H.323 là chuẩn riêng cho các thành phần mạng, các giao thức và các thủ tục cung cấp dịch vụ thông tin multimedia như : audio thời gian thực, video và thông tin dữ liệu qua các mạng chuyển mạch gói , bao gồm các mạng dựa trên giao thức IP. Tập giao thức H.323 được thiết kế để hoạt động trên tầng vận chuyển của các mạng cơ sở. Tuy nhiên, khuyến nghị H.323 rất chung chung nên ít được coi là tiêu chuẩn cụ thể. Trong thực tế, hoàn toàn có thể thiết kế một hệ thống thoại tuân thủ H.323 mà không cần đến IP. Khuyến nghị này chỉ đưa ra yêu cầu về “giao diện mạng gói” tại thiết bị đầu cuối. Ban đầu, H.323 dự định dành cho X.25, FrameRelay sau đó là ATM, nhưng giờ đây lại là TCP/IP, trong khi đó có rất ít H.323 được vận hành trên mạng X.25 và ATM. Cấu trúc của H.323. 1.1.1. Thiết bị đầu cuối. - Thực hiện các chức năng đầu cuối : thực hiện gọi hoặc nhận cuộc gọi. 1.1.2. Gatekeeper Một miền H.323 trên cơ sở mạng IP là tập hợp tất cả các đầu cuối được gán với một bí danh. Mỗi miền được quản trị bởi một Gatekeeper duy nhất, là trung tâm đầu não, đóng vai trò giám sát mọi hoạt động trong miền đó. Đây là thành phần tuỳ chọn trong hệ thống VoIP theo chuẩn H.323. Tuy nhiên nếu có mặt Gatekeeper trong mạng thì các đầu cuối H.323 và các Gateway phải hoạt động theo các dịch vụ của Gatekeeper đó. Gatekeeper hoạt động ở hai chế độ : - Chế độ trực tiếp: Gatekeeper chỉ có nhiệm vụ cung cấp địa chỉ đích mà không tham gia vào các hoạt động kết nối khác. - Chế độ chọn đường : Gatekeeper là thành phần trung gian, chuyển tiếp mọi thông tin trao đổi giữa các bên. Gatekeeper phải thực hiện các chức năng sau: • Chức năng dịch địa chỉ : Gatekeeper sẽ thực hiện chuyển đổi địa chỉ hình thức (dạng tên gọi hay địa chỉ hộp thư ) của một đầu cuối hay Gateway sang địa chỉ truyền dẫn (địa chỉ IP). Việc chuyển đổi được thực hiện bằng cách sử dụng bản đối chiếu địa chỉ được cập nhật thường xuyên bởi các bản tin đăng ký. • Điều khiển truy cập : Gatekeeper cho phép một truy cập mạng LAN bằng cách sử dụng các bản tin H.225 là ARQ/ACF/ARJ. Việc điều khiển này dựa trên sự cho phép cuộc gọi, băng thông, hoặc một vài thông số khác do nhà sản xuất quy định. Nó có thể là chức năng rỗng có nghĩa là chấp nhận mọi yêu cầu truy nhập của đầu cuối. • Điều khiển độ rộng băng thông :Gatekeeper hỗ trợ các bản tin BRQ/BRJ/BCF cho việc quản lý băng thông. Nó có thể là chức năng rỗng nghĩa là chấp nhận mọi yêu cầu thay đổi băng thông. • Quản lý vùng: Ở đây chữ vùng là tập hợp tất cả các phần tử H.323 gồm thiết bị đầu cuối, Gateway, MCU có đăng ký hoạt động với Gatekeeper để thực hiện liên lạc giữa các phần tử trong vùng hay từ vùng này sang vùng khác. Các chức năng không bắt buộc của Gatekeeper: • Điều khiển báo hiệu cuộc gọi: Gatekeeper có thể lựa chọn hai phương thức điều khiển báo hiệu cuộc gọi là: hoàn thành báo hiệu cuộc gọi với các đầu cuối và xử lý báo hiệu cuộc gọi chính bản thân nó, hoặc Gatekeeper có thể ra lệnh cho các đầu cuối kết nối một kênh báo hiệu cuộc gọi hướng tới nhau. Theo phương thức này thì Gatekeeper không phải giám sát báo hiệu trên kênh H.225. • Cho phép cuộc gọi : Thông qua việc sử dụng báo hiệu H.225, Gatekeeper có thể loại bỏ các cuộc gọi không được phép. Những nguyên nhân từ chối bao gồm hạn chế tới hoặc từ một đầu cuối cụ thể, hay các Gateway, và hạn chế truy nhập trong các khoảng thời gian nhất định. • Quản lý băng thông : Gatekeeper có thể hạn chế một số các đầu cuối H.323 cùng một lúc sử dụng mạng.Thông qua việc sử dụng kênh báo hiệu H.225, Gatekeeper có thể loại bỏ các các cuộc gọi từ một đầu cuối do sự hạn chế băng thông. Điều đó có thể xảy ra nếu Gatekeeper thấy rằng không đủ băng thông sẵn có trên mạng để trợ giúp cho cuộc gọi. Việc từ chối cũng có thể xảy ra khi một đầu đang tham gia một cuộc gọi yêu cầu thêm băng thông. Nó có thể là một chức năng rỗng nghĩa là mọi yêu cầu truy nhập đều được đồng ý. • Quản lý cuộc gọi : Một ví dụ cụ thể về chức năng này là Gatekeeper có thể lập một danh sách tất cả các cuộc gọi H.323 hướng đi đang thực hiện để chỉ thị rằng một đầu cuối bị gọi đang bận và cung cấp thông tin cho chức năng quản lý băng thông. 1.1.3. Khối điều khiển đa điểm MCU . Khối điều khiển đa điểm (MCU) đwợc sử dụng khi một cuộc gọi hay hội nghị cần giữ nhiều kết nối hoạt động. Do có một số hữu hạn các kết nối đồng thời, nên các MCU giám sát sự thoả thuận giữa các đầu cuối và sự kiểm tra mọi đầu cuối về các khả năng mà chúng có thể cung cấp cho hội nghị hoặc cuộc gọi. Các MCU gồm hai phần: Bộ điều khiển đa điểm (MC) và Bộ xử lý đa điểm (MP). Bộ điều khiển đa điểm (MC) có trách nhiệm trong việc thoả thuận và quyết định khả năng của các đầu cuối. Trong khi đó bộ xử lý đa điểm được sử dụng để xử lý đa phương tiện (multimedia), các luồng trong suốt quá trình của một hội nghị hoặc một cuộc gọi đa điểm. Bộ xử lý đa điểm ( MP ) có thể không có hoặc có rất nhiều vì chúng có trách nhiệm trộn và chuyển mạch các luồng phương tiện truyền đạt và việc xử lý các bit dữ liệu âm thanh và hình ảnh. MC không phải tương tác trực tiếp với các luồng phương tiện truyền đạt, đó là công việc của MP. Các MC và MP có thể cài đặt như một thiết bị độc lập hoặc là một phần của các phần tử khác của H.323. 1.2. Tập giao thức H323 1.2.1 Báo hiệu RAS Cung cấp các thủ tục điều khiển tiền cuộc gọi trong mạng H.323 có GK. Kênh báo hiệu RAS được thiết lập giữa các đầu cuối và các GK trước các kênh khác. Nó độc lập với kênh báo hiệu cuộc gọi và kênh điều khiển H.245. Các bản tin RAS được truyền qua mạng thông qua kết nối UDP, thực hiện việc đăng ký, cho phép, thay đổi băng thông, trạng thái vμ các thủ tục huỷ bỏ cuộc gọi. Báo hiệu RAS gồm những quá trình sau: - Tìm GateKeeper. - Đăng ký : Đăng ký là một quá trình cho phép GW, các đầu cuối và MCU tham gia vào một vùng và báo cho GK biết địa chỉ truyền vận và địa chỉ bí danh của nó. - Định vị đầu cuối - Cho phép, thay đổi băng thông, trạng thái vμ huỷ quan hệ 1.2.2 Báo hiệu điều khiển cuộc gọi H.225 Trong mạng H.323, thủ tục báo hiệu cuộc gọi được dựa trên khuyến nghị H.225 của ITU. Khuyến nghị này chỉ rõ cách sử dụng và trợ giúp của các bản tin báo hiệu Q.931. Sau khi khởi tạo thiết lập cuộc gọi. Các bản tin điều khiển cuộc gọi và các bản tin giữ cho kênh báo hiệu cuộc gọi tồn tại (keepalive) được chuyển tới các cổng. Các bản tin Q.931 thường được sử dụng trong mạng H.323: • Setup: Được gửi từ thực thể chủ gọi để thiết lập kết nối tới thực thể H.323 bị gọi • Call Proceeding: chỉ thị rằng thủ tục thiết lập cuộc gọi đã được khởi tạo. • Alerting: chỉ thị rằng chuông bên đích bắt đầu rung. • Connect: thông báo rằng bên bị gọi đã trả lời cuộc gọi. • Release Complete: chỉ thị rằng cuộc gọi đang bị giải phóng. • Facility: Đây là một bản tin Q.932 dùng để yêu cầu hoặc phúc đáp các dịch vụ bổ sung. Nó cũng được dùng để cảnh báo rằng một cuộc gọi sẽ được định tuyến trực tiếp hay thông qua GK. 1.2.3 Giao thức H.245 H245 xử lý các bản tin điều khiển từ đầu cuối đến đầu cuối giữa các thực thể H.323. Các thủ tục H.245 thiết lập các kênh logic cho việc truyền tín hiệu âm thanh, hình ảnh, dữ liệu và thông tin kênh điều khiển. Báo hiệu H.245 được thiết lập giữa 2 đầu cuối, một đầu cuối với một MC hoặc một đầu cuối với GK. Đầu cuối chỉ thiết lập duy nhất một kênh điều khiển H.245 cho mỗi cuộc gọi mà nó tham gia. Một đầu cuối, MCU, GK có thể hỗ trợ nhiều cuộc gọi cùng một lúc do vậy có nhiều kênh điều H.245 tương ứng. Khuyến nghị H.245 định nghĩa một số thực thể giao thức độc lập trợ giúp cho báo hiệu từ đầu cuối đến đầu cuối như sau: • Trao đổi khả năng : Bao gồm những bản tin cho phép xác định khả năng trao đổi dữ liệu và âm thanh của từng đầu cuối tham gia cuộc gọi. Nó đảm bảo cho bên thu đủ khả năng nhận và xử lý thông tin đầu vào mà không bị xung đột gì. Khi biết được khả năng thu của đầu cuối nhận, thì đầu cuối phát sẽ giới hạn nội dung thông tin mà nó truyền đi trong khuôn khổ khả năng thu trên. Ngược lại, khả năng truyền cho phép đầu cuối nhận lựa chọn chế độ thu thích hợp. Với tín hiệu âm thanh, khả năng trao đổi bao gồm các bộ giải mã tín hiệu thoại như họ tiêu chuẩn G: G.729 8kbps, G.711 64kbps, G.723 5,3 hoặc 6,3 kbps, G.722 48kbps... • Quyết định chủ - tớ: Là các thủ tục quyết định đầu cuối nào là chủ đầu cuối nào là tớ trong một cuộc gọi xác định. Mối quan hệ này được duy trì trong suốt thời gian cuộc gọi. • Trễ vòng (Round Trip delay) : Là các thủ tục dùng để xác định trễ giữa đầu cuối nguồn và đầu cuối đích. Bản tin RounđTripDelayRequest đo trễ và kiểm tra thực thể giao thức H.245 ở đầu cuối bên kia có còn hoạt động hay không. • Báo hiệu kênh logic (Logical channel signaling) : Báo hiệu kênh logic sử dụng các bản tin OpenLogicalChannel và CloseLogicalChannel và các thủ tục của H.245 để đóng mở các kênh logic. Khi một kênh logic được mở, một bản tin OpenLogical sẽ miêu tả đầy đủ nội dung của kênh logic đó bao gồm kiểu truyền thông (media type), thuật toán sử dụng, các chức năng và mọi thông tin khác để bên thu có thể dịch được nội dung của kênh logic. • Các thủ tục kết nối nhanh : Có hai thủ tục để thiết lập kênh truyền thông là H.245 và kết nối nhanh. Kết nối nhanh cho phép sự thiết lập kết nối truyền thông cho các cuộc gọi cơ bản điểm tới điểm với chỉ một lần trao đổi bản tin vòng (bản tin đi từ đầu cuối nguồn tới đầu cuối đích rồi lại trở về đầu cuối nguồn). • H245 ngầm (Tuneling H.245) : Các bản tin H.245 có thể được đóng gói ở trong kênh báo hiệu cuộc gọi H.225 thay vì tạo ra một kênh điều khiển H.245 riêng biệt. Phuơng pháp này cải thiện được thời gian thiết lập cuộc gọi và thời gian định vị tài nguyên. Đồng thời nó cho phép sự đồng bộ giữa báo hiệu cuộc gọi và điều khiển. Có thể đóng gói nhiều bản tin H.245 vào bất kỳ bản tin H.225 nào. Vào một thời điểm bất kỳ, mỗi đầu cuối có thể chuyển sang một kết nối H.245 riêng biệt. 1.3 .Quá trình thiết lập cuộc gọi H323. Một cuộc gọi trải qua các bước như sau: • Thiết lập cuộc gọi. • Khởi tạo truyền thông và trao đổi khả năng. • Thiết lập kênh truyền thông nghe nhìn. • Dịch vụ cuộc gọi. • Kết thúc cuộc gọi. 2. Giao thức khởi tạo phiên SIP SIP (Session Initiation Protcol ) là giao thức báo hiệu điều khiển lớp ứng dụng được dùng để thiết lập, duy trì, kết thúc các phiên truyền thông đa phương tiện (multimedia). Các phiên multimedia bao gồm thoại Internet, hội nghị, và các ứng dụng tương tự có liên quan đến các phương tiện truyền đạt (media) như âm thanh, hình ảnh, và dữ liệu. SIP sử dụng các bản tin mời (INVITE) để thiết lập các phiên và để mang các thông tin mô tả phiên truyền dẫn. SIP hỗ trợ các phiên đơn bá (unicast) và quảng bá (multicast) tương ứng các cuộc gọi điểm tới điểm và cuộc gọi đa điểm. Có thể sử dụng năm chức năng của SIP để thiết lập và kết thúc truyền dẫn là : định vị thuê bao, khả năng thuê bao, độ sẵn sàng của thuê bao, thiết lập cuộc gọi và xử lý cuộc gọi. SIP được IETF đ−a ra trong RFC 2543. Nó là một giao thức dựa trên ý tưởng và cấu trúc của HTTP(HyperText Transfer Protocol)-giao thức trao đổi thông tin của World Wide Web- vμ lμ một phần trong kiến trúc multimedia của IETF. Các giao thức có liên quan đến SIP bao gồm giao thức RSVP (Resource Reservation Protocol), giao thức truyền vận thời gian thực (Real-time Transport Protocol), giao thức cảnh báo phiên SAP (Session Announcement Protocol), giao thức miêu tả phiên SDP (Session Description Protocol). Các chức năng của SIP độc lập, nên chúng không phụ thuộc vào bất kỳ giao thức nào thuộc các giao thức trên. Mặt khác, SIP có thể hoạt động kết hợp với các giao thức báo hiệu khác như H.323. SIP là một giao thức theo thiết kế mở do đó nó có thể được mở rộng để phát triển thêm các chức năng mới. Sự linh hoạt của các bản tin SIP cũng cho phép đáp ứng các dịch vụ thoại tiên tiến bao gồm cả các dịch vụ di động. 2.1 Các thành phần trong hệ thống SIP Hai phần tử cơ bản trong hệ thống SIP là tác nhân người sử dụng (user agent) và các máy phục vụ mạng (network server). Bên chủ gọi và bị gọi được nhận dạng bằng các địa chỉ SIP. • User agent - Client (UAC): Khởi tạo các yêu cầu SIP và đóng vai trò như tác nhân chủ gọi của người dùng. - Server (UAS): Nhận các yêu cầu và thay mặt cho người sử dụng gửi trả các đáp ứng, đóng vai trò như tác nhân bị gọi. • Network server - Proxy server: xử lý các yêu cầu hoặc chuyển đổi nội dung rồi gửi cho các server khác - Location server: định vị thuê bao và cung cấp thông tin cho proxy hoặc redirect server - Redirect server: xác định server chặng tiếp theo rồi thông báo cho client để nó tự gửi yêu cầu. Redirect server không tạo và gửi yêu cầu - Registrar server: tiếp nhận và xử lý các yêu cầu REGISTER (vd, khi bật máy thuê bao), thực hiện nhận thực thuê bao 2.2 . Các bản tin của SIP SIP là một giao thức dựa trên ký tự văn bản với cú pháp bản in và các trường mào đầu đồng nhất với giao thức truyền siêu văn bản HTTP (Hypper Text Transfer Protocol). Các bản tin của SIP truyền trên cùng một kết nối TCP hoặc bó dữ liệu UDP. Một số trường mào đầu đơn giản : - INVITE : Để chỉ thị rằng thuê bao hoặc dịch vụ được mời tham gia vào một phiên. Nó bao gồm một mô tả phiên và đối với các cuộc gọi song công thì bên chủ gọi chỉ thị phương thức truyền thông (media) trong bản tin này. Theo phương pháp đơn giản này các bên có thể xác định được các khả năng của bên kia và bắt đầu một phiên hội thoại . - ACK : Những yêu cầu này tương ứng với một yêu cầu INVITE. Chúng là sự xác nhận cuối cùng từ một hệ thống cuối và chấm dứt một giao dịch được khởi tạo bởi INVITE. - OPTIONS : Bản tin này cho phép truy vấn và tập hợp các khả năng của user agent và network server. Tuy nhiên yêu cầu này không được dùng để thiết lập phiên. - BYE: Bên chủ gọi và bị gọi sử dụng yêu cầu này để giải phóng cuộc gọi. Trước khi thực sự giải phóng cuộc gọi, user agent gửi yêu cầu này tới server để cảnh báo rằng nó muốn giải phóng phiên làm việc. - CANCEL: Yêu cầu này cho phép user agent và network server xoá bỏ bất kỳ một yêu cầu nào đang thi hành. - REGISTER: yêu cầu này được client dùng để đăng ký thông tin với SIP server. Các bản tin đáp ứng - 1xx Informational (vd 100 Trying, 180 Ringing) - 2xx Successful (vd 200 OK, 202 Accepted) - 3xx Redirection (vd 302 Moved Temporarily) - 4xx Request Failure (e.g. 404 Not Found, 482 Loop Detected) - 5xx Server Failure (e.g. 501 Not Implemented) - 6xx Global Failure (e.g. 603 Decline) 2.3 Quá trình thiết lập cuộc gọi . - Theo kiểu Proxy : (1) Client gửi bản tin INVITE chứa thông tin về bên bị gọi tới Proxy Server (2) Proxy server xác định vị trí của bên bị gọi bằng cách sử dụng các địa chỉ được cung cấp trong bản tin INVITE và location server . (3) Location Server gửi trả lại Proxy Server thông tin đã yêu cầu (4) Proxy server gửi yêu cầu INVITE tới địa chỉ mà nó vừa xác định được. (5) Bên bị gọi (server) đáp ứng lại bằng bản tin thành công 200 OK. (6) Proxy server lại đáp ứng lại bên Client bằng bản tin 200 OK. (7)(8) Client xác nhận bằng bản tin ACK. Bản tin này được gửi qua Proxy server hoặc được gửi trực tiếp tới bên bị gọi. - Theo kiểu redirect : (1) Client gửi bản tin INVITE chứa thông tin về bên bị gọi tới Redirect Server (2 Redirect Server xác định vị trí của bên bị gọi bằng cách sử dụng các địa chỉ được cung cấp trong bản tin INVITE và location server . (3) Location Server gửi trả lại Proxy Server thông tin đã yêu cầu (4) Sau khi đã xác định được vị trí của thuê bao thì Redirect server gửi trực tiếp địa chỉ vừa nhận được cho phía Client. (5) Client gửi bản tin ACK tới Redirect server để hoàn tất phiên giao dịch. (6) Client gửi trực tiếp yêu cầu INVITE tới bên bị gọi. (7)(8) Bên bị gọi đáp ứng bằng bản tin 200 OK và bên chủ gọi xác nhận bằng bản tin ACK. 3.Real-time Transport Protocol (RTP) RTP được coi như một giao thứ truyền từ đầu cuối đến đầu cuối (end to end) phục vụ truyền dữ liệu thời gian thực như audio và video. RTP thực hiện việc quản lý về thời gian truyền dữ liệu và nhận dạng dữ liệu được truyền. Nhưng RTP không cung cấp bất cứ một cơ chế nào đảm bảo thời gian truyền và cũng không cung cấp bất cứ một cơ chế nào giám sát chất lượng dịch vụ. Sự giám sát và đảm bảo về thời gian truyền dẫn cũng như chất lượng dịch vụ được thực hiện nhờ hai giao thức RTCP và RSVP. Tương tự như các giao thứ truyền dẫn khác, gói tin RTP (RTP packet) bao gồm hai phần là header (phần mào đầu) và data (dữ liệu). Nhưng không giống như các giao thức truyền dẫn khác là sử dụng các trường trong header để thực hiện các chức năng điều khiển, RTP sử dụng một cơ chế điều khiển độc lập trong định dạng của gói tin RTCP để thực hiện các chức năng này. Cấu trúc gói tin RTP - Version (2 bit): version của RTP (hiện tại là version 2). - Padding (1 bit): có vai trò như bit cờ được sử dụng để đánh dấu khi có một số byte được chèn vào trong gói. - Extension (1 bit): cũng có vai trò như một bit cờ được sử dụng để đánh dấu khi có header mở rộng tiếp theo header cố định. - CSRC count (4 bit): chỉ rõ số lượng của CSRC (contributing source) - Marker (1 bit): có vai trò như một bit cờ, trạng thái của nó được phụ thuộc vào trường payload type. - Payload Type (7 bit): chỉ rõ loại thông tin được chứa trong các gói. - Serquence Number (16 bit): cung cấp số thứ tự của các gói. Cách này như một cơ chế giúp bên thu có thể thu đúng thứ tự các gói tin, nhận ra gói tin bị mất. - Time-stamp (32 bit): là tham số đánh dấu thời điểm byte đầu tiên được lấy mẫu trong gói RTP. Giá trị time-stamp khởi đầu là ngẫu nhiên, các gói RTP phát đi liên tiếp có thể có cũng giá trị time-stemp nếu chúng cùng được phát đi một lúc. - Syschronisation source (SSRC) identifier: số nhận dạng nguồn của gói dữ liệu. Nếu ứng dụng muốn truyền dữ liệu có nhiều dạng khác nhau trong cùng một thời điểm (ví dụ là tín hiệu audio và video) thì sẽ có những phiên truyền riêng cho mỗi dạng dữ liệu. Sau đó ứng dụng sẽ tập hợp các gói tin có cùng nhận dạng SSRC. Số nhận dạng này được gán một cách ngẫu nhiên. - Contribute source (CSRC) identifer (độ dài thay đổi): tại một điểm đích nào đó mà những tín hiệu audio đến đích cần trộn lại với nhau thì giá trị CSRC sẽ là tập hợp tất cả các giá trị SSRC của các nguồn mà gửi tín hiệu đến điểm đích đó. Trường CSRC có thể chứa tối đa là 15 số nhận dạng nguồn SSRC. - Extension header (độ dài thay đổi): chứa các thông tin thểm của gói RTP. 4.Real-time Transport Control Protocol (RTCP) Mặc dù RTP là một giao thức độc lập nhưng thường được hỗ trợ bởi giao thức RTCP. RTCP trả về nguồn các thông tin về sự truyền thông và các thành phần đích. Giao thức điều khiển này cho phép gửi về các thông số về bên thu và tự thích nghi với bên phát cho phù hợp vời bên phát. Mỗi người tham gia một phiên truyền RTP phải gửi định kỳ các gói RTCP tới tất cả những người khác cũng tham gia phiên truyền. Tuỳ theo mục đích mà RTCP thực hiện 4 chức năng: - RTCP cung cấp một sự phản hồi chất lượng của dữ liệu. Các thông tin đó giúp cho ứng dụng thực hiện chức năng điều khiển luồng và quản lý tắc nghẽn. - RTCP cung cấp sự nhận dạng mà được sử dụng để tập hợp các kiểu dữ liệu khác nhau (ví dụ audio và video). Điều này là cần thiết vì khả năng này không được RTP cung cấp. - Nhờ việc định kỳ gửi các gói tin RTCP mà mỗi phiên truyền có thể theo dõi được số người tham gia. RTP không thể sử dụng được cho mục đích này khi một ai đó không gửi dữ liệu mà chỉ nhận từ những người khác. - Cuối cùng là một chức năng lựa chọn cho phép có thêm thông tin về những người tham gia vào phiên truyền. Tuỳ thuộc vào giao thức RTP được sử dụng cho loại dữ liệu nào mà RTCP cung cấp các thông báo điều khiển khác nhau. Có 4 loại thông báo điều khiển chính được giao thức RTCP cung cấp là: - Sender report (SR): thông báo này chứa các thông tin thống kê liên quan đến kết quả truyền như tỷ lệ tổn hao, số gói dữ liệu bị mất, khoảng trễ. Các thông báo này phát ra từ phía phát trong một phiên truyền thông. - Receiver report (RR): thông báo này chứa các thông tin thống kê liên quan đến kết quả nhận giữa các điểm cuối. Các thông báo này được phát ra từ phía thu trong một phiên truyền thông. - Source description (SDES): thông báo bao gồm các thông số mô tả nguồn như tên, vị trí,... - Application (APP): thông báo cho phép truyền các dữ liệu ứng dụng. Cấu trúc gói tin RTCP - Version (2 bit): version RTP hiện tại (version 2). - Padding (1 bit): có chức năng như một bit cờ chỉ rõ xem trong gói có các byte được chèn thêm hay không. - Report counter (5 bit): số thông báo chứa trong gói - Packet type (8 bit): xác định loại thông báo của gói (SR hoặc RR hoặc APP). - Length (16 bit): chỉ rõ độ dài của gói. - Report (độ dài thay đổi): chứa các thông báo chi tiết. 5. Resource Reservation Protocol (RSVP) Giao thức RSVP được sử dụng như một giao thức báo hiệu hỗ trợ cho RTP. Mục đích của RSVP là cung cấp một cơ chế đảm bảo băng thông cho các hoạt động của các ứng dụng. RSVP gửi tham số chất lượng dịch vụ QoS kết hợp với các dữ liệu thời gian thực được truyền trên mạng TCP/IP. Hỗ trợ giao thức RTP, giao thức RSVP có thể giải quyết các lỗi xảy ra trên đường truyền để đảm bảo các tham số chất lượng. Thật vậy, giao thức RTP chỉ hỗ trợ việc truyền thông điểm – điểm và không quản lý các tham số liên kết trên mạng. RSVP không những tác động ở máy phát, máy thu mà còn tác động trên cả các router trong mạng. RSVP thiết lập và duy trì kết nối duy nhất cho một luồng dữ liệu, xác lập một hệ thống quản lý thứ tự các gói và tạo modun điều khiển để quản lý các nguồn tài nguyên của các nút mạng khác nhau. RSVP đưa ra một mô hình tối ưu để liên kết các dữ liệu từ một nguồn tới nhiều đích. RSVP đóng vai trò quản lý một cách lập các host đích để tự thích nghi các tham số chất lượng giữa khả năng cung cấp và nhu cầu đáp ứng. Việc dành riêng các tài nguyên được yêu cầu bởi bên thu bằng cách phát một yêu cầu chất lượng dưới dạng một bản tin RSVP tương thích với nhu cầu của chúng. Thực tế sử dụng RSVP nhằm đảm bảo chất lượng trong việc truyền tin. Để đảm bảo đường truyền thông suốt các điểm cuối phải hoạt động ở chế độ kết nối. Máy thu phải thường xuyên gửi các bản tin RSVP đến các router để đảm bảo thông suốt đường truyền. RSVP hoạt động trên cơ sở xử lý các gói tin theo một yêu cầu chất lượng dịch vụ QoS. Hai thành phần chính thực hiện chức năng này là flowspec và filterspec. Flowspec có chức năng kiểm tra luồng dữ liệu được truyền như một yêu cầu dịch vụ của các ứng dụng mà kết quả là đưa ra một yêu cầu về chất lượng dịch vụ QoS. Flowspec đưa ra một yêu cầu chất lượng dịch vụ còn filterspec có nhiệm vụ lọc bỏ các gói tin mà không đảm bảo yêu cầu về chất lượng dịch vụ, những gói này sẽ được cung cấp một phương thức truyền tốt nhất có thể đáp ứng yêu cầu chất lượng dịch vụ. 6. Giao thức SGCP (Simple Gateway Control Protocol) Giao thức này cho phép các thành phần điều khiển cuộc gọi có thể điều khiển kết nối giữa trung kế, các thiết bị đầu cuối với các gateway. Các thành phần điều khiển được gọi là Call Agent. SGCP được sử dụng để thiết lập, duy trì và giải phóng các cuộc gọi qua mạng IP. Call Agent thực hiện các chức năng báo hiệu cuộc gọi và gateway thực hiện chức năng truyền tín hiệu âm thanh. SGCP cung cấp năm lệnh điều khiển chính như sau: - Notification Request: yêu cầu gateway phát các tín hiệu nhấc đặt máy và các tín hiệu quay số DTMF. - Notify: gateway thông báo với Call Agent về các tín hiệu được phát hiện ở trên. - Create Connection: Call Agent khởi tạo kết nối giữa các đầu cuối trong gateway. - Modify Connection: Call Agent dùng lệnh này để thay đổi các thông số về kết nối đã thiết lập. Lệnh này cũng có thể dùng để điều khiển luồng cho các gói tin RTP đi từ gateway này sang gateway khác. - Delete Connection: Call Agent giải phóng các kết nối đã thiết lập. Năm lệnh trên đây điều khiển gateway và thông báo cho call agent về các sự kiện xảy ra. Mỗi lệnh hay yêu cầu bao gồm các thông số cụ thể cần thiết để thực thi các phiên làm việc. 7. Giao thức MGCP (Media Gateway Control Protocol) Giao thức MGCP cho phép điều khiển các gateway thông qua các thành phần điều khiển nằm bên ngoài mạng. MGCP sử dụng mô hình kết nối tương tự như SGCP dựa trên các kết nối cơ bản giữa thiết bị đầu cuối và gateway. Các kết nối có thể là kết nối điểm-điểm hoặc kết nối đa điểm. Ngoài chức năng điều khiển như SGCP, MGCP còn cung cấp thêm các chức năng sau: - Endpoint Configuration: Call Agent dùng lệnh này để yêu cầu gateway xác định kiểu mã hoá ở phí đường dây kết nối đến thiết bị đầu cuối. - AuditEndpoint và AuditConnection: Call Agent dùng lệnh này để kiểm tra trạng thái và sự kết nối ở một thiết bị đầu cuối. - RestartIn-Progress: Gateway dùng lệnh này để thông báo với Call Agent khi nào các thiết bị đầu cuối ngừng sử dụng dịch vụ và khi nào quay lại sử dụng dịch vụ. Phần II Tổng quan về Asterisk Asterisk là hệ thống chuyển mạch mềm, là phần mềm nguồn mở được viết bằng ngôn ngữ C chạy trên hệ điều hành linux thực hiện tất cả các tính năng của tổng đài PBX và hơn thế nữa. 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. Asterisk là một phần mềm mang tính cách mạng, tin cậy, mã nguồn mở và miễn phí mà biến một PC rẻ tiền thông thường chạy Linux thành một hệ thống điện thoại doanh nghiệp mạnh mẽ. Asterisk là một bộ công cụ mã nguồn mở cho các ứng dụng thoại và là một server xử lý cuộc gọi đầy đủ chức năng. Asterisk là một nền tảng tích hợp điện thoại vi tính hoá kiến trúcb mở. Nhiều hệ thống Asterisk đã được cài đặt thành công trên khắp thế giới. Công nghệ Asterisk đang phục vụ cho nhiều doanh nghiệp. Asterisk đem đến cho người sử dụng tất cả các tính năng và ứng dụng của hệ thống tổng đài PBX và cung cấp nhiều tính năng mà tổng đài PBX thông thường không có được, Hiện nay Asterisk trên đà phát triển nhanh được rất nhiều doanh nghiệp triển khai ứng dụng cho công ty của mình. Đây là xu thế tất yếu của người sử dụng điện thoại, vì các công ty đều có mạng máy tính và cần liên lạc với nhau trong công việc giữa các phòng ban hoặc chi nhánh và cần một chi phí thấp thậm chí không phải tốn chi phí khi thực hiện các cuộc gọi trên mạng nội bộ của công ty. Không gói gọn thông tin liên lạc trong công ty mà các ứng dụng giao tiếp với mạng PSTN hoặc mạng VOIP cho phép gọi ra bất cứ số điện thoại nào có trên mạng PSTN. I. 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 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. 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. 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… Scheduler and I/O Manager đảm nhiệm các ứng dụng nâng cao. 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. Hệ thống cũng bao gồm 4 chức năng API chính: Codec translator API: các hàm thực thi, giải nén các chuẩn như G711, G729… Asterisk Channel API : Giao tiếp với các kênh liên lạc khác nhau . Asterisk file format API : xử lý các loại file có định dạng 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… II – Giao thức IAX ( Inter Asterisk eXchange) IAX là giao thức chuẩn dành riêng cho Asterisk, được phát triển bởi tác giả của phần mềm Asterisk để khắc phục những hạn chế trong giao thức SIP. Nó cung cấp hoạt động liên kết trong suốt với tường lửa NAT và PAT. Nó hỗ trợ việc thiết lập, nhận, chuyển cuộc gọi và đăng ký cuộc gọi. 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 chuyển tải thoại và báo hiệu trên cùng một kênh(in band). IAX giải quyết được vấn đề NAT đề cập trên phần 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, 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). Với IAX, các điện thoại hoàn toàn cơ động. Chỉ cần kết nối điện thoại với Asterisk server bất cứ đâu trên mạng Internet, chúng sẽ đăng ký với PBX chủ và được định tuyến cuộc gọi ngay tức thì. IAX có đoạn mào đầu rất nhỏ. 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 có thể nói là nhỏ hơn rất nhiều. III – Các tính năng cơ bản của tổng đài Asterisk Ngoài những tính năng tương tự như tổng đài PBX, Asterisk còn có thêm nhiều tính năng khác mà chỉ có thể có được ở những tổng đài rất đắt tiền. Đó là các tính năng: - Voicemail Services with Directory - Conferencing Server - Packet Voice Server - Encryption of Telephone or Fax Calls - Heterogeneous Voice over IP gateway (H.323, SIP, MGCP, IAX) - Custom Interactive Voice Response (IVR) system - Soft switch - Number Translation - Calling Card Server - Predictive Dialer - Call Queuing with Remote Agents - Gateway and Aggregation for Legacy PBX systems - Remote Office or User Telephone Services - PBX long distance Gateway - Telemarketing Block - Standalone Voicemail System Phần III Triển khai hệ thống Asterisk Mô hình triển khai hệ thống : Các phần cứng sử dụng : 4 PC : + 2PC Asterisk Server ( Linux) : Cài đặt Asterisk + 2PC Client ( Windows ) : Cài đặt Softphone ( X-lite) 2 Router 1 Switch 1 Analog phone 1 SPA 3102 Cài đặt phần mềm Cài đặt Asterisk Server - Download các gói phần mềm : Asterisk : Lipri : Zaptel : Asterisk Addons : - Giải nén chúng vào thư mục /usr/src : tar -vxzf asterisk-1.4.12.tar.gz tar -vxzf libpri-1.4.7.tar.gz tar -vxzf zaptel-1.4.7.tar.gz tar -vxzf asterisk-addons-1.4.2.tar.gz - Kiểm tra các thư viện cần thiết cho việc cài đặt : Các thư viện bao gồm : bison, bison-devel, ncurses, ncurses-devel, zlib, zlib-devel, openssl, openssl-devel, gnutls-devel, gcc, gcc-c++ Kiểm tra bằng cách dùng lệnh : rpm –q tên_thư_viện Nếu thư viện chưa được cài đặt , dùng lệnh : yum install tên_thư_viện để cài đặt - Cài đặt gói Lipri : cd /usr/src/libpri-1.4.7 make make install - Cài đặt gói Zaptel cd /usr/src/zaptel-1.4.7 make make install - Cài đặt gói Asterisk cd /usr/src/asterisk-1.4.12 ./configure make make install - Cài đặt gói Asterisk Addon : cd /usr/src/asterisk-addons-1.4.2 make make install Cài đặt Softphone: Softphone được sử dụng ở đây là phần mềm X-Lite Tiến hành download X-Lite 3.0 tại www.counterpath.com và cài đặt III - Cấu hình hệ thống Asterisk 1. Cấu hình Asterisk Server Asterisk Server 1 Sip.conf --------------------- [thanh] Type=friend Username=thanh Secret=1234 Host=dynamic Context = local1 ----------------------- [khanh] Type=friend Username=khanh Secret=1234 Host=dynamic Context = local1 ------------------------ [spa3102] Type=friend Secret=1234 Host=dynamic Context = local1 Extension.conf ------------------------ [local1] Exten=101, 1, Dial(SIP/thanh) Exten=thanh, 1, Dial(SIP/thanh) Exten=102, 1, Dial(SIP/khanh) Exten=khanh, 1, Dial(SIP/khanh) Exten=103,1,Dial(SIP/spa3102) Asterisk Server 2 Sip.conf --------------------- [phuong] Type=friend Username=phuong Secret=1234 Host=dynamic Context = local2 ----------------------- [cuc] Type=friend Username=cuc Secret=1234 Host=dynamic Context = local2 Extension.conf ------------------------ [local2] Exten=201, 1, Dial(SIP/phuong) Exten= phuong, 1, Dial(SIP/phuong) Exten=202, 1, Dial(SIP/cuc) Exten=cuc, 1, Dial(SIP/cuc) Cấu hình các Softphone : ( Sip Account Setting - Add ) Softphone 1 : Softphone 2 : Cấu hình SPA3102 Thiết bị SPA3102 dùng để kết nối điện thoại tương tự thông thường vào mạng IP. SPA3102 có 4 cổng giao tiếp - Cổng Ethernet nối với một máy tính, máy tính này được sử dụng để cấu hình các thông số cho SPA3102 hoạt động. - Cổng Internet nối với mạng LAN chứa Asterisk PBX và các máy tính có cài softphone. - Cổng Line nối với đường dây điện thoại thông thường. - Cổng Phone nối với điện thoại tương tự. 4. Cấu hình giao tiếp giữa 2 Asterisk Server : Server 1 : iax.conf ---------------------------- [general] bindport = 4569 bindaddr = 0.0.0.0 [site2] type=friend secret=123 auth=plaintext host=192.168.3.2 context=local2 Extensions.conf : ------------------------------ [local1] Exten= 201,1,Dial(iax2/site2/201) Exten= 202,1,Dial(iax2/site2/202) Server 2 Iax.conf ------------------------------ [general] bindport = 4569 bindaddr = 0.0.0.0 [site1] type=friend secret=123 auth=plaintext host=192.168.1.2 context=local1 Extensions.conf ------------------------------ [local2] Exten= 101,1,Dial(iax2/site1/101) Exten= 102,1,Dial(iax2/site1/102) Exten= 103,1,Dial(iax2/site1/103) IV.Một số ứng dụng với Asterisk 1.Ứ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. Một số tính năng của hệ thống voiceMail: - 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ửiemail để 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 : Cấu hình trong voicemail.conf : tạo ra người sử dụng và password của hòm thư Cú pháp : extension của user = mật mã , tên đầy đủ , địa chỉ email [mailbox] tienthanh = 123456, Nguyen Tien Thanh, tienthanh852000@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=123,1,Answer() exten=123,2,Dial(SIP/tienthanh,5) exten=123,3,GoToIf($[${DIALSTATUS} = CHANUNAVAIL]?7) exten=123,4,GoToIf($[${DIALSTATUS} = BUSY]?9) exten=123,5,VoiceMail(tienthanh@mailbox) exten=123,6,GoTo(123,10) exten=123,7,VoiceMail(utienthanh@mailbox) exten=123,8,GoTo(123,10) exten=123,9,VoiceMail(btienthanh@mailbox) exten=123,10,Hangup() Cấu hình trong sip.conf --------------------- [tienthanh] type = friend username = tienthanh secret = 123 host = dynamic context = voicemail mailbox=tienthanh@mailbox ---------------------- [phuong] type = friend username = phuong secret = 123 host = dynamic context = voicemail Như vậy , nếu một người sử dụng [phuong] quay số 123 để gọi [tienthanh] thì nếu bận , nội dung cuộc gọi sẽ được ghi vào hộp thư thoại. 2.Ứng dụng nhạc chờ ( MusicOnHold ) Tính năng Music On Hold của Asterisk có nhiều ứng dụng thực tế rất thiết thực chẳng hạn như : trong khi chờ giữ máy để được gặp người khác chẳng hạn, thuê bao có thể nghe âm nhạc giải trí để quên đi thời gian chờ đợi, khi chờ trả lời cuộc gọi thuê bao sẽ nghe âm nhạc thay vì hồi âm chuông như điện thoại truyền thống. Cấu hình : - Tạo thư mục mới chẳng hạn là ‘mp3music’ trong thư mục var/lib/asterisk/moh. - Copy tất cả các file nhạc mp3 vào thư mục đó. - Cấu hình MusicOnHold.conf ------------------------------------- [mymusic] mode=files directory=/var/lib/asterisk/moh/mp3music random=yes - Cấu hình extensions.conf : ------------------------------------- exten => 123,1,Answer exten => 123,n,SetMusicOnHold(mymusic) exten => 123,n,WaitMusicOnHold(15) exten => 123,n,Hangup Như vậy, khi thuê bao quay số 123 hệ thống sẽ trả lời sau đó phát ra một bài nhạc ngẫu nhiên trong thư mục mp3music trong vòng 15 giây sau đó gác máy. 3. Ứng dụng phân phối cuộc gọi tự động ACD ( Automatic Call Distrubution ) Hệ thống hàng đợi phân phối cuộc gọi tự động cho phép trả lời cuộc gọi một cách hiệu quả hơn và có thể giúp giảm giá thành , tăng chất lượng phục vụ. Hệ thống hàng đợi phân phối cuộc gọi tự động làm việc như sau : Các cuộc gọi được đưa vào hàng đợi Agent ( người trực điện thoại ) trả lời cuộc gọi theo theo các queuing strategy như : Ringall, RoungRobin, Rrmemory... Trong khi chờ cuộc gọi, có thể cho người gọi nghe một bản nhạc nào đó. Có thể có các thông báo tới người gọi về thời gian người gọi phải đợi ... Hệ thống hàng đợi này thường được ứng dụng cho các trung tâm cuộc gọi ( call centers) hay các phòng dịch vụ khách hàng. Sử dụng hệ thống này, có thể : Tránh được tình trạng bỏ lỡ mất các cuộc gọi khi các agent đang bận nghe một cuộc gọi khác . Nếu số lượng cuộc gọi trong hàng đợi tăng thì có thể thêm agent trả lời cuộc gọi. Có thể thống kê được một số thông số như : tỉ lệ cuộc gọi bị bỏ lỡ, thời gian gọi trung bình ... Việc thống kê này sẽ giúp ước lượng được số lượng agent trả lời đồng thời giúp tăng chất lượng phục vụ khách hàng . Kiến trúc hệ thống ACD Các chiến lược phân phối cuộc gọi : - ringall : phân phối đến tất cả các agent đang rỗi cho đến khi có ai đó trả lời . roundrobin : Phân phối một cách công bằng lần lượt đến các agent leastrecent : Phân phối cuộc gọi tới agent mới login vào fewest calls : Phân phối tới agent đã nghe ít cuộc gọi nhất random : Phân phối một cách ngẫu nhiên. rrmemory : như roundrobin nhưng ... Các bước cấu hình: - Tạo ra các hàng đợi : Cấu hình ở queue.conf ------------------------------- [nhansu] ; Tạo hàng đợi nhansu music = default ; Nhạc trong khi chờ cuộc gọi timeout = 2 retry = 2 maxlen = 0 ; Không giới hạn dung lượng hàng đợi member => Agent/100 ; Agent/AgentID member => Agent/101 ------------------------ [ke toan] music = default timeout = 15 retry = 5 maxlen = 0 member => Agent/200 member => Agent/201 --------------------- [taichinh] music = default timeout = 15 retry = 5 maxlen = 0 member => Agent/300 member => Agent/301 - Tạo ra các Agent : cấu hình trong agents.conf Cú pháp : agent => AgentID, Mật khẩu , Tên ----------------------------------------------------------------------- [Agents] agent => 100, 123456, Nguyen Tien Thanh – Phong Nhan Su agent => 101, 123456, Phạm Tran Khanh – Phong Nhan Su agent => 200, 123456, Bui Hong Phuong – Phong Ke Toan agent => 201, 123456, Le Thi Cuc – Phong Ke Toan agent => 300, 123456, Tran Van Thang – Phong Tai Chinh agent => 301, 123456, Pham Cong Dien – Phong Tai Chinh - Tạo dialplan : extensions.conf ---------------------------------------------------------- [TestACD] ; Các Agent gọi đến số 900 để đăng ký exten = 900,1,wait(1) exten = 900,2, AgentLogin() ; User gọi đến 09481xxxxx thì phân phối vào hàng đợi nhansu và trong khi đợi để được trả lời , user được nghe nhạc exten = _09481xxxxx, 1, Answer exten = _09481xxxxx, 2, SetMusicOnHold(default) exten = _09481xxxxx, 3, queue(nhansu) ; User gọi đến 09482xxxxx thì phân phối vào hàng đợi ketoan exten = _09482xxxxx, 1, Answer exten = _09482xxxxx, 2, SetMusicOnHold(default) exten = _09482xxxxx, 3, queue(ketoan) ; User gọi đến 09483xxxxx thì phân phối vào hàng đợi taichinh exten = _09483xxxxx, 1, Answer exten = _09483xxxxx, 2, SetMusicOnHold(default) exten = _09483xxxxx, 3, queue(taichinh) - Agent gọi đến số 900 để Login , sẽ có 1 thông báo nhập username : nhấn “AgentID #” ( ví dụ 100#) để nhập và nếu thành công sẽ có tiếp 1 thông báo nhập mật khẩu : nhấn “Mật khẩu #” (123456#) để nhập. Nếu đăng nhập thành công thì Agent sẽ được nghe nhạc trong khi chờ cuộc gọi. Và nếu có 1 cuộc gọi đến được phân phối đến Agent thì sẽ có 1 tiếng “bip” rồi cuộc gọi được kết nối tới agent. - Agent có thể nhấn ‘*’ để kết thúc cuộc gọi (không logout ra khỏi hàng đợi) - Agent có thể chuyển cuộc gọi qua hàng đợi khác bằng cách ấn số tương ứng của hàng đợi đó . 4. Ứng dụng thời gian thực với MySQL ( Realtime Architecture ) Thông thường để cấu hình hệ thống Asterisk chúng ta thực hiện trên các tập tin dạng text như sip.conf, iax.conf. extentions.conf... sau đó để tập tin cấu hình có hiệu lực ta cần phải phải thực hiện lệnh reload. Một nhu cầu thực tế là khi cấu hình hệ thống asterisk, chẳng hạn như cho người sử dụng khai báo một thuê bao online mà không cần phải reload lại hệ thống asterisk thì thực hiện như thế nào? Kiến trúc thời gian thực(Asterisk RealTime Architecture) ra đời nhằm đáp ứng nhu cầu thực tế trên. Kiến trúc thời gian thực thay vì lưu tập tin cấu hình trên tập tin dạng text thì được lưu vào database. Khi có một cuộc gọi tới( incoming call) một extension do Asterisk quản lý được Asterisk tìm kiếm trong bảng( có chức năng tương tự SIP.conf) của Database đã được định hướng trong file SIP.conf. Khi một trong 2 bên truyền thông phát ra lệnh hangup thì Asterisk sẽ phát tín hiệu kết thúc kênh truyền thông giữa 2 thiết bị đầu cuối và xóa Record đã nạp vào bộ nhớ. Như vậy, Asterisk tra cứu Extension theo kiểu thời gian thực trái với trước kia là nó load tất cả các extension trong file SIP.conf vào bộ nhớ Các bước cài đặt : - Download và cài đặt MySQL server và các thư viện kèm theo :libdbi-dbd-mysql,mysql-connector-odbc-3.51.12-2.2, mysql-libs, mysql, mysql-server, mysql-devel - Sau khi cài đặt xong mysql , khởi động mysql : /etc/rc.d/init.d/mysqld start - SET lại password cho truy cập tới Mysql cho user root: SET PASSWORD FOR root@localhost = ‘123’ - Đăng nhập vào mysql : mysql –u root –p 123 - Tạo cở sở dữ liệu mới : creat database asterisk_database; use asterisk_database; - Tạo ra các bảng để chứa cơ sở dữ liệu : create tables tên_bảng; Bảng sip_buddies : Bảng extensions : Bảng voicemail : Bảng iax : - Thêm dữ liệu vào các bảng : INSERT INTO Sip_buddies (context,host,type,username,secret) VALUES ('test','dynamic',’friend’,'102','102') INSERT INTO Sip_buddies ( context,host,type,username,secret) VALUES ( 'test','dynamic',’friend’,'103','103') INSERT INTO extensions (context , exten , priority , app, appdata) VALUES ( ‘mycontext’,’102’,1,‘Dial’,’SIP/102’) INSERT INTO extensions (context , exten , priority , app) VALUES (‘mycontext’,’102’, 2, ‘Hangup’) INSERT INTO extensions (context , exten , priority , app, appdata) VALUES (‘mycontext’,’103’, 1, ‘Dial’,’SIP/103’) INSERT INTO extensions (context , exten , priority , app) VALUES (‘mycontext’,’103’, 2, ‘Hangup’) Kết quả bảng extensions : select * from extensions : +----+---------+-------+----------+--------+---------+ | id | context | exten | priority | app | appdata | +----+---------+-------+----------+--------+---------+ | 1 | default | 102 | 1 | Dial | SIP/102 | | 2 | default | 102 | 2 | Hangup | | | 3 | default | 103 | 1 | Dial | SIP/103 | | 4 | default | 103 | 2 | Hangup | | +----+---------+-------+----------+--------+---------+ - Cấu hình trong res_mysql.conf. ------------------------------------------- [general] dbhost = localhost dbname = asterisk_database dbuser = root dbpass = 123 dbport = 3306 dbsock = /var/lib/mysql/mysql.sock - Cấu hình trong extconfig.conf. -------------------------------------------- sipusers => mysql,asterisk_database,sip_buddies sippeers => mysql, asterisk_database,sip_buddies extensions => mysql, asterisk_database,extensions - Cấu hình trong sip.conf [general] rtcachefriends=yes Cấu hình extensions.conf. -------------------------------------------- [test] switch => Realtime/mycontext@extensions -Kiểm tra kết nối thành công: *CLI> realtime mysql status Connected to asterisk_database@localhost ... - Thực hiện : sử dụng username 102 và 103 để kết nối tới tổng đài

Các file đính kèm theo tài liệu này:

  • doche_thong_voip_tren_asterisk_4743.doc