Khai báo các kênh iax riêng cho softphone sử dụng giao thức IAX. Sau đây là các thông số dành khai báo riêng cho từng kênh IAX.
- Name: đây là phần khai báo máy điện thoại extention IAX, có thể là ký tự
nhưng thường là các con số quay vì trên các phím điện thoại thường là các con số mà thôi.
- Type: Kiểu kết nối thông tin user, peer hay friend
- Host : Địa chỉ IP hay tên miền mà client kết nối với kênh này thường dùng giá trị là “dynamic” cho tất cả client kết nối đến.
- Secret : mật khẩu để sử dụng kênh này. Máy điện thoại phía client phải khai báo trùng với thông số này thì mới sử dụng được.
- Context: Khai báo ngữ cảnh cho thuê bao. - Mailbox: Khai báo hộp thư thoại cho thuê bao. - Group: Khai báo nhóm cho thuê bao.
- Callgroup: Khai báo nhóm gọi cho thuê bao.
- Pickupgroup: Khai báo nhóm pick up cho thuê bao. - Barge_rooms: Khai báo phòng hội nghị cho thuê bao.
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 101 -
- Maxauthreq: Khai báo yêu cầu chứng thực cho thuê bao.
Cụ thể trong file /etc/asterisk/iax.conf cấu hình extensions 300 như sau:
[300] type=friend username=300 callerid="tin"<300> host=dynamic secret=300 maxauthreq=0 context=out group=1 Callgroup=1 pickupgroup=1 mailbox=300@default 5.6 Cấu hình Softphone
5.6.1 Cấu hình Softphone Xlite.
Softphone Xlite sử dụng giao thức báo hiệu SIP. Cấu hình Softphone được thực hiện theo các bước như sau:
- Bước 1. Chọn settings trên menu
Hình 5.10: Cấu hình điện thoại x-lite
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 102 -
Hình 5.11: Khai báo user điện thoại x-lite
5.6.2 Cấu hình Softphone Zoiper
Softphone Xlite sử dụng giao thức báo hiệu SIP. Cấu hình Softphone được thực hiện theo các bước như sau:
- Bước 1. Chọn settings trên menu
Hình 5.12: Cấu hình điện thoại zoiper
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 103 -
- Bước 2. Thực hiện khai báo cấu hình các thông số của thuê bao:
Hình 5.13: Khai báo user điện thoại zoiper
5.7 Xây dựng IP-PBX
Asterisk server trong mô hình này sẽ đóng vai trò chính là chuyển mạch giữa các thuê bao nội bộ và kết nối với các thuê bao nội bộ ra bên ngoài PSTN hoặc đến thuê bao VoIP khác. Trong mô hình này để các thuê bao trong mạng nội bộ có thể gọi đến các thuê bao VoIP hoặc các dịch vụ qua đường internet thì cần phải đăng ký một số từ nhà cung cấp dịch vụ VoIP ( có thể đăng ký dịch vụ của nhà cung cấp voice777).
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 104 -
5.7.1 Cuộc gọi nội bộ giữa hai thuê bao sử dụng cùng giao thức báo hiệu
Hình 5.14: Mô hình thực hiện cuộc gọi nội bộ cùng giao thức
Khi một SoftPhone hay một Analog Phone cần gọi một Softphone hay một Analog Phone sử dụng cùng giao thức báo hiệu, người sử dụng chỉ cần bấm số điện thoại của Softphone hay Analog phone cần gọi.
Ví dụ: Softphone SIP 200 gọi analogphone 100 cùng chịu sự quản lý của asterisk PBX thì việc xử lý cuộc gọi gồm các bước sau:
- Bước 1: Softphone SIP 200 quay số 100 và báo hiệu lên tổng đài asterisk
sử dụng giao thức SIP.
- Bước 2: Asterisk sẽ thông báo cho Analogphone 100 có cuộc gọi đến từ Softphone 200 sử dụng giao thức SIP.
- Bước 3: Analogphone 100 ở trạng thái rỗi, nó báo hiệu cho asterisk server
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 105 -
- Bước 4: Khi cả hai thuê bao đã sẵn sàng cho cuộc gọi, hai bên truyền thông với nhau thông qua giao thức RTP.
Hình 5.15: Các bản tin trong cuộc gọi nội bộ
Sử dụng phần mềm ethereal để bắt gói phân tích báo hiệu, ta được kết quả như hình 5.15
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 106 -
5.7.2 Cuộc gọi nội bộ giữa hai thuê bao sử dụng khác giao thức báo hiệu
Hình 5.16: Mô hình thực hiện cuộc gọi nội bộ khác giao thức
Khi một SoftPhone hay một Analog Phone cần gọi một Softphone hay một Analog Phone sử dụng khác giao thức báo hiệu, người sử dụng chỉ cần bấm số điện thoại của Softphone hay Analog phone cần gọi.
Ví dụ: Analogphone 100 gọi Softphone IAX 300 cùng chịu sự quản lý của asterisk PBX thì việc xử lý cuộc gọi gồm các bước sau:
- Bước 1: Analogphone 100 quay số 300 và báo hiệu lên tổng đài asterisk
sử dụng giao thức SIP.
- Bước 2: Asterisk sẽ thông báo cho Softphone IAX 300 có cuộc gọi đến từ
Analog phone sử dụng giao thức báo hiệu IAX.
- Bước 3: Softphone IAX 300 ở trạng thái rỗi, nó báo hiệu cho asterisk server biết nó có thể nhận được cuộc gọi sử dụng giao thức báo hiệu IAX.
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 107 -
- Bước 4: Khi cả hai thuê bao đã sẵn sàng cho cuộc gọi, hai bên truyền thông với nhau thông qua giao thức RTP.
5.7.3 Cuộc gọi ra ngoài PSTN
Hình 5.17: Mô hình cuộc gọi ra ngoài PSTN
Khi một SoftPhone hay một Analog Phone cần gọi một số khác ở ngoài mạng PSTN, người sử dụng cần bấm: 9 + Số điện thoại cần gọi
Ví dụ: Softphone SIP 200 cần gọi ra ngoài PSTN với số cần gọi là 8991768, thì việc xử lí cuộc gọi gồm các bước sau:
- Bước 1: Softphone SIP 200 quay số 98991768 và báo hiệu lên tổng đài asterisk sử dụng giao thức SIP.
- Bước 2: Asterisk sẽ thông báo cho cổng FXO có cuộc gọi ra ngoài PSTN
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 108 -
PSTN) hoặc sử dụng giao thức SIP (đối với việc sử dụng Grandstream gọi ra ngoài PSTN)
- Bước 3: Thuê bao PSTN khi ở trạng thái rỗi, FXO báo cho asterisk server
biết thuê bao PSTN có thể nhận được cuộc gọi sử dụng giao thức báo hiệu IAX (đối với việc sử dụng card X100P) hoặc giao thức SIP (đối với việc sử dụng Grandstream).
- Bước 4: Khi cả hai thuê bao đã sẵn sàng cho cuộc gọi, hai bên truyền thông với nhau thông qua FXO.
Hình 5.18: Các bản tin cuộc gọi ra ngoài PSTN
5.8 Xây dựng các dịch vụ
5.8.1 IVR (Interactive voice response)
Dịch vụ IVR được sử dụng trong hệ thống để tạo lời chào khi có số gọi đến và asterisk sẽ định hướng theo sự tương tác của thuê bao gọi đến. Cụ thể trong hệ thống này được xây dựng khi có thuê bao bên ngoài gọi đến sẽ bật lời chào có nội
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 109 -
dung như sau: “ Chào mừng bạn đến với công ty chúng tôi, bấm số 1 để gặp số 100, bấm số 2 để gặp số 200, bấm số 3 để gặp số 300, để tham gia hội nghị với chúng tôi, bấm số 9, để sử dụng dịch vụ DISA bấm số 000”. Ngoài ra hệ thống cũng được lập trình cho thuê bao bên ngoài bấm thẳng vào số máy nhánh nếu biết số của máy nhánh.
Hệ thống sẽ tự động trả lời lặp lại 3 lần nếu không có sự tương tác nào của thuê bao gọi đến, sau đó hệ thống sẽ hủy kết nối.
Hình 5.19: Mô hình minh họa thực hiện dịch vụ IVR
Chi tiết được cấu hình trong file extensions.conf với ngữ cảnh được gán cho nó là mainmenu: [mainmenu] exten=>s,1,Answer();có cuộc gọi đến thì trả lời exten=>s,n,set(COUNT=0); tạo bộđếm đếm số lần phát lời chào exten=>s,n(ct1),Background(loichao); phát lời chào exten=>s,n,set(COUNT=$[${COUNT}+1}]); tăng bộđếm
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 110 -
exten=>s,n,gotoif($[${COUNT} = 3]?ct:ct1); Đã phát lời chào đủ 3 lần? exten=>s,n(ct),playback(vm-tambiet); phát lời tạm biệt exten=>s,n,hangup(); hủy kết nối exten=>1xx,SET(TEMP=${EXTEN}) exten=>1xx,goto(local_analog,${TEMP},1) exten=>2xx,SET(TEMP=${EXTEN}) exten=>2xx,goto(local_SIP,${TEMP},1) exten=>3xx,SET(TEMP=${EXTEN}) exten=>3xx,goto(local_IAX,${TEMP},1)
exten=>1,1,goto(local_analog,100,1); thuê bao gọi bấm 1 exten=>2,1,goto(local_SIP,200,1); thuê bao gọi bấm 2 exten=>3,1,goto(local_IAX,300,1); thuê bao gọi bấm 3
exten=>000,1,goto(custom-disa,s,1); thuê bao gọi sử dụng DISA exten=>9,1,goto(Meetme,555,1); Thuê bao gọi tham gia hội nghị
exten => i,1,Goto(mainmenu,s,1);phím bấm không hợp lệ
5.8.2 Voicemail (hộp thư thoại)
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. - Mỗi hộp thư đều được quản lý bằng password và thư mục riêng.
- Khi thông điệp được nhận hệ thống VoiceMail có thể gửi qua Mail để thông báo, tất nhiên có kèm theo file thông điệp.
- 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.
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 111 -
Để khai báo hôp thư thoại cho thuê bao, ta cấu hình trong file voicemail.conf
ở đường dẫn /etc/asterisk/voicemail.conf như sau:
300=>300,thanhphuoc,empty_dream2000@yahoo.com 100=>100,thanhphu,tieuphuphu2005@yahoo.com 200=>200,thanhphong,best_lionh@yahoo.com
Trong đó
- 300: tên mailbox
- 300: password của mailbox - thanhphuoc: tên người sử dụng
- empty_dream2000@yahoo.com: địa chỉ mail của người sử dụng
Ngoài ra còn cấu hình trong file sip.conf và iax.conf như đã khai báo ở trên. Lúc này các cuộc gọi sẽ được lưu vào mailbox của thuê bao.
Thuê bao muốn nghe thư thoại và thực hiện các tương tác sẽ bấm số 123 để xem mail hoặc thực hiện đăng nhập được cấu hình trong file extensions.conf:
[mailbox]
exten=>123,1,VoiceMailMain(s${CALLERID(num)}) exten=>123,2,Hangup
Khi nghe lời chào, thuê bao thực hiện các tương tác: Ấn số 1: để nghe.
Ân số 2: nghe mail trước đó Ân số 3: ngừng Ấn số 4: nâng cao Ấn số 5: lặp lại Ấn số 6: tiếp theo Ấn số 7: xóa Ấn số 8: chuyển tiếp Ấn số 9: lưu
Để lưu messages ta ấn số 9 với : Số 0 :new
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 112 -
Số 1: old Số 2: work Số 3: family Số 4: friend
5.8.3 Call Forwarding (chuyển cuộc gọi)
Chuyển cuộc gọi là tính năng hay được sử dụng trong bất kỳ hệ thống điện thoại nào cho phép thuê bao tự cài đặt khi cần thiết.
Có nhiều trường hợp để chuyển cuộc gọi bao gồm: - Chuyển cuộc gọi tức thời
- Chuyển cuộc gọi khi máy đang bận - Chuyển cuộc gọi khi không trả lời
5.8.3.1 Chuyển cuộc gọi tức thời
Chuyển cuộc gọi tức thời là dịch vụ cho phép thuê bao chuyển cuộc gọi đến
một số máy nào đó đã được cài đặt trước khi có một số gọi vào thuê bao đó. Trong hệ thống để thực hiện dịch vụ này thuê bao cần thực hiện như sau:
- Để kích hoạt dịch vụ chuyển cuộc gọi tức thời: bấm số *21#xxxxxx trong đó xxxxxxx là số điện thoại mà thuê bao muốn chuyển đến, sau đó sẽ nghe thông báo đã kích hoạt dịch vụ này và số mà thuê bao muốn chuyển đến.
- Để hủy bỏ dịch vụ chuyển cuộc gọi tức thời: bấm số #21#, sau đó sẽ nghe thông báo đã hủy dịch vụ này.
Việc cấu hình trong file /etc/asterisk/extensions đuợc thực hiện như sau:
[F_INM]
;Kích hoạt dịch vụ
exten => _#21*X.,1,set(DB(CFIM/${CALLERID(num)})=${EXTEN:4}) exten =>_#21*X.,n,playback(inm-o);phát thông báo
exten => _#21*X.,n,Saydigits(${EXTEN:4});phát số muốn chuyển exten =>_#21*X.,n,playback(auth-thankyou);phát lời cảm ơn exten => _#21*X.,n,Hangup;Hủy kết nối
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 113 -
exten => #21#,1,set(DB(CFIM/${CALLERID(num)})=0);hủy bỏ dịch vụ
exten => #21#,n,playback(inm-no);phát thông báo
exten => #21#,n,playback(auth-thankyou);phát lời cảm ơn exten => #21#,n,Hangup;Hủy kết nối
Hình 5.20: Các bản tin khi thực hiện chuyển cuộc gọi tức thời
5.8.3.2 Chuyển cuộc gọi khi bận
Chuyển cuộc gọi khi bận là dịch vụ cho phép thuê bao chuyển cuộc gọi đến
một số máy nào đó đã được cài đặt trước khi có một số gọi vào thuê bao đó nhưng thuê bao này đang bận. Trong hệ thống để thực hiện dịch vụ này thuê bao cần thực hiện như sau:
- Để kích hoạt dịch vụ chuyển cuộc gọi khi bận: bấm số *61#xxxxxx trong đó xxxxxxx là số điện thoại mà thuê bao muốn chuyển đến, sau đó sẽ nghe thông báo đã kích hoạt dịch vụ này và số mà thuê bao muốn chuyển đến.
- Để hủy bỏ dịch vụ chuyển cuộc gọi khi bận: bấm số #61#, sau đó sẽ nghe thông báo đã hủy dịch vụ này.
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 114 -
Việc cấu hình trong file /etc/asterisk/extensions đuợc thực hiện như sau:
[F_BSY]
;Kích hoạt dịch vụ
exten => _#61*X.,1,set(DB(CFIM/${CALLERID(num)})=${EXTEN:4}) exten =>_#61*X.,n,playback(inm-o);phát thông báo
exten => _#61*X.,n,Saydigits(${EXTEN:4});phát số muốn chuyển exten =>_#61*X.,n,playback(auth-thankyou);phát lời cảm ơn exten => _#61*X.,n,Hangup;Hủy kết nối
exten => #61#,1,set(DB(CFIM/${CALLERID(num)})=0);hủy bỏ dịch vụ
exten => #61#,n,playback(inm-no);phát thông báo
exten => #61#,n,playback(auth-thankyou);phát lời cảm ơn exten => #61#,n,Hangup;Hủy kết nối
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 115 -
5.8.3.3 Chuyển cuộc gọi khi không trả lời
Chuyển cuộc gọi khi không trả lời là dịch vụ cho phép thuê bao chuyển cuộc
gọi đến một số máy nào đó đã được cài đặt trước khi có một số gọi vào thuê bao đó nhưng thuê bao này đi vắng hoặc không trả lời. Trong hệ thống để thực hiện dịch vụ này thuê bao cần thực hiện như sau:
- Để kích hoạt dịch vụ chuyển cuộc gọi khi không trả lời: bấm số *51#xxxxxx trong đó xxxxxxx là số điện thoại mà thuê bao muốn chuyển đến, sau đó sẽ nghe thông báo đã kích hoạt dịch vụ này và số mà thuê bao muốn chuyển đến.
- Để hủy bỏ dịch vụ chuyển cuộc gọi khi không trả lời: bấm số #51#, sau đó sẽ nghe thông báo đã hủy dịch vụ này.
Việc cấu hình trong file /etc/asterisk/extensions đuợc thực hiện như sau: [F_NSWR]
;Kích hoạt dịch vụ
exten => _#51*X.,1,set(DB(CFIM/${CALLERID(num)})=${EXTEN:4}) exten =>_#51*X.,n,playback(inm-o);phát thông báo
exten => _#51*X.,n,Saydigits(${EXTEN:4});phát số muốn chuyển exten =>_#51*X.,n,playback(auth-thankyou);phát lời cảm ơn exten => _#51*X.,n,Hangup;Hủy kết nối
exten => #51#,1,set(DB(CFIM/${CALLERID(num)})=0);hủy bỏ dịch vụ
exten => #51#,n,playback(inm-no);phát thông báo
exten => #51#,n,playback(auth-thankyou);phát lời cảm ơn exten => #51#,n,Hangup;Hủy kết nối
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 116 -
Hình 5.22: Các bản tin thực hiện chuyển cuộc gọi khi không trả lời
5.8.4 Call Transfer
Dịch vụ call transfer là dịch vụ chuyển cuộc gọi đến một số nào đó khi bên gọi yêu cầu bên được gọi chuyển. Ví dụ như có một số bên ngoài gọi đến số 200 và cả hai bên đã thông thoại, thuê bao bên ngoài muốn chuyển cuộc gọi đến số 100, thì bên được gọi là số 200 sẽ bấm phím #, nghe thông báo transfer và bấm số 100 để chuyển cuộc gọi đến số 100.
Việc cấu hình trong file /etc/asterisk/externsions.conf thực hiện như sau: Thêm tham số T vào câu lệnh Dial, thiết lập group cho các thuê bao, hệ thống tự động sẽ kích hoạt dịch vụ Call Transfer.Ví dụ:
SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG NGUYỄN THANH PHƯỚC - 117 -
Hình 5.23: Các bản tin khi thực hiện dịch vụ transfer
5.8.5 Call Parking
Call Parking là dịch vụ thực hiện chuyển cuộc gọi có quản lý. Nguyên lý hoạt động của nó như sau:
Ví dụ : Số bên ngoài 8991768 gọi cho số 200 và nhờ chuyển máy để được