Các công cụ hỗ trợ vận hành và cấu hình Asterisk

Một phần của tài liệu NGHIÊN CỨU HOẠT ĐỘNG VÀ TRIỂN KHAI MẠNG IP PBX ASTERISK (Trang 45)

2.3.2.a Phần mềm Putty

Phần mềm Putty hỗ trợ ta trong việc cấu hình trực tiếp lên hệ điều hành Linux từ xa dùng SSH. Đây là một công cụ rất thông dụng để cấu hình Linux ở dạng Console lệnh.

Ta có thể tải phần mềm từ: http://the.earth.li/~sgtatham/putty/0.60/x86/putty.exe Sau đây là một số hình ảnh của chương trình Putty

Hình 42: Giao diện phần mềm Putty - Đăng nhập

2.3.2.b Phần mềm WINSCP

Phần mềm WINSCP giúp ta thao tác trên các tập tin và phân vùng ổ cứng trong môi trường Linux giống như chương trình Windows Commander trong Windows, hay NC dùng trong DOS.

WINSCP giúp ta tiết kiệm rất nhiều thời gian trong việc cập nhật và quản lý các tập tin trong Linux, bằng các thao tác rất đơn giản.

Ta có thể tải phần mềm từ: http://winscp.net/eng/index.php Sau đây là một số hình ảnh của chương trình WINSCP

Hình 44: Giao diện phần mềm WINSCP - Đăng nhập

CHƯƠNG 3: TÌM HIỂU CÁCH CẤU HÌNH ASTERISK 3.1 Tìm hiểu các tập tin cấu hình trong Asterisk

Ta có thể cấu hình Asterisk trong console mode, hoặc có một cách tiện lợi hơn là biên tập trực tiếp các tập tin cấu hình trong /etc/asterisk. Mỗi ứng dụng riêng của Asterisk như voicemail, zaptel, music-on-hold, meetme, conference, iax… đều có tập tin cấu hình riêng của mình, tuy nhiên có 2 tập tin cấu hình quan trọng nhất là sip.conf

extension.conf:

- sip.conf : tập tin cấu hình về các thông tin của các số nội bộ client như username, password, IP, type, security, codec là thành phần căn bản nhất lưu giữ thông tin trong Asterisk.

- extension.conf: tập tin cấu hình về các luật định tuyến cuộc gọi, luật quay số (sơ đồ quay số), các extension trong ngoài và những tính năng đặc biệt khác. extensions.conf là tập tin quan trọng nhất trong bất kỳ cấu hình Asterisk nào.

Các tập tin cấu hình khác:

- voicemail.conf : tập tin cấu hình cho hệ thống hộp thư thoại (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 tập tin cấu hình này.

- zaptel.conf : tập tin này nằm ngoài /etc, là tập tin chứa thông số index, driver dành cho Linux khi kích hoạt các thiết bị điện thoại 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à tập tin kết nối các thiết bị điện thoại đã được khai báo vào hệ thống chính của Asterisk.

- iax(2).conf : các thông số về IAX (inter-asterisk protocol) dùng khi kết nối 2 Asterisk box với nhau.

- meetme.conf : một chức năng tạo room conference căn bản.

3.2 Ngữ pháp của Asterisk

Asterisk được điều khiển bằng các tập tin cấu hình dạng văn bản (text) được lưu trong thư mục /etc/asterisk. Kiểu định dạng tập tin này tương tự như tập tin “.ini” trong Windows. Dấy chẩm phẩy “;” được sử dụng để ghi chú, dấu “=” và “=>” tương đương nhau và dấu khoảng trống được bỏ qua.

[Session]

Key = value ; Khởi tạo biến [Session 2]

Key => value ; Khai báo đối tượng

Asterisk biên dịch “=” và “=>” cùng một cách thức. Điều khác biệt là cú pháp được sử dụng ở đây khác nhau cho đối tượng và biến. Cú pháp là giống nhau giữa tất cả các tập tin và có 3 loại ngữ pháp được chỉ ra bên dưới:

Loại ngữ pháp

Đối tượng được tạo ra Tập tin cấu hình Ví dụ Nhóm đơn Tất cả trên cùng một dòng extensions.conf exten=>4000,1,Dial(SIP/4000) Tuỳ chọn kế thừa Tuỳ chọn được tạo trước, đối tượng kế thừa các tuỳ chọn zapata.conf [channels] context=default signalling=fxs_ks group=1 channel => 1 Dạng thực thể phức hợp Mỗi thực thể nhận một ngữ cảnh sip.conf iax.conf [cisco] type=friend secret=mysecret host=10.1.30.50 context=trusted [xlite] type=friend secret=xlite host=dynamic

Bảng 2: Các kiểu ngữ pháp trong Asterisk

3.2.1 Nhóm đơn

Kiểu định dạng nhóm đơn được sử dụng trong các tập tin extensions.conf, (adsbygoogle = window.adsbygoogle || []).push({});

meetme.confvoicemail.conf là ngữ pháp cơ bản nhất. Mỗi đối tượng được khai báo với các tùy chọn trong cùng một hàng.

Ví dụ:

[Session]

Object 1 => op1,op2,op3 Object 2=> op1b,op2b,op3b

Trong ví dụ này, Object 1 được tạo ra với các tùy chọn op1, op2, op3 trong khi object 2 được tạo ra với các tùy chọn op1b, op2b, op3b.

3.2.2 Các tùy chọn đối tượng kiểu ngữ pháp thừa kế

Kiểu định dạng này được sử dụng bởi zapata.confagents.conf nơi có nhiều tùy chọn sẵn sàng, hầu hết các giao tiếp, các đối tượng chia sẻ và khai báo các kênh. Các tùy chọn cho đối tượng được khai báo phía trên đối tượng và có thể được thay đổi trong đối tượng khác. Mặc dù khái niệm này hơi khó hiểu nhưng nó rất dễ sử dụng.

Ví dụ:

[Session] op1 = bas

op2 = adv object=>1 op1 = int object => 2

Hai dòng cấu hình đầu tiên giá trị của tùy chọn op1 và op2 là “bas” và “adv”. Khi đối tượng 1 được tạo ra nó được tạo ra sử dụng option 1 như là “bas” và option 2 như là “adv”. Sau khi định nghĩ đối tượng 1 chúng ta thay đổi option 1 sang “int”. Sau đó chúng ta tạo ra đối tượng 2 với option 1 là “int” và option 2 là “adv”.

3.2.3 Dạng thực thể phức hợp

Kiểu định dạng này được sử dụng trong iax.conf, sip.conf và trong những tập tin cấu hình nơi mà có nhiều thực thể với nhiều tùy chọn. Cơ bản, kiểu định dạng này không chia sẽ một luợng lớn các cấu hình chung. Mỗi một thực thể nhận một ngữ cảnh. Đôi khi ngữ cảnh được dành riêng giống như [general] cho cấu hình toàn cục. Các tùy chọn được khai báo trong nội dung khai báo.

Ví dụ: [entity1] op1=value1 op2=value2 [entity2] op1=value3 op2=value4

Thực thể [entity1] có các giá trị “value1” và value2” cho các tùy chọn op1 và op2. Thực thể [entity2] có các giá trị “value3” và value4” cho các tùy chọn op1 và op2.

3.3 Tìm hiểu cấu hình một giao tiếp PSTN

Để kết nối đến một PSTN ta sẽ phải cần có một card giao tiếp FXO và một đường dây điện thoại. Ta có thể sử dụng một số PBX có sẵn. Ta có thể làm được bằng một card giao tiếp điện thoại với với một giao tiếp FXO từ nhiều nhà cung cấp khác nhau. Trong ví dụ này chúng ta tìm hiểu cách cài đặt một mạch Zaptel:

Ghi chú: có nhiều card FXO khác. Card X100P có thể tìm thấy trên thị trường với giá khá rẻ. Những mạch này dựa trên nền fax/modem 56K của Motorola và Intel chipset. Những chipset này là:

- Motorola 68202-51 - Intel 537PU

- Intel 537 PG

- Intel Ambient MD3200

Không có đảm bảo để mạch này sẽ làm việc được. Việc sử dụng là tùy, một vài vấn đề về tiếng dội và âm lượng thấp. Nếu ta muốn chất luợng tốt, đảm bảo độ tin cậy thì nên dùng board của Digium.

3.3.1 Cài đặt X100P

Trước khi cài đặt một card X100P vào trong máy tính, ta phải disable tất cả các phần cứng không cần dùng đến hay không sử dụng từ mạch chính. Điều này sẽ giúp cho chúng ta tránh được các vấn đề về chia sẽ các ngắt (interrupt). Để cài đặt đúng X100P, ta sẽ phải gắn card vào trong một khe PCI và điểu chỉnh 2 tập tin cấu hình:

zaptel.conf : tập tin này nằm ngoài /etc, là tập tin chứa thông số index, driver dành cho Linux khi kích hoạt các thiết bị điện thoại 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à tập tin kết nối các thiết bị điện thoại đã được khai báo vào hệ thống chính của Asterisk.

- zaptel.conf fxsks=1 loadzone = br defaultzone=br channels=1 - zapata.conf [channels] context=default signalling=fxs_ks group=1 channel => 1

3.3.2 Cài và cấu hình driver card X100P

Sau khi hoàn tất việc chỉnh sửa các tập tin trên ta tiến hành load các bộ điều khiển zaptel và cài đặt bằng các lệnh:

# modprobe zaptel # modprobe wcfxo # ztcfg -v (adsbygoogle = window.adsbygoogle || []).push({});

# asterisk -g

3.4 Tìm hiểu cấu hình điện thoại IP SIP

Chúng ta hãy cấu hình các điện thoại SIP. Ý tưởng là cấu hình một tổng đài PBX. SIP được cấu hình trong thư mục /etc/asterisk/sip.conf và có tất cả các thông số liên hệ tới điện thoại SIP và nhà cung cấp dịch vụ VoIP. Các SIP client phải được cấu hình trước khi ta nhận hay thực hiện cuộc gọi.

3.4.1 Phần chung [general]

SIP tập tin được đọc từ trên xuống dưới. Phần đầu chứa các thông số toàn cục [general]. Các tùy chọn chính gồm:

allow/disallow : định nghĩa codecs nào có thể được sử dụng.

bindaddr : Địa chỉ mà Asterisk SIP dùng để lắng nghe (listener). Nếu ta thiết lập nó thành 0.0.0.0 (mặc định) nó sẽ lắng nghe ở tất cả các giao tiếp.

context : Thiết lập ngữ cảnh mặc định cho tất cả các client ngoại trừ các client đã được thay đổi.

bindport : port SIP UDP dùng để lắng nghe.

maxexpirey : Thời gian tối đa cho việc đăng ký (tính bằng giây). • defaultexpirey : Thời gian mặc định cho việc đăng ký (tính bằng giây). • register : đăng ký Asterisk tới một host khác..

Ví dụ: [general] bindport = 5060 bindaddr = 10.1.30.45 context = default disallow = all allow = ulaw allow = alaw maxexpirey = 120 defaultexpirey = 80 3.4.2 Phần Client

Sau khi hoàn thành các phần chung [general], tiếp theo sẽ thiết lập các SIP client. • [name] : Khi một thiết bị SIP kết nối đến Asterisk, nó sử dụng phần username của SIP URI để tìm ra peer/user.

type : Cấu hình lớp kết nối. Các tuỳ chọn là peer, user và friend. • peer : Asterisk gởi các cuộc gọi đến peer.

user : Asterisk nhận các cuộc gọi từ một user. • friend : Cả hai cùng thời điểm.

host : địa chỉ IP hay tên của host. Tuỳ chọn thông thường là “dynamic”, được sử dụng khi host đăng ký đến Asterisk.

secret : Mật khẩu để xác thực peer và user. Ví dụ: [cisco] type=friend secret=mysecret host=10.1.30.50 context=trusted [xlite] type=friend secret=xlite host=dynamic defaultip=10.1.30.17

3.5 Tim hiều sơ đồ quay số

Sơ đồ quay số là trái tim của Asterisk, nó định nghĩa cách mà Asterisk điều khiển, định tuyến mỗi cuộc gọi và bất kỳ cuộc gọi đến PBX. Nó chứa các số, danh sách lệnh cho Asterisk tuân theo. Các lệnh được gắn vào các số nhận được từ kênh hay ứng dụng. Để cấu hình Asterisk thành công, việc hiểu sơ đồ quay số là rất quan trọng.

Hầu hết sơ đồ quay số đều được chứa trong tập tin extensions.conf tại thư mục

/etc/asterisk. Tập tin này sử dụng ngữ pháp nhóm đơn và có 4 thành phần chính sau: • Số nội bộ (Extensions).

• Số ưu tiên (Priorities). • Ứng dụng (Applications). • Ngữ cảnh (Contexts).

3.5.1 Số nội bộ (Extensions)

Sơ đồ quay số là một tập hợp các số được định nghĩa trước. Một số là một chuỗi sẽ trigger một sự kiện khi một cuộc gọi được thực hiện. Các số có thể hoặc bằng chữ hoặc bằng mẫu số (pattern).

3.5.1.a Một số mẫu số (pattern)

• _ : chỉ việc bắt đầu 1 pattern.

• X : đại diện cho bất kỳ số nào từ 0 đến 9. • N : đại diện cho bất kỳ số nào từ 2 đến 9. • Z : đại diện cho bất kỳ số nào trừ số 0.

• [dãy bất kỳ] : khớp với chỉ một trong các ký tự nằm trong dấu ngoặc vuông “[]”. Ví dụ: [02-68*#] sẽ khớp với các ký tự 0, từ 2 đến 6, 8, * hoặc #.

• . : là một wildcard, khớp với bất kỳ ký tự nào nằm phía sau dấu chấm “.”.

• | : để chỉ việc sử dụng phím số phía trước | để gọi ra ngoài (thường là số 0 hay số 9). Số này được loại bỏ không đưa ra ngoài.

Một số ví dụ của mẫu số (pattern): (adsbygoogle = window.adsbygoogle || []).push({});

9|NXXXXXXXX : bấm số 9 để ra ngoài, dãy số gọi ra ngoài gồm 9 phím số bắt đầu từ số 2 đến 9 và 8 số còn lại là bất kỳ. Vậy tổng cộng người sử dụng gọi 10 số nhưng số 9 đầu bị loại bỏ và chỉ gởi 9 số sau ra ngoài trung kế.

_4XXX : chỉ những số gọi nội bộ có 4 số bắt đầu từ số 4.

_90[2-8]. : dùng cho trường hợp số gọi ra ngoài (bấm số 9 ra ngoài) số sau là dãy số đường dài. Dùng trong các ngữ cảnh cấp quyền gọi đường dài.

_909XXXXXXXX : dùng cho trường hợp số gọi ra ngoài (bấm số 9 ra ngoài) số sau là dãy số di động. Dùng trong các ngữ cảnh cấp quyền gọi di động.

_91900. : dùng cho trường hợp số gọi ra ngoài (bấm số 9 ra ngoài) số sau là dãy số dịch vụ 1900. Dùng trong các ngữ cảnh cấp quyền gọi dịch vụ 1900.

Như ta thấy bên trên, việc hiểu và sử dụng các mẫu số (pattern) này mang lại tính linh hoạt và sơ đồ quay số rất mạnh cho cấu hình định tuyến Asterisk.

3.5.1.b Các ví dụ về số nội bộ (extensions)

+ Ví dụ 1:

exten=>8580,1,dial(SIP/8580,20) exten=>8580,2,hangup()

Lệnh “exten” mô tả bước tiếp theo của cuộc gọi đến số 8580 là một tập hợp của các số nhận được (số được gọi). Số “1” và “2” là độ ưu tiên định nghĩa thứ tự xử lý. Quay số “8580” sẽ gọi SIP IP Phone đã được đăng ký như “8580”. Nếu cuộc gọi không có nguời trả lời sau 20 giây nó sẽ giải toả cuộc gọi.

+ Cú pháp Extension

exten=> number (name), {priority|label{+|-}offset}[(alias)],application

Lệnh extension “exten=” theo sau bởi một số nội bộ hoặc tên, một dấu phẩy, một số ưu tiên, một dấu phẩy nữa và cuối cùng là ứng dụng. số nội bộ gắn với địa chỉ của cuộc gọi (số điện thoại). Số ưu tiên được sử dụng để chỉ thứ tự các bước thực thi tương ứng với số ưu tiên. Ứng dụng là hành động (quay số, gọi lại, gác máy …). Mỗi một hành động là một ứng dụng khác nhau.

+ Ví dụ 2:

exten=>_90[2-8].,1,dial(ZAP/g1/${EXTEN:1},20,tT) exten=>_90[2-8].,n,hangup()

Trên là một ví dụ điển hình cho việc gọi đường dài của một số nội bộ:

- _90[2-8]. : chỉ ra bắt đầu một pattern, gọi ra ngoài dùng số 9 đầu và gọi đi liên tỉnh (bắt dầu số 0 và sau là số 2 đến số 8 để gọi mã liên tỉnh). Dấu chấm “.” chỉ bất kỳ dãy số nào phía sau đều chấp nhận.

- ZAP/g1 : chỉ đường ra là một trong các đường trung kế rỗi gắn vào card FXO. Nếu ZAP/1 tức là đường số 1, Zap/2 tức là đường số 2 và ZAP/g1 là bất kỳ đường nào rỗi trong dãy trung kế.

- ${EXTEN:1) : đây là biến lấy số nhập vào là phần sau của dãy số đã nhập, trừ đi 1 số đầu, tức số 9 sẽ bị bỏ qua.

3.5.2 Số ưu tiên (Priorities)

Số ưu tiên đánh số các bước thực hiện trong mỗi số được quay. Mỗi số ưu tiên gọi một ứng dụng xác định. Thông thường số này bắt đầu từ số “1” và tăng từng bước 1 bậc trong phần định nghĩa số nội bộ. Hiện tại các phiên bản Asterisk mới hỗ trợ việc sử dụng thuật ngữ “n” đại diện cho số ưu tiên tiếp theo thay vì phải gán số tiếp theo.

3.5.3 Ứng dụng (Applications)

Các ứng dụng đóng một vai trò quan trọng trong Asterisk. Chúng điểu khiển các kênh thoại, âm hiệu, chấp nhận các con số được gọi từ PBX và giải toả cuộc gọi. Các ứng dụng có thể được gọi với các tuỳ chọn để chỉ cách hành xử. Ta có thể sử dụng lệnh “show applications” trong giao diện lệnh của Asterisk để chỉ ra các ứng dụng có sẵn.

3.5.4 Ngữ cảnh (Contexts)

Ngữ cảnh đóng một vai trò quan trọng trong việc cấu hình sơ đồ quay số của Asterisk và bảo mật. Ngữ cảnh định nghĩa một vùng (scope) cho phép phân chia sơ đồ quay số thành nhiều phần khác nhau. Việc hiểu ngữ cảnh được gắn kết với các kênh là rất quan trọng. Khi tổng đài Asterisk nhận một cuộc gọi, cuộc gọi được xử lý trong phần ngữ cảnh gọi đến (incoming). Ngữ cảnh (context) gọi đến luôn luôn được định nghĩa bởi tập tin cấu hình kênh (iax.conf, sip.conf, zap.conf…).

Giả sử rằng chúng ta có 2 lớp người sử dụng “managers” và “guests”. Giả sử rằng chúng ta muốn có 2 thông điệp cho “guests” và “managers” khi họ quay số “9000”. Ta có thể làm được việc này bằng các định nghĩa ngữ cảnh gọi đến trong tập tin cấu hình kênh (sip.conf, iax.conf, zap.conf).

Trong ví dụ bên dưới, khi nhanvienA quay số 9000, nhanvienA nhận được thông điệp “youareaguest”. Khi nhanvienB quay cùng số này nhanvienB nhận được thông điệp khác “youaremanager”. sip.conf [nhanvienB] context=managers host=dynamic [nhanvienA] context=guests host=dynamic extensions.conf [nhanvienB] exten=>9000,1,Playback(youareamanager) [nhanvienA] exten=>9000,1,Playback(youareaguest)

Khi hiểu khái niệm này ta có thể tạo ra nhiều chức năng khác nhau trong Asterisk. Các ngữ cảnh khác nhau có thể được sử dụng để phục vụ cho nhiều công ty khác nhau

Một phần của tài liệu NGHIÊN CỨU HOẠT ĐỘNG VÀ TRIỂN KHAI MẠNG IP PBX ASTERISK (Trang 45)