Extension to call, it records then once you hang up it dials out and plays file back

Doesnt seem to work but I’m probably missing a lot

Tried paging but it will never dial anything in the group, just sits there, though all extensions are owned by other systems

[custom-record-and-play]
exten => 999,1,Answer()
exten => 999,n,Wait(1)
exten => 999,n,Record(/tmp/myrecording.wav) ; Record the message
exten => 999,n,Dial(PJSIP/8899@system-site/ ; Dial the other number
exten => 999,n,Playback(/tmp/myrecording.wav) ; Play the recording
exten => 999,n,Hangup()

You’re missing a closing ) that’s a problem.

What does that mean? What other systems?

Paging on freepbx only shows local extensions to be included, the paging system is registered on another system which works fine but I wanted to add a delay and no duplex to avoid feedback

999 dial doesnt work, is there extra steps to make this work?

[2025-08-21 13:46:39] NOTICE[371586]: app_queue.c:9704 reload_queue_rules: queuerules.conf has not changed since it was last loaded. Not taking any action.
– Remote UNIX connection disconnected
== Using SIP RTP Audio TOS bits 184
== Using SIP RTP Audio TOS bits 184 in TCLASS field.
== Using SIP RTP Audio CoS mark 5
– Executing [999@from-internal:1] GotoIf(“PJSIP/1111-000001d3”, “1?ext-local,999,1:followme-check,999,1”) in new stack
– Goto (ext-local,999,1)
– Executing [999@ext-local:1] Set(“PJSIP/1111-000001d3”, “__RINGTIMER=15”) in new stack
– Executing [999@ext-local:2] ExecIf(“PJSIP/1111-000001d3”, “0?Set(__CWIGNORE=)”) in new stack
– Executing [999@ext-local:3] Gosub(“PJSIP/1111-000001d3”, “macro-exten-vm,s,1(novm,999,0,0,0)”) in new stack
– Executing [s@macro-exten-vm:1] Gosub(“PJSIP/1111-000001d3”, “macro-user-callerid,s,1(novm,999,macro-exten-vm)”) in new stack
– Executing [s@macro-user-callerid:1] Set(“PJSIP/1111-000001d3”, “TOUCH_MONITOR=1755798403.1249”) in new stack
– Executing [s@macro-user-callerid:2] Set(“PJSIP/1111-000001d3”, “CHANCONTEXT=”) in new stack
– Executing [s@macro-user-callerid:3] Set(“PJSIP/1111-000001d3”, “CHANCONTEXT=”) in new stack
– Executing [s@macro-user-callerid:4] Set(“PJSIP/1111-000001d3”, “CHANEXTENCONTEXT=1111-000001d3”) in new stack
– Executing [s@macro-user-callerid:5] Set(“PJSIP/1111-000001d3”, “CHANEXTEN=1111-000001d3”) in new stack
– Executing [s@macro-user-callerid:6] Set(“PJSIP/1111-000001d3”, “CALLERID(number)=1111”) in new stack
– Executing [s@macro-user-callerid:7] Set(“PJSIP/1111-000001d3”, “AMPUSER=1111”) in new stack
– Executing [s@macro-user-callerid:8] Set(“PJSIP/1111-000001d3”, “HOTDESCKCHAN=1111-000001d3”) in new stack
– Executing [s@macro-user-callerid:9] Set(“PJSIP/1111-000001d3”, “HOTDESKEXTEN=1111”) in new stack
– Executing [s@macro-user-callerid:10] Set(“PJSIP/1111-000001d3”, “HOTDESKCALL=0”) in new stack
– Executing [s@macro-user-callerid:11] ExecIf(“PJSIP/1111-000001d3”, “0?Set(HOTDESKCALL=1)”) in new stack
– Executing [s@macro-user-callerid:12] ExecIf(“PJSIP/1111-000001d3”, “0?Set(CALLERID(name)=)”) in new stack
– Executing [s@macro-user-callerid:13] GotoIf(“PJSIP/1111-000001d3”, “0?report”) in new stack
– Executing [s@macro-user-callerid:14] ExecIf(“PJSIP/1111-000001d3”, “1?Set(REALCALLERIDNUM=1111)”) in new stack
– Executing [s@macro-user-callerid:15] Set(“PJSIP/1111-000001d3”, “AMPUSER=1111”) in new stack
– Executing [s@macro-user-callerid:16] GotoIf(“PJSIP/1111-000001d3”, “0?limit”) in new stack
– Executing [s@macro-user-callerid:17] Set(“PJSIP/1111-000001d3”, “AMPUSERCIDNAME=1111”) in new stack
– Executing [s@macro-user-callerid:18] ExecIf(“PJSIP/1111-000001d3”, “0?Set(__CIDMASQUERADING=TRUE)”) in new stack
– Executing [s@macro-user-callerid:19] GotoIf(“PJSIP/1111-000001d3”, “0?report”) in new stack
– Executing [s@macro-user-callerid:20] Set(“PJSIP/1111-000001d3”, “AMPUSERCID=1111”) in new stack
– Executing [s@macro-user-callerid:21] Set(“PJSIP/1111-000001d3”, “__DIAL_OPTIONS=HhTtr”) in new stack
– Executing [s@macro-user-callerid:22] Set(“PJSIP/1111-000001d3”, “CALLERID(all)=“1111” <1111>”) in new stack
– Executing [s@macro-user-callerid:23] ExecIf(“PJSIP/1111-000001d3”, “0?Set(CUSDIAL=999)”) in new stack
– Executing [s@macro-user-callerid:24] ExecIf(“PJSIP/1111-000001d3”, “0?Set(CALLERID(all)=“1111” <1111>)”) in new stack
– Executing [s@macro-user-callerid:25] GotoIf(“PJSIP/1111-000001d3”, “0?limit”) in new stack
– Executing [s@macro-user-callerid:26] ExecIf(“PJSIP/1111-000001d3”, “0?Set(GROUP(concurrency_limit)=1111)”) in new stack
– Executing [s@macro-user-callerid:27] ExecIf(“PJSIP/1111-000001d3”, “0?Set(CHANNEL(language)=)”) in new stack
– Executing [s@macro-user-callerid:28] NoOp(“PJSIP/1111-000001d3”, “Macro depricated!! To keep the same line numbers”) in new stack
– Executing [s@macro-user-callerid:29] NoOp(“PJSIP/1111-000001d3”, “Macro depricated !! To keep the same line numbers”) in new stack
– Executing [s@macro-user-callerid:30] GotoIf(“PJSIP/1111-000001d3”, “0?continue”) in new stack
– Executing [s@macro-user-callerid:31] ExecIf(“PJSIP/1111-000001d3”, “1?Set(__CALLEE_ACCOUNCODE=)”) in new stack
– Executing [s@macro-user-callerid:32] Set(“PJSIP/1111-000001d3”, “__TTL=64”) in new stack
– Executing [s@macro-user-callerid:33] GotoIf(“PJSIP/1111-000001d3”, “1?continue”) in new stack
– Goto (macro-user-callerid,s,49)
– Executing [s@macro-user-callerid:49] Set(“PJSIP/1111-000001d3”, “CALLERID(number)=1111”) in new stack
– Executing [s@macro-user-callerid:50] Set(“PJSIP/1111-000001d3”, “CALLERID(name)=1111”) in new stack
– Executing [s@macro-user-callerid:51] GotoIf(“PJSIP/1111-000001d3”, “0?cnum”) in new stack
– Executing [s@macro-user-callerid:52] Set(“PJSIP/1111-000001d3”, “__MCNUM=1111”) in new stack
– Executing [s@macro-user-callerid:53] Set(“PJSIP/1111-000001d3”, “__MCNAME=1111”) in new stack
– Executing [s@macro-user-callerid:54] Set(“PJSIP/1111-000001d3”, “__MCEXTEN=1111”) in new stack
– Executing [s@macro-user-callerid:55] Set(“PJSIP/1111-000001d3”, “__MCORGCHAN=PJSIP/1111-000001d3”) in new stack
– Executing [s@macro-user-callerid:56] Set(“PJSIP/1111-000001d3”, “CDR(cnam)=1111”) in new stack
– Executing [s@macro-user-callerid:57] Set(“PJSIP/1111-000001d3”, “CDR(cnum)=1111”) in new stack
– Executing [s@macro-user-callerid:58] Return(“PJSIP/1111-000001d3”, “”) in new stack
– Executing [s@macro-exten-vm:2] Set(“PJSIP/1111-000001d3”, “RingGroupMethod=none”) in new stack
– Executing [s@macro-exten-vm:3] Set(“PJSIP/1111-000001d3”, “__EXTTOCALL=999”) in new stack
– Executing [s@macro-exten-vm:4] Set(“PJSIP/1111-000001d3”, “__PICKUPMARK=999”) in new stack
– Executing [s@macro-exten-vm:5] Set(“PJSIP/1111-000001d3”, “RT=”) in new stack
– Executing [s@macro-exten-vm:6] GotoIf(“PJSIP/1111-000001d3”, “1?startcheck:exitcheck”) in new stack
– Goto (macro-exten-vm,s,7)
– Executing [s@macro-exten-vm:7] GotoIf(“PJSIP/1111-000001d3”, “0?featureSIP:featurePJSIP”) in new stack
– Goto (macro-exten-vm,s,11)
– Executing [s@macro-exten-vm:11] ExecIf(“PJSIP/1111-000001d3”, “0?Gosub(macro-vm,novm,DIRECTDIAL,)”) in new stack
– Executing [s@macro-exten-vm:12] ExecIf(“PJSIP/1111-000001d3”, “0?Return()”) in new stack
– Executing [s@macro-exten-vm:13] GotoIf(“PJSIP/1111-000001d3”, “1?featuremoniPJSIP:featuremoniSIP”) in new stack
– Goto (macro-exten-vm,s,14)
– Executing [s@macro-exten-vm:14] ExecIf(“PJSIP/1111-000001d3”, “0?ChanSpy(PJSIP/999,q)”) in new stack
– Executing [s@macro-exten-vm:15] ExecIf(“PJSIP/1111-000001d3”, “0?Return()”) in new stack
– Executing [s@macro-exten-vm:16] GotoIf(“PJSIP/1111-000001d3”, “1?check-ext-intercom:featuremoniSIP”) in new stack
– Goto (macro-exten-vm,s,19)
– Executing [s@macro-exten-vm:19] GotoIf(“PJSIP/1111-000001d3”, “0?ext-intercomSIP:ext-intercomPJSIP”) in new stack
– Goto (macro-exten-vm,s,20)
– Executing [s@macro-exten-vm:20] ExecIf(“PJSIP/1111-000001d3”, “0?Gosub(ext-intercom,*80999,1())”) in new stack
– Executing [s@macro-exten-vm:21] ExecIf(“PJSIP/1111-000001d3”, “0?Return()”) in new stack
– Executing [s@macro-exten-vm:22] GotoIf(“PJSIP/1111-000001d3”, “1?exitcheck:ext-intercomSIP”) in new stack
– Goto (macro-exten-vm,s,25)
– Executing [s@macro-exten-vm:25] NoOp(“PJSIP/1111-000001d3”, “Exiting Checks”) in new stack
– Executing [s@macro-exten-vm:26] Gosub(“PJSIP/1111-000001d3”, “sub-record-check,s,1(exten,999,dontcare)”) in new stack
– Executing [s@sub-record-check:1] GotoIf(“PJSIP/1111-000001d3”, “0?initialized”) in new stack
– Executing [s@sub-record-check:2] Set(“PJSIP/1111-000001d3”, “__REC_STATUS=INITIALIZED”) in new stack
– Executing [s@sub-record-check:3] Set(“PJSIP/1111-000001d3”, “NOW=1755798403”) in new stack
– Executing [s@sub-record-check:4] Set(“PJSIP/1111-000001d3”, “__DAY=21”) in new stack
– Executing [s@sub-record-check:5] Set(“PJSIP/1111-000001d3”, “__MONTH=08”) in new stack
– Executing [s@sub-record-check:6] Set(“PJSIP/1111-000001d3”, “__YEAR=2025”) in new stack
– Executing [s@sub-record-check:7] Set(“PJSIP/1111-000001d3”, “__TIMESTR=20250821-134643”) in new stack
– Executing [s@sub-record-check:8] Set(“PJSIP/1111-000001d3”, “__FROMEXTEN=1111”) in new stack
– Executing [s@sub-record-check:9] Set(“PJSIP/1111-000001d3”, “__MON_FMT=wav”) in new stack
– Executing [s@sub-record-check:10] NoOp(“PJSIP/1111-000001d3”, “Recordings initialized”) in new stack
– Executing [s@sub-record-check:11] ExecIf(“PJSIP/1111-000001d3”, “0?Set(ARG3=dontcare)”) in new stack
– Executing [s@sub-record-check:12] Set(“PJSIP/1111-000001d3”, “REC_POLICY_MODE_SAVE=”) in new stack
– Executing [s@sub-record-check:13] ExecIf(“PJSIP/1111-000001d3”, “0?Set(REC_STATUS=NO)”) in new stack
– Executing [s@sub-record-check:14] GotoIf(“PJSIP/1111-000001d3”, “5?checkaction”) in new stack
– Goto (sub-record-check,s,17)
– Executing [s@sub-record-check:17] GotoIf(“PJSIP/1111-000001d3”, “1?sub-record-check,exten,1”) in new stack
– Goto (sub-record-check,exten,1)
– Executing [exten@sub-record-check:1] NoOp(“PJSIP/1111-000001d3”, “Exten Recording Check between 1111 and 999”) in new stack
– Executing [exten@sub-record-check:2] Set(“PJSIP/1111-000001d3”, “CALLTYPE=internal”) in new stack
– Executing [exten@sub-record-check:3] ExecIf(“PJSIP/1111-000001d3”, “0?Set(CALLTYPE=)”) in new stack
– Executing [exten@sub-record-check:4] Set(“PJSIP/1111-000001d3”, “CALLEE=dontcare”) in new stack
– Executing [exten@sub-record-check:5] ExecIf(“PJSIP/1111-000001d3”, “0?Set(CALLEE=dontcare)”) in new stack
– Executing [exten@sub-record-check:6] GotoIf(“PJSIP/1111-000001d3”, “0?callee”) in new stack
– Executing [exten@sub-record-check:7] GotoIf(“PJSIP/1111-000001d3”, “1?caller”) in new stack
– Goto (sub-record-check,exten,13)
– Executing [exten@sub-record-check:13] Set(“PJSIP/1111-000001d3”, “RECMODE=dontcare”) in new stack
– Executing [exten@sub-record-check:14] Set(“PJSIP/1111-000001d3”, “CALLERRECMODE=dontcare”) in new stack
– Executing [exten@sub-record-check:15] Set(“PJSIP/1111-000001d3”, “CALEERECMODE=dontcare”) in new stack
– Executing [exten@sub-record-check:16] GotoIf(“PJSIP/1111-000001d3”, “0?processnormal”) in new stack
– Executing [exten@sub-record-check:17] ExecIf(“PJSIP/1111-000001d3”, “0?Set(RECMODE=dontcare)”) in new stack
– Executing [exten@sub-record-check:18] ExecIf(“PJSIP/1111-000001d3”, “0?Set(RECMODE=dontcare)”) in new stack
– Executing [exten@sub-record-check:19] ExecIf(“PJSIP/1111-000001d3”, “0?Set(RECMODE=dontcare)”) in new stack
– Executing [exten@sub-record-check:20] ExecIf(“PJSIP/1111-000001d3”, “0?Set(RECMODE=dontcare)”) in new stack
– Executing [exten@sub-record-check:21] ExecIf(“PJSIP/1111-000001d3”, “0?Set(RECMODE=dontcare)”) in new stack
– Executing [exten@sub-record-check:22] ExecIf(“PJSIP/1111-000001d3”, “1?Set(RECMODE=dontcare)”) in new stack
– Executing [exten@sub-record-check:23] Gosub(“PJSIP/1111-000001d3”, “recordcheck,1(dontcare,internal,999)”) in new stack
– Executing [recordcheck@sub-record-check:1] NoOp(“PJSIP/1111-000001d3”, “Starting recording check against dontcare”) in new stack
– Executing [recordcheck@sub-record-check:2] Goto(“PJSIP/1111-000001d3”, “dontcare”) in new stack
– Goto (sub-record-check,recordcheck,3)
– Executing [recordcheck@sub-record-check:3] Return(“PJSIP/1111-000001d3”, “”) in new stack
– Executing [exten@sub-record-check:24] Return(“PJSIP/1111-000001d3”, “”) in new stack
– Executing [s@macro-exten-vm:27] GotoIf(“PJSIP/1111-000001d3”, “1?macrodial”) in new stack
– Goto (macro-exten-vm,s,33)
– Executing [s@macro-exten-vm:33] GosubIf(“PJSIP/1111-000001d3”, “0?clrheader,1()”) in new stack
– Executing [s@macro-exten-vm:34] Gosub(“PJSIP/1111-000001d3”, “macro-dial-one,s,1(,HhTtr,999)”) in new stack
– Executing [s@macro-dial-one:1] Set(“PJSIP/1111-000001d3”, “DEXTEN=999”) in new stack
– Executing [s@macro-dial-one:2] Set(“PJSIP/1111-000001d3”, “__CRM_SOURCE=1111”) in new stack
– Executing [s@macro-dial-one:3] Set(“PJSIP/1111-000001d3”, “__MCEXTTOCALL=999”) in new stack
– Executing [s@macro-dial-one:4] Set(“PJSIP/1111-000001d3”, “__MCMULTI=ebf9988d6b47d6e97cd1db100a924c23”) in new stack
– Executing [s@macro-dial-one:5] ExecIf(“PJSIP/1111-000001d3”, “0?Set(__EXTTOCALL=999)”) in new stack
– Executing [s@macro-dial-one:6] Set(“PJSIP/1111-000001d3”, “DIALSTATUS_CW=”) in new stack
– Executing [s@macro-dial-one:7] GosubIf(“PJSIP/1111-000001d3”, “0?screen,1()”) in new stack
– Executing [s@macro-dial-one:8] GosubIf(“PJSIP/1111-000001d3”, “0?cf,1()”) in new stack
– Executing [s@macro-dial-one:9] GotoIf(“PJSIP/1111-000001d3”, “1?skip1”) in new stack
– Goto (macro-dial-one,s,12)
– Executing [s@macro-dial-one:12] GotoIf(“PJSIP/1111-000001d3”, “0?nodial”) in new stack
– Executing [s@macro-dial-one:13] GotoIf(“PJSIP/1111-000001d3”, “0?continue”) in new stack
– Executing [s@macro-dial-one:14] Set(“PJSIP/1111-000001d3”, “EXTHASCW=ENABLED”) in new stack
– Executing [s@macro-dial-one:15] GotoIf(“PJSIP/1111-000001d3”, “0?next1:cwinusebusy”) in new stack
– Goto (macro-dial-one,s,27)
– Executing [s@macro-dial-one:27] GotoIf(“PJSIP/1111-000001d3”, “0?next3:continue”) in new stack
– Goto (macro-dial-one,s,29)
– Executing [s@macro-dial-one:29] GotoIf(“PJSIP/1111-000001d3”, “0?nodial”) in new stack
– Executing [s@macro-dial-one:30] GosubIf(“PJSIP/1111-000001d3”, “1?dstring,1():dlocal,1()”) in new stack
– Executing [dstring@macro-dial-one:1] Set(“PJSIP/1111-000001d3”, “DSTRING=”) in new stack
– Executing [dstring@macro-dial-one:2] Set(“PJSIP/1111-000001d3”, “DEVICES=999”) in new stack
– Executing [dstring@macro-dial-one:3] ExecIf(“PJSIP/1111-000001d3”, “0?Return()”) in new stack
– Executing [dstring@macro-dial-one:4] ExecIf(“PJSIP/1111-000001d3”, “0?Set(DEVICES=99)”) in new stack
– Executing [dstring@macro-dial-one:5] Set(“PJSIP/1111-000001d3”, “LOOPCNT=1”) in new stack
– Executing [dstring@macro-dial-one:6] Set(“PJSIP/1111-000001d3”, “ITER=1”) in new stack
– Executing [dstring@macro-dial-one:7] Set(“PJSIP/1111-000001d3”, “THISDIAL=PJSIP/999”) in new stack
– Executing [dstring@macro-dial-one:8] GotoIf(“PJSIP/1111-000001d3”, “0?docheck”) in new stack
– Executing [dstring@macro-dial-one:9] NoOp(“PJSIP/1111-000001d3”, “Debug: Found PJSIP Destination PJSIP/999”) in new stack
– Executing [dstring@macro-dial-one:10] GotoIf(“PJSIP/1111-000001d3”, “0?doset”) in new stack
– Executing [dstring@macro-dial-one:11] NoOp(“PJSIP/1111-000001d3”, “Debug: Updating PJSIP Destination with PJSIP_DIAL_CONTACTS”) in new stack
– Executing [dstring@macro-dial-one:12] Set(“PJSIP/1111-000001d3”, “THISDIAL=”) in new stack
– Executing [dstring@macro-dial-one:13] ExecIf(“PJSIP/1111-000001d3”, “1?Set(DIALSTATUS=CHANUNAVAIL)”) in new stack
– Executing [dstring@macro-dial-one:14] GotoIf(“PJSIP/1111-000001d3”, “1?skipset”) in new stack
– Goto (macro-dial-one,dstring,16)
– Executing [dstring@macro-dial-one:16] Set(“PJSIP/1111-000001d3”, “ITER=2”) in new stack
– Executing [dstring@macro-dial-one:17] GotoIf(“PJSIP/1111-000001d3”, “0?begin”) in new stack
– Executing [dstring@macro-dial-one:18] ExecIf(“PJSIP/1111-000001d3”, “1?Return()”) in new stack
– Executing [s@macro-dial-one:31] GotoIf(“PJSIP/1111-000001d3”, “1?nodial”) in new stack
– Goto (macro-dial-one,s,64)
– Executing [s@macro-dial-one:64] NoOp(“PJSIP/1111-000001d3”, “”) in new stack
– Executing [s@macro-dial-one:65] ExecIf(“PJSIP/1111-000001d3”, “0?Set(DIALSTATUS=NOANSWER)”) in new stack
– Executing [s@macro-dial-one:66] NoOp(“PJSIP/1111-000001d3”, “Returned from dial-one with nothing to call and DIALSTATUS: CHANUNAVAIL”) in new stack
– Executing [s@macro-dial-one:67] Return(“PJSIP/1111-000001d3”, “”) in new stack
– Executing [s@macro-exten-vm:35] Set(“PJSIP/1111-000001d3”, “SV_DIALSTATUS=CHANUNAVAIL”) in new stack
– Executing [s@macro-exten-vm:36] GosubIf(“PJSIP/1111-000001d3”, “0?docfu,1()”) in new stack
– Executing [s@macro-exten-vm:37] GosubIf(“PJSIP/1111-000001d3”, “0?docfb,1()”) in new stack
– Executing [s@macro-exten-vm:38] Set(“PJSIP/1111-000001d3”, “DIALSTATUS=CHANUNAVAIL”) in new stack
– Executing [s@macro-exten-vm:39] ExecIf(“PJSIP/1111-000001d3”, “0?Return()”) in new stack
– Executing [s@macro-exten-vm:40] GotoIf(“PJSIP/1111-000001d3”, “1?s-CHANUNAVAIL,1”) in new stack
– Goto (macro-exten-vm,s-CHANUNAVAIL,1)
– Executing [s-CHANUNAVAIL@macro-exten-vm:1] GotoIf(“PJSIP/1111-000001d3”, “0?exit,1”) in new stack
– Executing [s-CHANUNAVAIL@macro-exten-vm:2] PlayTones(“PJSIP/1111-000001d3”, “congestion”) in new stack
– Executing [s-CHANUNAVAIL@macro-exten-vm:3] Congestion(“PJSIP/1111-000001d3”, “10”) in new stack
== Spawn extension (macro-exten-vm, s-CHANUNAVAIL, 3) exited non-zero on ‘PJSIP/1111-000001d3’

Custom dialplan is loaded after the core dialplan. Because you have extension 999 your custom dialplan will never be hit because ext-local matches first. Plus I see no reference it routing the call to that custom context.

It’s not that it’s not working, it’s not even being used because nothing sends the call to it.

How do I get the freepbx system to answer it lol

999 is suppose to be an extension that answers rings then calls out

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.