contrib/package: move asterisk14-xip to feed
[project/luci.git] / contrib / package / asterisk-xip / files / uci / lastcall
1 #!/bin/sh
2 #
3 # Author: Michael Geddes <michael at frog dot wheelycreek dot net>
4 # Copyright 2008 Michael Geddes
5 # Licensed under GPL
6
7 ast_add_module lastcall
8
9 init_lastcall() {
10 #
11 ast_enable_type calllist
12 ast_enable_type calllistdefault
13 }
14
15 check_add_calllist() {
16 local context=${opt_calllist_zonename}
17 if [ ! -z "$context" ] ; then
18 logdebug 1 "Adding calllist context ${context}"
19 [ -z $opt_calllist_dialplan ] && opt_calllist_dialplan=${opt_calllist_general_dialplan}
20 [ -z $opt_calllist_dialplan ] && opt_calllist_dialplan=extensions
21 [ -z $opt_calllist_listname ] && opt_calllist_listname=lastcall
22 [ -z $opt_calllist_length ] && opt_calllist_length=${opt_calllist_general_length}
23 [ -z $opt_calllist_length ] && opt_calllist_length=10
24 [ -z $opt_calllist_dialcontext ] && opt_calllist_dialcontext=${opt_calllist_general_dialcontext}
25 [ -z $opt_calllist_dialcontext ] && opt_calllist_dialcontext=default
26 [ -z $opt_calllist_calltype ] && opt_calllist_calltype=macro
27
28 [ -z ${opt_calllist_extension} ] \
29 || add_dialplan_lastcall ${opt_calllist_dialplan} "${opt_calllist_extension}" "${opt_calllist_listname}" "${opt_calllist_length}" "${opt_calllist_tagname}" "${opt_calllist_dialcontext}"
30 enable_lastcall
31 add_section_lastcall ${context} "${opt_calllist_listname}" "${opt_calllist_length}" "${opt_calllist_calltype}"
32 fi
33 for i in zonename extension dialplan length listname ; do
34 eval "unset opt_calllist_${i}"
35 done
36 }
37
38 add_section_lastcall() {
39 local context=$1
40 local name=$2
41 local queuelen=$3
42 local calltype=$4
43
44 [ "${calltype}" = "macro" ] && context=macro-${1}
45
46 if check_add_context ${context} ; then
47 local ext="exten => s,"
48 case "${calltype}" in
49 gosub)
50 enable_module app_stack
51 append_dialplan_context ${context} "${ext}1,Macro(lastcallstore,\${EXTEN},${name},${queuelen})"
52 append_dialplan_context ${context} "${ext}n,Return" ;;
53 gosub_s)
54 enable_module app_stack
55 append_dialplan_context ${context} "${ext}1,Macro(lastcallstore,\${ARG1},${name},${queuelen})"
56 append_dialplan_context ${context} "${ext}n,Return" ;;
57 macro)
58 enable_module app_macro
59 append_dialplan_context ${context} "${ext}1,Macro(lastcallstore,\${ARG1},${name},${queuelen})" ;;
60 esac
61 else
62 logerror "Lastcall section ${context} already added"
63 fi
64 }
65
66 handle_calllist() {
67 check_add calllist
68 logdebug 2 "Loading Call List: ${opt_calllist_zonename}"
69 opt_calllist_zonename=$1
70 option_cb() {
71 case "$1" in
72 extension|dialplan|length|listname|calllist|tagname|dialcontext|calltype)
73 logdebug 1 "Setting opt_calllist_$1=\"${2}\""
74 eval "opt_calllist_${1}=\"${2}\"" ;;
75 *)
76 logerror "Unknown option $1 in calllist ${opt_calllist_zonename}" ;;
77 esac
78 }
79 }
80
81 handle_calllistdefault() {
82 logdebug 2 "Loading Call List General options"
83 option_cb() {
84 case $1 in
85 dialplan|length|dialcontext)
86 eval "opt_calllist_general_${1}=\"${2}\"" ;;
87 *) logerror "Unknown option $1 in calllistdefault" ;;
88 esac
89 }
90 }
91
92 add_dialplan_lastcall(){
93 local context=$1
94 logdebug 1 "Adding Dialplan lastcall $1 $2"
95 check_add_context "$context"
96 enable_lastcall
97 local queue=$3
98 local len=$4
99 local tag=$5
100 local dialcontext=$6
101 [ "${queue}" == lastcall ] && queue=
102 append dialplan_context_${context} "exten => $2,1,Macro(lastcallapp,${queue},${len},${dialcontext},${tag})" "${N}"
103 }
104
105 enable_lastcall() {
106 if [ "${dialplan_do_add_lastcall}" != "1" ] ; then
107 logdebug 2 "Enabling lastcall"
108 append dialplan_globals "LASTCALLZONE=\"${asterisk_zone}\"" "$N"
109 append_include "macros/lastcall.conf"
110 dialplan_do_add_lastcall=1
111 enable_module app_macro
112 enable_module func_callerid
113 enable_module app_sayunixtime
114 enable_module app_playback
115 enable_module func_db
116 enable_format gsm
117 fi
118 }
119 # vim: ts=2 sw=2 noet foldmethod=indent