ast: mobile - add voicemail, call return

This commit is contained in:
mpmc 2023-07-05 14:13:44 +01:00
parent 08db1f73ee
commit a13de38413
5 changed files with 152 additions and 4 deletions

View File

@ -62,7 +62,8 @@ exten => 3,1,Goto(outbound-one,${number},1)
exten => nonum,1,Playback(unidentified-no-callback)
same => n,Hangup()
exten => timeout,1,Hangup()
exten => timeout,1,Playback(vm-goodbye)
same => Hangup()
[app-vm]
exten = 1571,1,Verbose(1, "${CALLERID(num)} dialed the voicemail feature.")

View File

@ -2,22 +2,68 @@
; Remember, context names for each SIP account are specified in pjsip_wizard.conf.
;
[globals]
; first queue.
QUEUE_ONE = queue-one
; Voicemail address (configured in voicemail.conf)
VOICEMAIL_BOX = 1000@default
; First, some safeguards against abuse of the built-in contexts.
[default]
exten => s,1,Verbose(1, "info ${CALLERID(num)} was passed to default")
exten => s,1,Verbose(1, "info: ${CALLERID(num)} was passed to default")
same => n,Hangup(3)
[presence]
exten => _X.,hint,PJSIP/${EXTEN}
[from-ext]
[app-lastcallreturn]
exten => 1471,1,Verbose(1, "info: ${CALLERID(num)} dialed app-lastcallreturn.")
same => n,Set(number=${DB(lastcaller/${CALLERID(num)})})
same => n,Answer(2)
same => n,GotoIf($["${number}" = ""]?nonum,1)
same => n,Playback(info-about-last-call&telephone-number)
same => n,Wait(1)
same => n,SayDigits(${number})
same => n,Wait(1)
same => n,Playback(to-call-num-press)
same => n,Playback(digits/3)
same => n,WaitExten(10)
same => n,Goto(timeout,1)
exten => 3,1,Goto(outbound-one,${number},1)
same => n,Hangup()
exten => nonum,1,Playback(unidentified-no-callback)
same => n,Hangup()
exten => timeout,1,Playback(vm-goodbye)
same => Hangup()
[app-vm]
exten = 1571,1,Verbose(1, "info: ${CALLERID(num)} dialed voicemail")
same = n,VoiceMailMain(${CALLERID(num)}@default,s)
same = n,Hangup()
[from-quectel0]
exten => s,1,Queue(${QUEUE_ONE},nr,,,50)
same => n,Answer(500)
same => n,Voicemail(${VOICEMAIL_BOX},su)
same => n,Hangup()
[from-ext]
exten => 123,1,Goto(i,1)
same => n,Hangup()
exten => _XX.,1,Dial(Quectel/quectel0/${EXTEN},,r)
same => n,Hangup()
exten => 1471,1,Goto(app-lastcallreturn,${EXTEN},1)
same => n,Hangup()
exten => 1571,1,Goto(app-vm,${EXTEN},1)
same => n,Hangup()
exten => i,1,Answer(1)
same => n,PlayTones(info)
same => n,Wait(2)
@ -27,3 +73,8 @@ exten => i,1,Answer(1)
same => n,Playback(cannot-complete-as-dialed&check-number-dial-again)
same => n,PlayTones(info)
same => n,Hangup()
[to-ext]
exten => s,1,Set(DB(lastcaller/${EXTEN})=${CALLERID(num)})
same => n,Dial(PJSIP/${EXTEN},,r)
same => n,Hangup()

View File

@ -78,7 +78,7 @@ dtmf = relax ; control of incoming DTMF detection, possible values:
; quectel required settings
[quectel0]
context = quectel0
context = from-quectel0
exten = +447123456789
audio = /dev/ttyUSB1 ; tty port for audio connection; no default value

View File

@ -0,0 +1,49 @@
; /etc/asterisk/queues.conf
;
; Global queue settings go in this section.
;
; Modifed and "borrowed" (read: stolen) https://www.sacredheartsc.com/blog/building-a-personal-voip-system/
;
[general]
; Persist dynamic member lists in the astdb.
persistentmembers = yes
; Some options for more intuitive queue behavior.
autofill = yes
monitor-type = MixMonitor
shared_lastcall = yes
log_membername_as_agent = yes
;;;;;;;;;;;;;;;;;;;
; Queue Definitions
;;;;;;;;;;;;;;;;;;;
; The first queue is for incoming calls to our lines.
[queue-one]
; For each incoming call, ring all members of the queue.
strategy = ringall
; Max number of seconds a caller waits in the queue.
timeout = 90
; Don't announce estimated hold time, etc.
announce-frequency = 0
announce-holdtime = no
announce-position = no
periodic-announce-frequency = 0
; Allow ringing even when no queue members are present.
joinempty = yes
leavewhenempty = no
; Ring member phones even when they are on another call.
ringinuse = yes
; Queue Members
;
; Each member is specified with the following format:
; member => INTERFACE,PENALTY,FRIENDLY_NAME,PRESENCE_INTERFACE
;
; The "penalty" value is not interesting for our use case.
; With PJSIP, the BLF/Presence interface is identical to the standard interface name.
member => Local/1000@to-ext,0,1000,PJSIP/1000

View File

@ -0,0 +1,47 @@
[general]
format = wav49|gsm|wav
[zonemessages]
; Users may be located in different timezones, or may have different
; message announcements for their introductory message when they enter
; the voicemail system. Set the message and the timezone each user
; hears here. Set the user into one of these zones with the tz= attribute
; in the options field of the mailbox. Of course, language substitution
; still applies here so you may have several directory trees that have
; alternate language choices.
;
; Look in /usr/share/zoneinfo/ for names of timezones.
; Look at the manual page for strftime for a quick tutorial on how the
; variable substitution is done on the values below.
;
; Supported values:
; 'filename' filename of a soundfile (single ticks around the filename
; required)
; ${VAR} variable substitution
; A or a Day of week (Saturday, Sunday, ...)
; B or b or h Month name (January, February, ...)
; d or e numeric day of month (first, second, ..., thirty-first)
; Y Year
; I or l Hour, 12 hour clock
; H Hour, 24 hour clock (single digit hours preceded by "oh")
; k Hour, 24 hour clock (single digit hours NOT preceded by "oh")
; M Minute, with 00 pronounced as "o'clock"
; N Minute, with 00 pronounced as "hundred" (US military time)
; P or p AM or PM
; Q "today", "yesterday" or ABdY
; (*note: not standard strftime value)
; q "" (for today), "yesterday", weekday, or ABdY
; (*note: not standard strftime value)
; R 24 hour time, including minute
;
eastern = America/New_York|'vm-received' Q 'digits/at' IMp
central = America/Chicago|'vm-received' Q 'digits/at' IMp
central24 = America/Chicago|'vm-received' q 'digits/at' H N 'hours'
military = Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
european = Europe/Copenhagen|'vm-received' a d b 'digits/at' HM
uk = Europe/London|'vm-received' q 'digits/at' HM
[default]
; Note: The rest of the system must reference mailboxes defined here as mailbox@default.
1000 => 1000,Default Mailbox,,,,Tz=uk