100 lines
2.5 KiB
Text
100 lines
2.5 KiB
Text
|
#!/bin/sh
|
||
|
|
||
|
# Feature.conf
|
||
|
ast_add_conf feature
|
||
|
init_featureconf(){
|
||
|
ast_add_reload feature
|
||
|
ast_enable_type feature
|
||
|
ast_enable_type featurepark
|
||
|
ast_enable_type featuremap
|
||
|
|
||
|
feature_park_parkenabled=no
|
||
|
feature_park_parkext=700
|
||
|
feature_park_parkpos="701-720"
|
||
|
feature_park_context=parkedcalls
|
||
|
feature_park_parkingtime=45
|
||
|
feature_park_courtesytone=beep
|
||
|
feature_park_parkedplay=caller
|
||
|
feature_park_adsipark=yes
|
||
|
feature_park_findslot=first
|
||
|
feature_park_parkedmusicclass=default
|
||
|
feature_park_transferdigittimeout=3
|
||
|
feature_park_xfersound=beep
|
||
|
feature_park_xferfailsound=beeperr
|
||
|
feature_park_pickupexten="*8"
|
||
|
feature_park_featuredigittimeout=500
|
||
|
feature_park_atxfernoanswertimeout=15
|
||
|
}
|
||
|
|
||
|
feature_park_list="parkext parkpos context parkingtime \
|
||
|
courtesytone parkedplay adsipark findslot parkedmusicclass \
|
||
|
transferdigittimeout xfersound xferfailsound pickupexten \
|
||
|
featuredigittimeout atxfernoanswertimeout"
|
||
|
feature_map_list="blindxfer disconnect automon atxfer parkcall"
|
||
|
|
||
|
valid_features(){
|
||
|
case $1 in
|
||
|
park) is_in_list $2 ${feature_park_list} parkenabled ; return $? ;;
|
||
|
map) is_in_list $2 ${feature_map_list} ; return $? ;;
|
||
|
*) return 1;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
create_featureconf(){
|
||
|
file=${DEST_DIR}/features.conf
|
||
|
get_checksum feature_conf $file
|
||
|
|
||
|
local isempty=1
|
||
|
if [ $feature_park_parkenabled == no ] ; then
|
||
|
rm -f $file
|
||
|
isempty=2
|
||
|
else
|
||
|
enable_module res_features
|
||
|
echo "${asteriskuci_gen}${N}[general]" > $file
|
||
|
for i in ${feature_park_list} ; do
|
||
|
eval value="\"\${feature_park_$i}\""
|
||
|
[ ! -z "$value" ] && echo "$i=$value" >> $file
|
||
|
done
|
||
|
echo "${N}[featuremap]" >> $file
|
||
|
for i in ${feature_map_list} ; do
|
||
|
eval value="\"\${feature_map_$i}\""
|
||
|
[ ! -z "$value" ] && echo "$i=$value" >> $file
|
||
|
done
|
||
|
fi
|
||
|
check_checksum "$feature_conf" "$file" || ast_feature_restart=$isempty
|
||
|
|
||
|
}
|
||
|
handle_featurepark() {
|
||
|
handle_feature park
|
||
|
}
|
||
|
handle_featuremap() {
|
||
|
handle_feature map
|
||
|
}
|
||
|
|
||
|
handle_feature() {
|
||
|
feature_type=$1
|
||
|
option_cb() {
|
||
|
if valid_features ${feature_type} $1 $2 ; then
|
||
|
eval "feature_${feature_type}_$1=\"$2\""
|
||
|
else
|
||
|
logerror "Invalid feature: $1"
|
||
|
fi
|
||
|
}
|
||
|
}
|
||
|
|
||
|
append_dialplan_park(){
|
||
|
local file=$1
|
||
|
# Check for parked calls - add into available extensions
|
||
|
if [ ${feature_park_parkenabled} == yes ] && [ ! -z ${feature_park_context} ] ; then
|
||
|
add_dialplan_include extensions ${feature_park_context}
|
||
|
enable_module app_parkandannounce
|
||
|
enable_format gsm
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
reload_feature() astcmd "module reload res_features.so"
|
||
|
unload_feature() astcmd "module unload res_features.so"
|
||
|
|
||
|
# vim: ts=2 sw=2 noet foldmethod=indent
|