voice-client: patch from Pantera.

Ref: 13031
This commit is contained in:
Kent Ekholm 2018-01-24 13:38:27 +01:00 committed by Sukru Senli
parent 8f36765f5b
commit d39c16248f
5 changed files with 85 additions and 1 deletions

View file

@ -42,6 +42,41 @@ exten => s,n, Playback(beep)
exten => s,n, Playback(beep)
exten => s,n, Hangup()
[macro-create_cw]
;
; ${ARG1} - Associated SIP peer
;
exten => s,1, System(/lib/cw.sh ${ARG1} 1)
exten => s,n, System(asterisk -rx 'brcm reload')
exten => s,n, Playback(beep)
exten => s,n, Hangup()
[macro-delete_cw]
;
; ${ARG1} - Associated SIP peer
;
exten => s,1, System(/lib/cw.sh ${ARG1} 0)
exten => s,n, System(asterisk -rx 'brcm reload')
exten => s,n, Playback(beep)
exten => s,n, Playback(beep)
exten => s,n, Hangup()
[macro-status_cw]
;
; ${ARG1} - Associated SIP peer
;
exten => s,1, Set(result=${SHELL(/lib/cw.sh ${ARG1} ?)})
exten => s,n, GotoIf(${result}?cwon:cwoff)
;If call waiting on play beep and hang up
exten => s,n(cwon), Playback(beep)
exten => s,n, Hangup()
exten => s,n, MacroExit()
;If call waiting off play two beep and hang up
exten => s,n(cwoff), Playback(beep)
exten => s,n, Playback(beep)
exten => s,n, Hangup()
exten => s,n, MacroExit()
[macro-call_return]
;
; Return call to last incoming caller

View file

@ -6,7 +6,9 @@
include => clir
include => local_extensions
include => |PROVIDER|-callforwarding
include => |PROVIDER|-callwaiting
include => |PROVIDER|-outgoing
include => |PROVIDER|-direct
[|PROVIDER|-transfer]
; Context used for call transfer for this Provider

View file

@ -129,6 +129,7 @@ config 'brcm_advanced' 'BRCM'
config 'features' 'features'
option 'cbbs_enabled' '1'
option 'callforward_enabled' '1'
option 'callwaiting_enabled' '1'
option 'redial_enabled' '1'
option 'callreturn_enabled' '1'
option 'advanced_register_settings' '1'
@ -162,6 +163,9 @@ config 'sip_service_provider' 'sip0'
option 'cfim_off' '#21#'
option 'cfbs_on' '*61*'
option 'cfbs_off' '#61#'
option cw_on '*43#'
option cw_off '#43#'
option cw_status '*#43#'
option 'call_return' '*69'
option 'redial' '*66'
option 'is_fax' '0'
@ -169,4 +173,3 @@ config 'sip_service_provider' 'sip0'
config cdr_log 'CDR_LOG'
option cdr_syslog '0'

View file

@ -1479,8 +1479,12 @@ configure_extensions_provider()
local incoming_lines
local direct_dial
local congestiontone
local cw_on
local cw_off
local cw_status
local callforward_enabled
local callwaiting_enabled
local cbbs_enabled
local callreturn_enabled
local redial_enabled
@ -1489,6 +1493,7 @@ configure_extensions_provider()
# load general settings
config_get callforward_enabled "features" callforward_enabled
config_get cbbs_enabled "features" cbbs_enabled
config_get callwaiting_enabled "features" callwaiting_enabled
config_get callreturn_enabled "features" callreturn_enabled
config_get redial_enabled "features" redial_enabled
@ -1555,16 +1560,23 @@ configure_extensions_provider()
config_get cfim_on $1 cfim_on
config_get cfim_off $1 cfim_off
config_get cfbs_on $1 cfbs_on
config_get cw_off $1 cw_off
config_get cw_on $1 cw_on
config_get cw_status $1 cw_status
config_get cfbs_off $1 cfbs_off
config_get call_return $1 call_return
config_get redial $1 redial
local cfim_on_len=${#cfim_on}
local cfbs_on_len=${#cfbs_on}
local cw_on_len=${#cw_on}
[ -z "$cfim_on" ] && cfim_on="cfimon"
[ -z "$cfim_off" ] && cfim_off="cfimoff"
[ -z "$cfbs_on" ] && cfbs_on="cfbson"
[ -z "$cfbs_off" ] && cfbs_off="cfbsoff"
[ -z "$cw_on" ] && cw_on="cwon"
[ -z "$cw_off" ] && cw_off="cwoff"
[ -z "$cw_status" ] && cw_status="cwstatus"
[ -z "$call_return" ] && call_return="callreturn"
[ -z "$redial" ] && redial="redial"
@ -1603,6 +1615,16 @@ configure_extensions_provider()
fi
echo "" >> $WORKDIR/extensions_provider.tmp
# Configure call waiting if enabled
if [ -n "$callwaiting_enabled" -a "$callwaiting_enabled" = "1" ] ; then
echo "[$1-callwaiting]" >> $WORKDIR/extensions_provider.tmp
echo "exten => $cw_off,1, Macro(delete_cw,$1)" >> $WORKDIR/extensions_provider.tmp
echo "exten => ${cw_on},1, Macro(create_cw,$1)" >> $WORKDIR/extensions_provider.tmp
echo "exten => ${cw_status},1, Macro(status_cw,$1)" >> $WORKDIR/extensions_provider.tmp
echo "" >> $WORKDIR/extensions_provider.tmp
fi
cat $WORKDIR/extensions_provider.tmp >> $WORKDIR/extensions.tmp
rm -f $WORKDIR/extensions_provider.tmp
@ -1628,6 +1650,7 @@ configure_extensions_provider()
fi
echo "exten => $i,1,Goto($1-outgoing,\${EXTEN},1)" >> $WORKDIR/extensions_direct.tmp
done
echo "" >> $WORKDIR/extensions_direct.tmp
cat $WORKDIR/extensions_direct.tmp >> $WORKDIR/extensions.tmp
rm -f $WORKDIR/extensions_direct.tmp
@ -2273,10 +2296,18 @@ start_service() {
pbx_fix_ownership
config_unset
run_hook postinit
#/sbin/voice-monitor &
return
}
#stop_service() {
# killall -9 voice-monitor
#}
reload_service() {
#stop
start
# turn off voice led; asterisk will turn it on

13
voice-client/files/lib/cw.sh Executable file
View file

@ -0,0 +1,13 @@
#! /bin/sh
if [ $2 != '?' ]; then
for brcm in `uci show voice_client | grep brcm | grep $1 | cut -d . -f 2`; do
sed -i "/\[$brcm\]/,/^\[/ s/\(callwaiting=\)[0-9]/\1$2/" /etc/asterisk/brcm.conf
done
else
for brcm in `uci show voice_client | grep brcm | grep $1 | cut -d . -f 2`; do
status=`sed -n "/\[$brcm\]/,/^\[/ s/callwaiting=\([0-9]\)/\1/p" /etc/asterisk/brcm.conf`
echo $status
exit 0
done
fi