5.8.3 Chuyển cuộc gọi khi trả lời
PHẦN II – XÂY DỰNG TỔNG ĐÀI DÙNG ASTERISK Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ 5.1 Video Call
Với ứng dụng này sẽ cho phép thuê bao có thể sử dụng chức năng video. Nếu phía client có hỗ trợ video sẽ được nhận tín hiệu video từ client khác qua hệ thống Asterisk.
Chức năng Video được hỗ trợ qua kênh thông tin SIP nên được khai báo sử dụng qua tập tin cấu hình sip.conf. Thêm vào section [general] trong file cấu hình các dòng sau:
videosupport=yes ; Cho phép Asterisk hỗ trợ chức năng video allow=h263 ; H.263 video codec
allow=h263p ; H.263p enhanced video codec dtmfmode=rfc2833
canreinvite=no
Trong softphone Linphone chọn Enable video. Cuộc gọi bây giờ đã hỗ trợ video call.
Hình 25 Video Call
5.2 Voicemail
Một trong những tính năng phổ biến nhất trong các hệ thống tổng đài hiện đại là tính năng hộp thư thoại voicemail. Tính năng này giúp cho người sử dụng có thể lưu lại được nội dung các cuộc gọi để nghe lại sau trong khi có việc không thể nghe máy. Asterisk cung cấp một hệ thống voicemail rất linh hoạt cho người sử dụng, dưới đây là một số tính năng của hộp thư thoại:
Mỗi hộp thư được quản lý trong các thư mục riêng và được bảo vệ bởi password do người sử dụng chọn.
Có các lời chào khác nhau cho mỗi trạng thái busy hoặc unavailable. Có lời chào mặc định và có khả năng tùy biến.
Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ
Khi thông điệp được nhận, hệ thống VoiceMail có thể gửi qua Mail để thông báo cho người sử dụng, có thể đính kèm theo file thông điệp.
Có thể chuyển tiếp voicemail hoặc phát quảng bá.
Để thiết lập dịch vụ voicemail ta cần cấu hình trong file /etc/asterisk/voicemail.conf như sau: [general] format=wav49|wav servermail=quockhanh2991@yahoo.com attach=yes skipms=3000 maxsilence=10 silencethreshold=128 maxlogins=3 sendvoicemail=yes [default] 101 => 1234,quockhanh,quockhanh.dn@gmail.com 102 => 1234,vantruong,nguyenvantruong.bk@gmail.com 103 => 1234,hoanggiang,hoanggiang.d19bk@gmail.com
Trong file /etc/asterisk/extensions.conf ta xây dựng macro và subroutine cho voicemail như sau: [macro-voicemail]
exten => s,1,Dial(${ARG1},10)
same => n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail) same => n(unavail),VoiceMaill(${MACRO_EXTEN}@default,u) same => n,Hangup() same => n(busy),VoiceMaill(${MACRO_EXTEN}@default,b) same => n,Hangup() [subVoicemail] exten => s,1,Dial(${ARG1},10)
same => n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail) same => n(unavail),VoiceMaill(${ARG2}@default,u)
same => n,Hangup()
same => n(busy),VoiceMaill(${ARG2}@default,b) same => n,Hangup()
PHẦN II – XÂY DỰNG TỔNG ĐÀI DÙNG ASTERISK Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ
exten => 101,1,Macro(voicemail,${USERA})
exten => 102,1,GoSub(subVoicemail,start,1(${USERA},${EXTEN}))
Sau khi cấu hình xong, cuộc gọi đến các thuê bao 101 và 102 nếu máy bận hoặc không có người nhấc máy sau 10s, tính năng hộp thư thoại voicemail sẽ được khởi động để lưu lại nội dung cuộc gọi và hộp thư tương ứng.
Thuê bao muốn nghe lại thư thoại và thực hiện các tương tác bấm số 123 để thực hiện đăng nhập. Thao tác này được cấu hình trong file /etc/asterisk/extensions.conf như sau:
exten => 123,1,VoiceMailMain()
5.3 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. Yêu thuê bao muốn chuyển cuộc gọi đến phải cùng callgroup với thuê bao thực hiện chuyển cuộc gọi.
Ví dụ: Thuê bao 101 có callgroup là 1, thuê bao 102 và 103 có cùng callgroup là 2. Thuê bao 101
gọi cho thuê bao 103 và cả 2 đã thông thoại. Thuê bao 101 muốn chuyển cuộc gọi đến thuê bao 102 thì thuê bao được gọi là 103 sẽ bấm phím #, nghe thông báo transfer và bấm số 102 để chuyển cuộc gọi đến thuê bao 102.
Việc thiết lập dịch vụ được thực hiện trong file /etc/asterisk/extensions.conf bằng cách thêm option t và T để kích hoạt dịch vụ Call Transfer.
exten => 103,1,Dial(${USERC},10,tT)
5.4 Call Pickup
Call pickup là dịch vụ cho phép chúng ta nhận cuộc gọi từ xa trong cùng một nhóm hay nhận cuộc gọi từ một máy điện thoại đang rung chuông bất kỳ.
Bất kỳ số điện thoại nào trong cùng một nhóm với các thông số callgroup và pickupgroup giống nhau đều có thể nhận cuộc gọi khác trong cùng nhóm đó. Các thông số này được cấu hình trong file /etc/asterisk/sip.conf khi khai báo tạo tài khoản user đã được cấu hình ở trên.
Ví dụ: khi thuê bao 101 khác nhóm gọi tới thuê bao 102. Thuê bao 103 có cùng callgroup và
pickupgroup với thuê bao 102 có thể bấm *8 để nghe cuộc gọi.
Ngoài ra thuê bao không cùng nhóm cũng có thể sử dụng được call pickup nếu ta cấu hình trong file /etc/asterisk/extensions.còn như sau:
exten => _**xxx,1,Pickup(${EXTEN:2}@LocalSets)
Khi đó thuê bao bất kì có thể nghe cuộc gọi đến thuê bao khác bằng cách bấm ** và số thuê bao muốn nghe.
5.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:
Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ
Ví dụ : Số bên ngoài 101 gọi cho số 102 và nhờ chuyển máy để được gặp số 103. Khi đó số 102
sẽ thực hiện các bước như sau:
Bước 1: Quay số #700 một con số parking sẽ được thông báo cho số 102 trong trường
hợp này là 701.
Bước 2: Số 102 gác máy (trong lúc này số bên ngoài sẽ nghe nhạc) và gọi đến cho số 103
thông báo cho số đó biết là có một cuộc gọi đang đợi số 103 trên số parking 701.
Tại lúc này có hai trường hợp xảy ra.
a. Số 103 sẽ gọi số 701 để gặp số gọi vào là 101.
b.Số 103 không muốn gặp số bên ngoài 101 và lúc này số 102 sẽ quay số 701 thông báo số 103 không thể gặp số 101.
Cấu hình chi tiết trong file /etc/asterisk/features.conf như sau: *File features.conf:
[general]
parkext => 700 ; con số mà người nhận cuộc gọi quay để nhận số parking parkpos => 701-709 ; Con số mà cuộc gọi sẽ parking trên đó
oncontext => parkedcalls ;ngữ cảnh parking cuộc gọi
parkingtime => 60; Số giây mà một cuộc gọi có thể parking (mặc định là 45 giây)
5.6 Meetme (Conference)
Chức năng hội thoại cho phép nhiều người có thể cùng nhau trao đổi nói chuyện với nhau, nơi mà mọi người cùng gọi đến để trao đổi nói chuyện gọi là phòng hội thoại “room”, Asterisk cho phép tạo ra nhiều phòng hội thoại “room” tuỳ vào nhu cầu người sử dụng. Để sử dụng hội nghị, thuê bao nội bộ cần bấm số 600, nghe thông báo mời nhập mật khẩu, sau khi nhập mật khẩu đúng sẽ nghe lời gọi cảm ơn và bây giờ thuê bao có thể tham gia hội nghị.
Để cấu hình thực hiện một phòng hội thoại “room” chúng ta lần lượt cấu hình như sau: * File /etc/asterisk/meetme.conf: tạo ra phòng hội thoại “room”
conf = > 600,123123; 600 là tên phòng , 123123 là mật khâu đăng nhập
* File /etc/asterisk/extentions.conf: khai báo phòng hội thoại “room” trong kế hoạch dialplan để cho mọi người có thể gọi đến. Sử dụng câu lệnh có cấu trúc như sau: Cú pháp:
PHẦN II – XÂY DỰNG TỔNG ĐÀI DÙNG ASTERISK Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ
MeetMe( [ confno ][,[ options ][,pin ]])
Trong đó:
Confno con số của phòng hội thoại nếu thông số này không khai báo thì khi đăng nhập hệ thống sẽ yêu cầu nhập vào.
Pin số mật khẩu đăng nhập.
Options là thông số lựa chọn không có hoặc có nhiều thông số kết hợp với nhau để xác định một số chức năng hoạt động của phòng hội thoại, các chức năng có thể liệt kê ra như sau:
'm' - Người tham gia hội thoại chỉ nghe không được nói chuyện.
't' - Người hội thoại chỉ nói không được nghe.
'i' - Phát thông báo có người kết nối hay rời khỏi hàng đợi.
'p' - Thuê bao có thể rời khỏi phòng hội thoại bằng cách nhấn phím #.
'X' - Thuê bao có thể thoát khỏi phòng hội thoại bằng cách nhập vào extention hợp lệ tại ngữ cảnh ${MEETME_EXỈT_CONTEXT }, nếu biến này không được thiết lập thì sử dụng extention trong ngữ cảnh hiện tại.
'd' - Thêm động vào phòng hội thoại không cần thiết lập số Pin.
'D' - Thêm động vào phòng hội thoại phải cần thiết lập số Pin.
'e' - Chọn phòng hội thoại trống đầu tiên.
'E' - Chọn phòng hội thoại trống đầu tiên không cần số Pin. v - Hội thoại với chế độ Video.
'r' - Nếu chức năng này được chọn thì cuộc đàm thoại trong phòng hội thoại sẽ được thu âm với định dạng tập tin ${MEETME_RECORDỈNGFORMAT} và lưu vào vị trí ${MEETME_RECORDỈNGFỈLE}.
'q' - Không phát âm thanh khi có thuê bao vào/rời khỏi phòng hội thoại.
'C' - Khi thuê bao vào phòng hội thoại sẽ được thông báo có bao nhiêu thuê bao đang trong phòng.
'M' - Thiết lập thông số này để phát ra âm nhạc khi trong phòng hội thoại chỉ có một người.
Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ
'w' - Đợi cho đến khi thuê bao “Chủ” đến phòng hội thoại.
'b' - Chạy AGI script để thiết lập biến
{MEETME_AGI_BACKGROUND},script mặc định là conf-background.agi 's' - Vào menu (user and administrator) khi nhấn phím *.
'a' - Thiết lập chế độ Admin.
'A' - Thiết lập chế độ “Chủ” .
'P' - Luôn luôn hỏi số Pin ngay cả đã chỉ định trong đối số hàm ứng dụng meetme().
Các Biến sử dụng trong hàm ứng dụng Meetme()
${MEETME_RECORDINGFILE} - Tập tin thu âm cuộc hội thoại ( option ’r’). ${MEETME_RECORDINGFORMAT} - Định dạng tập tin thu âm(gsm, wav,...). ${MEETME_EXIT_CONTEXT} - Ngữ cảnh thoát ra từ phòng hội thoại.
${MEETME_AGI_BACKGRO UND} - AGI script.
${MEETMESECS} - Số giây thuê bao trong phòng hội thoại.
Dưới đây là nội dung file cấu hình với ngữ cảnh Meetme:
[Meetme] exten = > 600,1,Answer() same => n,Wait( 1) same => n,Authenticate(600) same => n,MeetMe(600,i,123123) same => n,Playback(conf-thereare)
5.7 DND (Do not Disturb)
Dịch vụ này có thể cho phép thuê bao không nhận tất cả các cuộc gọi đến khi thuê bao kích hoạt dịch vụ. Để kích hoạt dịch vụ, thuê bao bấm số *10#. Để hủy dịch vụ DND, thuê bao bấm số *11#.1
Việc cấu hình chi tiết được thực hiện trong file extensions.conf với [macro-DND_ON] và [macro-DND_OFF] như sau:
PHẦN II – XÂY DỰNG TỔNG ĐÀI DÙNG ASTERISK Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ
exten => _*11#,1,Macro(DND_OFF) [macro-DND_ON] exten => s,1,NoOp() same => n,set(DB(DND/${CALLERID(num)})=${FORWARD}) same => n,playback(auth-thankyou) same => n,wait(1) same => n,hangup() [macro-DND_OFF] exten => s,1,NoOp() same => n,set(DB(DND/${CALLERID(num)})=0) same => n,playback(auth-thankyou) same => n,wait(1) same => n,hangup() 5.8 Call Forward
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.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 đó. Để kích hoạt dịch vụ thuê bao bấm *12#XXX trong đó XXX là số cần chuyển đến. Để hủy dịch vụ thì thuê bao bấm *13#.
Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ
Cấu hình chi tiết trong file extensions.conf:
exten => _*12#.,1,set(FORWARD=${EXTEN:4}) same => n,Macro(CFIM_ON) exten => *13#,1,Macro(CFIM_OFF) [macro-CFIM_ON] exten => s,1,NoOp() same => n,set(DB(CFIM/${CALLERID(num)})=${FORWARD}) same => n,playback(auth-thankyou) same => n,wait(1) same => n,hangup() [macro-CFIM_OFF] exten => s,1,NoOp() same => n,set(DB(CFIM/${CALLERID(num)})=0) same => n,playback(auth-thankyou) same => n,wait(1) same => n,hangup()
5.8.2 Chuyển cuộc gọi khi máy đang 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. Để đăng kí dịch vụ thuê bao bấm *14#XXX trong đó XXX là số thuê bao sẽ chuyển tới. Để hủy dịch vụ thuê bao bấm *15#.
PHẦN II – XÂY DỰNG TỔNG ĐÀI DÙNG ASTERISK Chương 5: XÂY DỰNG CÁC DỊCH VỤ CHO TỔNG ĐÂÌ
exten => _*14#.,1,set(FORWARD=${EXTEN:4}) same => n,Macro(CFBS_ON) exten => *15#,1,Macro(CFBS_OFF) [macro-CFBS_ON] exten => s,1,NoOp() same => n,set(DB(CFBS/${CALLERID(num)})=${FORWARD}) same => n,playback(auth-thankyou) same => n,wait(1) same => n,hangup() [macro-CFBS_OFF] exten => s,1,NoOp() same => n,set(DB(CFBS/${CALLERID(num)})=0) same => n,playback(auth-thankyou) same => n,wait(1) same => n,hangup()