summaryrefslogtreecommitdiffhomepage
path: root/contrib/asterisk-xip/files/uci/voicemailconf
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/asterisk-xip/files/uci/voicemailconf')
-rwxr-xr-xcontrib/asterisk-xip/files/uci/voicemailconf217
1 files changed, 217 insertions, 0 deletions
diff --git a/contrib/asterisk-xip/files/uci/voicemailconf b/contrib/asterisk-xip/files/uci/voicemailconf
new file mode 100755
index 0000000000..83151f0b99
--- /dev/null
+++ b/contrib/asterisk-xip/files/uci/voicemailconf
@@ -0,0 +1,217 @@
+#!/bin/sh
+
+# Voicemail.conf
+
+ast_add_conf voicemail
+
+init_voicemailconf() {
+ ast_add_reload voicemail
+
+ ast_enable_type voicegeneral
+ ast_enable_type voicemail
+ ast_enable_type voicezone
+ ast_enable_type dialplanvoice
+
+ voice_format="wav49|gsm|wav"
+ voice_serveremail=
+ voice_attach=no
+ voice_skipms=3000
+ voice_maxsilence=10
+ voice_silencethreshold=128
+ voice_maxlogins=3
+ voice_emaildateformat="%A, %B %d, %Y at %r"
+ voice_sendvoicemail=no
+ voice_maxmsg=100
+ voice_maxmessage=180
+ voice_minmessage=3
+ voice_maxgreet=60
+ return 0
+}
+
+voicegeneral_list="format serveremail attach skipms maxsilence silencethreshold maxlogins emaildateformat sendvoicemail maxmsg maxmessage minmessage maxgreet"
+voicegeneral_ext_list=""
+
+valid_voicemail(){
+ is_in_list $1 ${voicegeneral_list} ${voicegeneral_ext_list}
+ return $?
+}
+
+voicebox_list="context number password name email pager"
+
+voicebox_listopt="tz attach serveremail saycid dialout callback review operator envelope sayduration saydurationm"
+
+valid_voicebox() {
+ is_in_list $1 ${voicebox_list} ${voicebox_listopt}
+ return $?
+}
+
+check_add_voicebox() {
+ if [ ! -z ${voicebox_number} ] ; then
+ [ -z "${voicebox_context}" ] && voicebox_context=default
+ logdebug 1 "Adding Voicebox ${voicebox_number} in ${voicebox_context}"
+ # Construct the voicebox line
+ local line="$voicebox_number => "
+ [ -z ${voicebox_tz} ] && voicebox_tz=homeloc
+ [ -z ${voicebox_name} ] && voicebox_name=OpenWRT
+
+ for i in password name email pager ; do
+ eval "local value=\"\${voicebox_$i}\""
+ line="${line}${value},"
+ done
+
+ # Then add named options.
+ for i in ${voicebox_listopt} ; do
+ eval val=\${voicebox_$i}
+ [ -z ${val} ] || append line "$i=$val" \|
+ done
+
+ # Check if the current voicebox context has anything
+ eval local cur=\${voicebox_section_$voicebox_context}
+ # if not add it to the list of contexts used
+ [ -z $cur ] && append voice_contextlist "${voicebox_context}" " "
+
+ # Then add the voicebox line to the context
+ logdebug 4 "Add Voicebox $line to ${voicebox_context}"
+ append voicebox_section_${voicebox_context} "$line" "$N"
+ fi
+
+ # Then clear the settings for the next one.
+ for i in ${voicebox_list} ${voicebox_listopt} ; do
+ eval unset voicebox_$i
+ done
+}
+
+create_voicemailconf() {
+ # Construct the file
+ file=${DEST_DIR}/voicemail.conf
+ get_checksum voicemail_conf $file
+
+ local isempty=1
+ if [ -z ${voice_contextlist} ] ; then
+ local isempty=2
+ rm -f $file
+ else
+ echo "${asteriskuci_gen}[general]" > $file
+ for i in ${voicegeneral_list} ; do
+ eval value=\${voice_$i}
+ if [ ! -z "$value" ] ; then
+ echo "$i=$value" >> $file
+ fi
+ done
+ echo "${N}[zonemessages]" >> $file
+ echo "homeloc=${asterisk_zone}| Q IMp" >> $file
+ echo "${voicezone_list}" >> $file
+ for i in ${voice_contextlist} ; do
+ echo "${N}[$i]" >> $file
+ eval "local cursection=\"\${voicebox_section_${i}}\""
+ echo "$cursection" >> $file
+ eval unset voicebox_section_${i}
+ done
+ unset voice_contexts
+ fi
+ check_checksum "$voicemail_conf" "$file" || ast_voicemail_restart=$isempty
+}
+
+handle_voicegeneral() {
+ option_cb() {
+ if valid_voicemail $1 $2 ; then
+ eval voice_$1="$2"
+ else
+ logerror "Invalid general voice option: $1"
+ fi
+ }
+}
+
+handle_voicemail() {
+ check_add voicebox
+ voicebox_context=${1%[-_]*}
+ if [ ${voicebox_context} == $1 ] ; then
+ voicebox_context=default
+ fi
+ voicebox_number=${1#*[-_]}
+ option_cb() {
+ case $1 in
+ zone) voicebox_tz="$2" ;;
+ *)
+ if valid_voicebox $1 $2 ; then
+ eval voicebox_$1="$2"
+ else
+ logerror "Invalid voicebox option: $1"
+ fi
+ esac
+ }
+}
+
+# Locality options for voicemail
+
+check_add_voicezone() {
+ if [ ! -z "${voicezone_name}" ] ; then
+ [ -z "${voicezone_zone}" ] && voicezone_zone=${asterisk_zone}
+ if [ -z "${voicezone_message}" ] ; then
+ voicezone_message="Q IMp"
+ else
+ voicezone_message=`echo "$voicezone_message"|tr \" \'`
+ fi
+ append voicezone_list "${voicezone_name}=${voicezone_zone}|${voicezone_message}" "${N}"
+ fi
+ unset voicezone_name
+ unset voicezone_zone
+ unset voicezone_message
+}
+
+handle_voicezone() {
+ voicezone_name=$1
+ option_cb() {
+ case $1 in
+ zone) voicezone_zone="$2" ;;
+ message) voicezone_message="$2" ;;
+ *) logerror "Invalid voicezone option: $1"
+ esac
+ }
+}
+
+handle_dialplanvoice() {
+ check_add dialplanvoice
+ option_cb() {
+ case $1 in
+ dialplan|extension|voicecontext|voicebox)
+ eval "dial_voice_$1=\"$2\"" ;;
+ *) logerror "Invalid option: $1 for dialplanvoice"
+ esac
+ }
+}
+
+check_add_dialplanvoice() {
+ if [ ! -z "${dial_voice_dialplan}" -a ! -z "${dial_voice_extension}" ] ; then
+ local ext="exten => ${dial_voice_extension},"
+ [ -z ${dial_voice_voicebox} ] && dial_voice_voicebox=default
+ if [ -z ${dial_voice_voicebox} ] ; then
+ logerror "Expecting voicebox for ${dial_voice_dialplan}/${dial_voice_extension}"
+ else
+ check_add_context ${dial_voice_dialplan}
+ local voiceext="${dial_voice_voicebox}@${dial_voice_voicecontext}"
+ enable_voicemail
+ append dialplan_context_${dial_voice_dialplan} "${ext}1,VoiceMailMain(${voiceext})" "${N}"
+ fi
+ fi
+ for i in dialplan extension voicecontext voicebox ; do
+ eval "unset dial_voice_$i"
+ done
+}
+
+add_dialplan_voice() {
+ local context=$1
+ logdebug 1 "Adding Dialplan voice $1 $2"
+ check_add_context "$context"
+ local ext="exten => $2,"
+ enable_voicemail
+ append dialplan_context_${context} "${ext}1,VoiceMailMain($3)" "${N}"
+}
+
+
+
+reload_voicemail() astcmd "module reload app_voicemail.so"
+unload_voicemail() astcmd "module unload app_voicemail.so"
+
+
+# vim: ts=2 sw=2 noet foldmethod=indent