Reply To: Custom Context

VitalPBX Community Support Reporting an Issue Custom Context Reply To: Custom Context

    AR
    Participant
    Up
    0
    Down
    extension__30008-dialplan.conf

     

    [root@phone ~]# cd /etc/asterisk/vitalpbx/
    [root@phone vitalpbx]# cat extension__30008-dialplan.conf
    [Jitsi-Conference-Entry]
    exten => s,1,Answer()
    ;Set the extension used for Jitsi
    exten => s,2,Set(Jitsi=30008)
    ;set variable to prevent looping
    exten => s,3,Set(Attempts=0)
    exten => s,4,Set(Attempts=${MATH(${Attempts}+1,i)})
    ;Test for invalid entries. On 4th attempt go to error sub
    exten => s,5,ExecIf($[“${Attempts}” = “4”]?Gosub(Attempts-Error,s,1))
    exten => s,6(begin),NooP()
    ;system listens for DTMF and sets variable “confid”
    ;10=MAX DIGITS, 10=timeout
    exten => s,n,Read(confid,conf-getpin,10,,,10)
    ;If blank value, start over
    exten => s,n,ExecIf($[“${confid}”=””]?goto(Jitsi-Conference-Entry,s,4))
    ;systems plays back the number entered
    exten => s,n,Playback(you-entered)
    exten => s,n,SayDigits(${confid})
    ;system asks to press 1 to accept or 2 to retry
    exten => s,n,Read(digi,if-this-is-correct-press&digits/1&otherwise-press&digits/2,1,,1,10)
    ;If blank value, start over
    exten => s,n,ExecIf($[“${digi}”=””]?goto(Jitsi-Conference-Entry,s,4))
    ;if user presses 1 to confirm, system moves onto to check for passcode, if applicable
    exten => s,n,ExecIf($[“${digi}”=”1″]?goto(passcode))
    ;if callers presses any other digit, system will re-ask them to enter in their number
    exten => s,n,goto(Jitsi-Conference-Entry,s,begin)
    ;CURL Jitsi API with meeting pin & retrieve meeting name as the result
    exten => s,n(passcode),Set(CURL_RESULT=${SHELL(curl –silent https://jitsi-api.jitsi.net/conferenceMapper?id=${confid} | sed -e ‘s/.*”conference”:”\(.*\)@.*/\1/’)})
    exten => s,n,Verbose(0, ${CURL_RESULT});
    ;speeding this up for the password, but you could mirror the process above if you want the extra readout and verification…
    ;system listens for DTMF and sets variable “confpin”
    ;6=MAX DIGITS, 10=timeout
    exten => s,n,Read(confpin,pls-enter-conf-password&vm-then-pound&vm-tocancel,6,,,10)
    ;pls-enter-conf-password
    ;User will be sent onto the conference whether confpin is blank or not
    exten => s,n,goto(enterconf)
    ;Add SIP Headers based on caller’s entries & CURL result
    exten => s,n(enterconf),SIPAddHeader(Jitsi-Conference-Room:${CURL_RESULT})
    exten => s,n,SIPAddHeader(Jitsi-Conference-Room-Pass:${confpin})
    ;Sets CDR “userfield” with the Conference ID
    ;CDR can now be used to track number of calls and durations associated to the Conference ID
    exten => s,n,Set(CDR(userfield)=Jitsi:${CURL_RESULT})
    ;Record Caller’s Name
    exten => s,n,Set(__rnum=${RAND()})
    exten => s,n,Playback(vm-rec-name)
    exten => s,n,Record(/tmp/name-${rnum}.gsm,3,10)
    ;set spygroup to be used for injecting whisper
    exten => s,n,Set(SPYGROUP=1000)
    ;Dial Jitsi extension and play recorded name to the jitisi conference channel
    ;3 = seconds to ring , m = play music on hold , A = announcement for dialed channel, M = Macro after call connects
    exten => s,n,Dial(SIP/${Jitsi},3,m(silence)A(/tmp/name-${rnum})M(Jitsi-join))
    exten => s,n,Verbose(0, Contacting ${Jitsi}… Status is ${DIALSTATUS} );
    ;Take actions based on dialstatus
    exten => s,n,GotoIf($[“${DIALSTATUS}” = “BUSY”]?unknown)
    exten => s,n,GotoIf($[“${DIALSTATUS}” = “NOANSWER”]?conf-busy)
    exten => s,n,GotoIf($[“${DIALSTATUS}” = “CANCEL”]?unknown)
    exten => s,n,GotoIf($[“${DIALSTATUS}” = “CONGESTION”]?unknown)
    exten => s,n,GotoIf($[“${DIALSTATUS}” = “CHANUNAVAIL”]?unknown)
    exten => s,n,GotoIf($[“${DIALSTATUS}” = “DONTCALL”]?unknown)
    exten => s,n,GotoIf($[“${DIALSTATUS}” = “TORTURE”]?unknown)
    exten => s,n,GotoIf($[“${DIALSTATUS}” = “INVALIDARGS”]?unknown)
    ;Hangup if condition is not matched (in the event a new dialstatus is added with an update
    exten => s,n,Hangup()
    ;Jitsi is not reachable, play error message
    ;This is also a good place to send an SMS to your lead system admins
    exten => s,n(unknown),playback(please-contact-tech-supt&vm-goodbye)
    exten => s,n,Hangup()
    ;Initial attempt was ok, but Jitsi didn’t pickup the call.
    ;It’s likely that the host hasn’t yet authenticated / started the meeting
    ;Indicate that we’re waiting for the leader to join and keep trying
    exten => s,n(conf-busy),Playback(conf-waitforleader)
    ;120 = seconds to ring , m = play music on hold , A = announcement for dialed channel, M = Macro after call connects
    exten => s,n,Dial(SIP/${Jitsi},120,m(default)A(/tmp/name-${rnum})M(Jitsi-join))
    exten => s,n,Hangup()

    [Attempts-Error]
    ;system plays message and hangs up
    exten => s,1,playback(sorry-youre-having-problems)
    exten => s,n,playback(tt-monkeys)
    ;exten => s,n,playback(hangup-try-again)
    exten => s,n,Hangup()

    [macro-Jitsi-join]
    exten => s,1,Originate(Local/999@JitsiWhisper,app,Playback,confbridge-join)

    [JitsiWhisper]
    exten => _X.,1,NoCDR
    exten => _X.,n,Answer()
    exten => _X.,n,ChanSpy(,g(1000),qw)
    exten => _X.,n,Hangup()

    [root@phone vitalpbx]#

     

    0