I have a pretty vanilla setup of FreePBX 17. I have a SIP trunk configured with a provider and there are several extensions defined. There are several LANs, but all IPv4 addressing falls within 192.168.0.0/16. If I call between two extensions, the call is always routed via the FreePBX server. Direct Media is set to Yes for all extensions. In the General SIP settings, NAT section the external address is automatically detected and the local networks list contains 192.168.0.0/16 and 10.0.0.0/8.
I thought that by default extension to extension calls would be direct?
No, it is not. SIP has two parts, signalling and media. The signalling will always go through the PBX, that is what a Back-to-Back User Agent is for. The Direct Media setting will allow the media to flow between the two phones directly but all signalling still hits the PBX.
Yes, I understand the SIP signalling will be between the SIP Server and the extensions. What I am seeing is the RTP stream going via the SIP Server and not direct between the extensions.
And when it comes to FreePBX, conditions have to be precisely right for it to happen. No transcoding, no Local channels, no NAT, no recording, no DTMF features, same packetization (for example 20ms on both sides).
Most things are default. DTMF is set to RFC 4733 on all extensions, Recording is set to ‘Don’t care’. Both devices are Polycom VVX x50 series phones.
You’d need to collect an Asterisk log, and with debug enabled[1] it would show exactly what is going on and its decision making.
1057 [2025-04-29 16:24:10] VERBOSE[1313279] netsock2.c: Using SIP RTP Audio TOS bits 184
1058 [2025-04-29 16:24:10] VERBOSE[1313279] netsock2.c: Using SIP RTP Audio TOS bits 184 in TCLASS field.
1059 [2025-04-29 16:24:10] VERBOSE[1313279] netsock2.c: Using SIP RTP Audio CoS mark 5
1060 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@from-internal:1] GotoIf(“PJSIP/4004-0000000a”, “1?ext-local,4008,1:followme-check,4008,1”) in new stack
1061 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (ext-local,4008,1)
1062 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@ext-local:1] Set(“PJSIP/4004-0000000a”, “__RINGTIMER=15”) in new stack
1063 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@ext-local:2] ExecIf(“PJSIP/4004-0000000a”, “0?Set(__CWIGNORE=)”) in new stack
1064 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@ext-local:3] Gosub(“PJSIP/4004-0000000a”, “macro-exten-vm,s,1(4008,4008,0,0,0)”) in new stack
1065 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:1] Gosub(“PJSIP/4004-0000000a”, “macro-user-callerid,s,1(4008,4008,macro-exten-vm)”) in new stack
1066 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:1] Set(“PJSIP/4004-0000000a”, “TOUCH_MONITOR=1745940250.15”) in new stack
1067 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:2] Set(“PJSIP/4004-0000000a”, “CHANCONTEXT=”) in new stack
1068 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:3] Set(“PJSIP/4004-0000000a”, “CHANCONTEXT=”) in new stack
1069 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:4] Set(“PJSIP/4004-0000000a”, “CHANEXTENCONTEXT=4004-0000000a”) in new stack
1070 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:5] Set(“PJSIP/4004-0000000a”, “CHANEXTEN=4004-0000000a”) in new stack
1071 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:6] Set(“PJSIP/4004-0000000a”, “CALLERID(number)=4004”) in new stack
1072 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:7] Set(“PJSIP/4004-0000000a”, “AMPUSER=4004”) in new stack
1073 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:8] Set(“PJSIP/4004-0000000a”, “HOTDESCKCHAN=4004-0000000a”) in new stack
1074 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:9] Set(“PJSIP/4004-0000000a”, “HOTDESKEXTEN=4004”) in new stack
1075 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:10] Set(“PJSIP/4004-0000000a”, “HOTDESKCALL=0”) in new stack
1076 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:11] ExecIf(“PJSIP/4004-0000000a”, “0?Set(HOTDESKCALL=1)”) in new stack
1077 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:12] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CALLERID(name)=)”) in new stack
1078 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:13] GotoIf(“PJSIP/4004-0000000a”, “0?report”) in new stack
1079 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:14] ExecIf(“PJSIP/4004-0000000a”, “1?Set(REALCALLERIDNUM=4004)”) in new stack
1080 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:15] Set(“PJSIP/4004-0000000a”, “AMPUSER=4004”) in new stack
1081 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:16] GotoIf(“PJSIP/4004-0000000a”, “0?limit”) in new stack
1082 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:17] Set(“PJSIP/4004-0000000a”, “AMPUSERCIDNAME=4004”) in new stack
1083 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:18] ExecIf(“PJSIP/4004-0000000a”, “0?Set(__CIDMASQUERADING=TRUE)”) in new stack
1084 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:19] GotoIf(“PJSIP/4004-0000000a”, “0?report”) in new stack
1085 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:20] Set(“PJSIP/4004-0000000a”, “AMPUSERCID=4004”) in new stack
1086 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:21] Set(“PJSIP/4004-0000000a”, “__DIAL_OPTIONS=HhTtr”) in new stack
1087 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:22] Set(“PJSIP/4004-0000000a”, “CALLERID(all)=“4004” <4004>”) in new stack
1088 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:23] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CUSDIAL=4008)”) in new stack
1089 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:24] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CALLERID(all)=“4004” <4004>)”) in new stack
1090 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:25] GotoIf(“PJSIP/4004-0000000a”, “0?limit”) in new stack
1091 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:26] ExecIf(“PJSIP/4004-0000000a”, “0?Set(GROUP(concurrency_limit)=4004)”) in new stack
1092 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:27] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CHANNEL(language)=)”) in new stack
1093 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:28] NoOp(“PJSIP/4004-0000000a”, “Macro depricated!! To keep the same line numbers”) in new stack
1094 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:29] NoOp(“PJSIP/4004-0000000a”, “Macro depricated !! To keep the same line numbers”) in new stack
1095 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:30] GotoIf(“PJSIP/4004-0000000a”, “0?continue”) in new stack
1096 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:31] ExecIf(“PJSIP/4004-0000000a”, “1?Set(__CALLEE_ACCOUNCODE=)”) in new stack
1097 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:32] Set(“PJSIP/4004-0000000a”, “__TTL=64”) in new stack
1098 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:33] GotoIf(“PJSIP/4004-0000000a”, “1?continue”) in new stack
1099 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-user-callerid,s,49)
1100 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:49] Set(“PJSIP/4004-0000000a”, “CALLERID(number)=4004”) in new stack
1101 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:50] Set(“PJSIP/4004-0000000a”, “CALLERID(name)=4004”) in new stack
1102 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:51] GotoIf(“PJSIP/4004-0000000a”, “0?cnum”) in new stack
1103 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:52] Set(“PJSIP/4004-0000000a”, “__MCNUM=4004”) in new stack
1104 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:53] Set(“PJSIP/4004-0000000a”, “__MCNAME=4004”) in new stack
1105 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:54] Set(“PJSIP/4004-0000000a”, “__MCEXTEN=4004”) in new stack
1106 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:55] Set(“PJSIP/4004-0000000a”, “__MCORGCHAN=PJSIP/4004-0000000a”) in new stack
1107 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:56] Set(“PJSIP/4004-0000000a”, “CDR(cnam)=4004”) in new stack
1108 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:57] Set(“PJSIP/4004-0000000a”, “CDR(cnum)=4004”) in new stack
1109 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-user-callerid:58] Return(“PJSIP/4004-0000000a”, “”) in new stack
1110 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:2] Set(“PJSIP/4004-0000000a”, “RingGroupMethod=none”) in new stack
1111 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:3] Set(“PJSIP/4004-0000000a”, “__EXTTOCALL=4008”) in new stack
1112 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:4] Set(“PJSIP/4004-0000000a”, “__PICKUPMARK=4008”) in new stack
1113 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:5] Set(“PJSIP/4004-0000000a”, “RT=15”) in new stack
1114 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:6] GotoIf(“PJSIP/4004-0000000a”, “1?startcheck:exitcheck”) in new stack
1115 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-exten-vm,s,7)
1116 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:7] GotoIf(“PJSIP/4004-0000000a”, “0?featureSIP:featurePJSIP”) in new stack
1117 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-exten-vm,s,11)
1118 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:11] ExecIf(“PJSIP/4004-0000000a”, “0?Gosub(macro-vm,4008,DIRECTDIAL,)”) in new stack
1119 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:12] ExecIf(“PJSIP/4004-0000000a”, “0?Return()”) in new stack
1120 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:13] GotoIf(“PJSIP/4004-0000000a”, “1?featuremoniPJSIP:featuremoniSIP”) in new stack
1121 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-exten-vm,s,14)
1122 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:14] ExecIf(“PJSIP/4004-0000000a”, “0?ChanSpy(PJSIP/4008,q)”) in new stack
1123 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:15] ExecIf(“PJSIP/4004-0000000a”, “0?Return()”) in new stack
1124 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:16] GotoIf(“PJSIP/4004-0000000a”, “1?check-ext-intercom:featuremoniSIP”) in new stack
1125 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-exten-vm,s,19)
1126 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:19] GotoIf(“PJSIP/4004-0000000a”, “0?ext-intercomSIP:ext-intercomPJSIP”) in new stack
1127 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-exten-vm,s,20)
1128 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:20] ExecIf(“PJSIP/4004-0000000a”, “0?Gosub(ext-intercom,*804008,1())”) in new stack
1129 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:21] ExecIf(“PJSIP/4004-0000000a”, “0?Return()”) in new stack
1130 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:22] GotoIf(“PJSIP/4004-0000000a”, “1?exitcheck:ext-intercomSIP”) in new stack
1131 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-exten-vm,s,25)
1132 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:25] NoOp(“PJSIP/4004-0000000a”, “Exiting Checks”) in new stack
1133 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:26] Gosub(“PJSIP/4004-0000000a”, “sub-record-check,s,1(exten,4008,dontcare)”) in new stack
1134 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:1] GotoIf(“PJSIP/4004-0000000a”, “0?initialized”) in new stack
1135 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:2] Set(“PJSIP/4004-0000000a”, “__REC_STATUS=INITIALIZED”) in new stack
1136 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:3] Set(“PJSIP/4004-0000000a”, “NOW=1745940250”) in new stack
1137 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:4] Set(“PJSIP/4004-0000000a”, “__DAY=29”) in new stack
1138 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:5] Set(“PJSIP/4004-0000000a”, “__MONTH=04”) in new stack
1139 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:6] Set(“PJSIP/4004-0000000a”, “__YEAR=2025”) in new stack
1140 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:7] Set(“PJSIP/4004-0000000a”, “__TIMESTR=20250429-162410”) in new stack
1141 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:8] Set(“PJSIP/4004-0000000a”, “__FROMEXTEN=4004”) in new stack
1142 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:9] Set(“PJSIP/4004-0000000a”, “__MON_FMT=wav”) in new stack
1143 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:10] NoOp(“PJSIP/4004-0000000a”, “Recordings initialized”) in new stack
1144 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:11] ExecIf(“PJSIP/4004-0000000a”, “0?Set(ARG3=dontcare)”) in new stack
1145 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:12] Set(“PJSIP/4004-0000000a”, “REC_POLICY_MODE_SAVE=”) in new stack
1146 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:13] ExecIf(“PJSIP/4004-0000000a”, “0?Set(REC_STATUS=NO)”) in new stack
1147 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:14] GotoIf(“PJSIP/4004-0000000a”, “5?checkaction”) in new stack
1148 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (sub-record-check,s,17)
1149 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-record-check:17] GotoIf(“PJSIP/4004-0000000a”, “1?sub-record-check,exten,1”) in new stack
1150 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (sub-record-check,exten,1)
1151 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:1] NoOp(“PJSIP/4004-0000000a”, “Exten Recording Check between 4004 and 4008”) in new stack
1152 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:2] Set(“PJSIP/4004-0000000a”, “CALLTYPE=internal”) in new stack
1153 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:3] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CALLTYPE=)”) in new stack
1154 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:4] Set(“PJSIP/4004-0000000a”, “CALLEE=dontcare”) in new stack
1155 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:5] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CALLEE=dontcare)”) in new stack
1156 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:6] GotoIf(“PJSIP/4004-0000000a”, “0?callee”) in new stack
1157 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:7] GotoIf(“PJSIP/4004-0000000a”, “1?caller”) in new stack
1158 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (sub-record-check,exten,13)
1159 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:13] Set(“PJSIP/4004-0000000a”, “RECMODE=dontcare”) in new stack
1160 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:14] Set(“PJSIP/4004-0000000a”, “CALLERRECMODE=dontcare”) in new stack
1161 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:15] Set(“PJSIP/4004-0000000a”, “CALEERECMODE=dontcare”) in new stack
1162 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:16] GotoIf(“PJSIP/4004-0000000a”, “0?processnormal”) in new stack
1163 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:17] ExecIf(“PJSIP/4004-0000000a”, “0?Set(RECMODE=dontcare)”) in new stack
1164 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:18] ExecIf(“PJSIP/4004-0000000a”, “0?Set(RECMODE=dontcare)”) in new stack
1165 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:19] ExecIf(“PJSIP/4004-0000000a”, “0?Set(RECMODE=dontcare)”) in new stack
1166 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:20] ExecIf(“PJSIP/4004-0000000a”, “0?Set(RECMODE=dontcare)”) in new stack
1167 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:21] ExecIf(“PJSIP/4004-0000000a”, “0?Set(RECMODE=dontcare)”) in new stack
1168 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:22] ExecIf(“PJSIP/4004-0000000a”, “1?Set(RECMODE=dontcare)”) in new stack
1169 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:23] Gosub(“PJSIP/4004-0000000a”, “recordcheck,1(dontcare,internal,4008)”) in new stack
1170 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [recordcheck@sub-record-check:1] NoOp(“PJSIP/4004-0000000a”, “Starting recording check against dontcare”) in new stack
1171 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [recordcheck@sub-record-check:2] Goto(“PJSIP/4004-0000000a”, “dontcare”) in new stack
1172 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (sub-record-check,recordcheck,3)
1173 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [recordcheck@sub-record-check:3] Return(“PJSIP/4004-0000000a”, “”) in new stack
1174 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [exten@sub-record-check:24] Return(“PJSIP/4004-0000000a”, “”) in new stack
1175 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:27] GotoIf(“PJSIP/4004-0000000a”, “1?macrodial”) in new stack
1176 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-exten-vm,s,33)
1177 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:33] GosubIf(“PJSIP/4004-0000000a”, “0?clrheader,1()”) in new stack
1178 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-exten-vm:34] Gosub(“PJSIP/4004-0000000a”, “macro-dial-one,s,1(15,HhTtr,4008)”) in new stack
1179 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:1] Set(“PJSIP/4004-0000000a”, “DEXTEN=4008”) in new stack
1180 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:2] Set(“PJSIP/4004-0000000a”, “__CRM_SOURCE=4004”) in new stack
1181 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:3] Set(“PJSIP/4004-0000000a”, “__MCEXTTOCALL=4008”) in new stack
1182 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:4] Set(“PJSIP/4004-0000000a”, “__MCMULTI=0ba895103595684017e2674b71dfc041”) in new stack
1183 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:5] ExecIf(“PJSIP/4004-0000000a”, “0?Set(__EXTTOCALL=4008)”) in new stack
1184 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:6] Set(“PJSIP/4004-0000000a”, “DIALSTATUS_CW=”) in new stack
1185 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:7] GosubIf(“PJSIP/4004-0000000a”, “0?screen,1()”) in new stack
1186 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:8] GosubIf(“PJSIP/4004-0000000a”, “0?cf,1()”) in new stack
1187 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:9] GotoIf(“PJSIP/4004-0000000a”, “1?skip1”) in new stack
1188 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-dial-one,s,12)
1189 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:12] GotoIf(“PJSIP/4004-0000000a”, “0?nodial”) in new stack
1190 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:13] GotoIf(“PJSIP/4004-0000000a”, “0?continue”) in new stack
1191 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:14] Set(“PJSIP/4004-0000000a”, “EXTHASCW=ENABLED”) in new stack
1192 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:15] GotoIf(“PJSIP/4004-0000000a”, “0?next1:cwinusebusy”) in new stack
1193 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-dial-one,s,27)
1194 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:27] GotoIf(“PJSIP/4004-0000000a”, “0?next3:continue”) in new stack
1195 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-dial-one,s,29)
1196 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:29] GotoIf(“PJSIP/4004-0000000a”, “0?nodial”) in new stack
1197 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:30] GosubIf(“PJSIP/4004-0000000a”, “1?dstring,1():dlocal,1()”) in new stack
1198 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:1] Set(“PJSIP/4004-0000000a”, “DSTRING=”) in new stack
1199 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:2] Set(“PJSIP/4004-0000000a”, “DEVICES=4008”) in new stack
1200 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:3] ExecIf(“PJSIP/4004-0000000a”, “0?Return()”) in new stack
1201 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:4] ExecIf(“PJSIP/4004-0000000a”, “0?Set(DEVICES=008)”) in new stack
1202 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:5] Set(“PJSIP/4004-0000000a”, “LOOPCNT=1”) in new stack
1203 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:6] Set(“PJSIP/4004-0000000a”, “ITER=1”) in new stack
1204 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:7] Set(“PJSIP/4004-0000000a”, “THISDIAL=PJSIP/4008”) in new stack
1205 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:8] GotoIf(“PJSIP/4004-0000000a”, “0?docheck”) in new stack
1206 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:9] NoOp(“PJSIP/4004-0000000a”, “Debug: Found PJSIP Destination PJSIP/4008”) in new stack
1207 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:10] GotoIf(“PJSIP/4004-0000000a”, “0?doset”) in new stack
1208 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:11] NoOp(“PJSIP/4004-0000000a”, “Debug: Updating PJSIP Destination with PJSIP_DIAL_CONTACTS”) in new stack
1209 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:12] Set(“PJSIP/4004-0000000a”, “THISDIAL=PJSIP/4008/sip:[email protected]:5060”) in new stack
1210 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:13] ExecIf(“PJSIP/4004-0000000a”, “0?Set(DIALSTATUS=CHANUNAVAIL)”) in new stack
1211 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:14] GotoIf(“PJSIP/4004-0000000a”, “0?skipset”) in new stack
1212 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:15] Set(“PJSIP/4004-0000000a”, “DSTRING=PJSIP/4008/sip:[email protected]:5060&”) in new stack
1213 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:16] Set(“PJSIP/4004-0000000a”, “ITER=2”) in new stack
1214 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:17] GotoIf(“PJSIP/4004-0000000a”, “0?begin”) in new stack
1215 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:18] ExecIf(“PJSIP/4004-0000000a”, “0?Return()”) in new stack
1216 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:19] Set(“PJSIP/4004-0000000a”, “DSTRING=PJSIP/4008/sip:[email protected]:5060”) in new stack
1217 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [dstring@macro-dial-one:20] Return(“PJSIP/4004-0000000a”, “”) in new stack
1218 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:31] GotoIf(“PJSIP/4004-0000000a”, “0?nodial”) in new stack
1219 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:32] GotoIf(“PJSIP/4004-0000000a”, “0?skiptrace”) in new stack
1220 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:33] GosubIf(“PJSIP/4004-0000000a”, “1?ctset,1():ctclear,1()”) in new stack
1221 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [ctset@macro-dial-one:1] Set(“PJSIP/4004-0000000a”, “DB(CALLTRACE/4008)=4004”) in new stack
1222 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [ctset@macro-dial-one:2] Return(“PJSIP/4004-0000000a”, “”) in new stack
1223 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:34] Set(“PJSIP/4004-0000000a”, “D_OPTIONS=HhTtr”) in new stack
1224 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:35] GosubIf(“PJSIP/4004-0000000a”, “0?func-set-sipheader,s,1(Alert-Info,)”) in new stack
1225 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:36] NoOp(“PJSIP/4004-0000000a”, "Blind Transfer: , Attended Transfer: , User: 4004, Alert Info: ") in new stack
1226 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:37] ExecIf(“PJSIP/4004-0000000a”, “1?Set(ALERT_INFO=)”) in new stack
1227 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:38] ExecIf(“PJSIP/4004-0000000a”, “0?Set(ALERT_INFO=)”) in new stack
1228 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:39] ExecIf(“PJSIP/4004-0000000a”, “0?Set(ALERT_INFO=)”) in new stack
1229 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:40] ExecIf(“PJSIP/4004-0000000a”, “0?Set(ALERT_INFO=Normal;volume=)”) in new stack
1230 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:41] ExecIf(“PJSIP/4004-0000000a”, “0?Set(ALERT_INFO=Normal;volume=)”) in new stack
1231 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:42] GosubIf(“PJSIP/4004-0000000a”, “0?func-set-sipheader,s,1(Alert-Info,)”) in new stack
1232 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:43] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CHANNEL(musicclass)=)”) in new stack
1233 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:44] GosubIf(“PJSIP/4004-0000000a”, “0?qwait,1()”) in new stack
1234 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:45] Set(“PJSIP/4004-0000000a”, “__CWIGNORE=”) in new stack
1235 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:46] Set(“PJSIP/4004-0000000a”, “__KEEPCID=TRUE”) in new stack
1236 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:47] GotoIf(“PJSIP/4004-0000000a”, “0?usegoto,1”) in new stack
1237 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:48] GotoIf(“PJSIP/4004-0000000a”, “0?godial”) in new stack
1238 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:49] Gosub(“PJSIP/4004-0000000a”, “sub-presencestate-display,s,1(4008)”) in new stack
1239 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@sub-presencestate-display:1] Goto(“PJSIP/4004-0000000a”, “state-available,1”) in new stack
1240 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (sub-presencestate-display,state-available,1)
1241 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [state-available@sub-presencestate-display:1] Set(“PJSIP/4004-0000000a”, “PRESENCESTATE_DISPLAY=(Available)”) in new stack
1242 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [state-available@sub-presencestate-display:2] Return(“PJSIP/4004-0000000a”, “”) in new stack
1243 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:50] Set(“PJSIP/4004-0000000a”, “CONNECTEDLINE(name,i)=4008 (Available)”) in new stack
1244 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:51] Set(“PJSIP/4004-0000000a”, “CONNECTEDLINE(num)=4008”) in new stack
1245 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:52] Set(“PJSIP/4004-0000000a”, “D_OPTIONS=HhTtr”) in new stack
1246 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:53] Gosub(“PJSIP/4004-0000000a”, “macro-dialout-one-predial-hook,s,1()”) in new stack
1247 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dialout-one-predial-hook:1] Return(“PJSIP/4004-0000000a”, “”) in new stack
1248 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:54] ExecIf(“PJSIP/4004-0000000a”, “0?Set(D_OPTIONS=HhtrI)”) in new stack
1249 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:55] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CWRING=r(callwaiting)):Set(CWRING=)”) in new stack
1250 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:56] NoOp(“PJSIP/4004-0000000a”, “”) in new stack
1251 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:57] ExecIf(“PJSIP/4004-0000000a”, “0?Set(D_OPTIONS=Hhtr)”) in new stack
1252 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:58] ExecIf(“PJSIP/4004-0000000a”, “0?Set(D_OPTIONS=HhTtrg)”) in new stack
1253 [2025-04-29 16:24:10] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-dial-one:59] Gosub(“PJSIP/4004-0000000a”, “dialOne-with-exten,4008,1(15)”) in new stack
1254 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@dialOne-with-exten:1] Set(“PJSIP/4004-0000000a”, “CHANNEL(hangup_handler_push)=app-missedcall-hangup,1”) in new stack
1255 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@dialOne-with-exten:2] Dial(“PJSIP/4004-0000000a”, “PJSIP/4008/sip:[email protected]:5060,15,HhTtrb(func-apply-sipheaders^s^1)”) in new stack
1256 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] app_stack.c: PJSIP/4008-0000000b Internal Gosub(func-apply-sipheaders,s,1) start
1257 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:1] ExecIf(“PJSIP/4008-0000000b”, “0?Set(CHANNEL(hangup_handler_push)=crm-hangup,s,1)”) in new stack
1258 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:2] NoOp(“PJSIP/4008-0000000b”, “Applying SIP Headers to channel PJSIP/4008-0000000b”) in new stack
1259 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:3] Set(“PJSIP/4008-0000000b”, “localchan=4008-0000000b”) in new stack
1260 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:4] Set(“PJSIP/4008-0000000b”, “DialMCEXT=4008”) in new stack
1261 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:5] Set(“PJSIP/4008-0000000b”, “CHANNEL(hangup_handler_push)=app-missedcall-hangup,4008,1”) in new stack
1262 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:6] Set(“PJSIP/4008-0000000b”, “Dchan=4008-0000000b”) in new stack
1263 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:7] Set(“PJSIP/4008-0000000b”, “TECH=PJSIP”) in new stack
1264 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:8] Set(“PJSIP/4008-0000000b”, “SIPHEADERKEYS=”) in new stack
1265 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:9] While(“PJSIP/4008-0000000b”, “0”) in new stack
1266 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] app_while.c: Jumping to priority 15
1267 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] pbx.c: Executing [s@func-apply-sipheaders:16] Return(“PJSIP/4008-0000000b”, “”) in new stack
1268 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] app_stack.c: Spawn extension (from-internal, 4008, 1) exited non-zero on ‘PJSIP/4008-0000000b’
1269 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] app_stack.c: PJSIP/4008-0000000b Internal Gosub(func-apply-sipheaders,s,1) complete GOSUB_RETVAL=
1270 [2025-04-29 16:24:11] VERBOSE[4070029] netsock2.c: Using SIP RTP Audio TOS bits 184
1271 [2025-04-29 16:24:11] VERBOSE[4070029] netsock2.c: Using SIP RTP Audio TOS bits 184 in TCLASS field.
1272 [2025-04-29 16:24:11] VERBOSE[4070029] netsock2.c: Using SIP RTP Audio CoS mark 5
1273 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] app_dial.c: Called PJSIP/4008/sip:[email protected]:5060
1274 [2025-04-29 16:24:11] VERBOSE[148071][C-00000006] app_dial.c: PJSIP/4008-0000000b is ringing
1275 [2025-04-29 16:24:12] VERBOSE[148071][C-00000006] app_dial.c: PJSIP/4008-0000000b answered PJSIP/4004-0000000a
1276 [2025-04-29 16:24:12] VERBOSE[148079][C-00000006] bridge_channel.c: Channel PJSIP/4008-0000000b joined ‘simple_bridge’ basic-bridge <3287d5ed-b853-4bba-b3ed-dcf14ede7e55>
1277 [2025-04-29 16:24:12] VERBOSE[148071][C-00000006] bridge_channel.c: Channel PJSIP/4004-0000000a joined ‘simple_bridge’ basic-bridge <3287d5ed-b853-4bba-b3ed-dcf14ede7e55>
1278 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] bridge_channel.c: Channel PJSIP/4004-0000000a left ‘simple_bridge’ basic-bridge <3287d5ed-b853-4bba-b3ed-dcf14ede7e55>
1279 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] bridge_channel.c: Channel PJSIP/4008-0000000b left ‘simple_bridge’ basic-bridge <3287d5ed-b853-4bba-b3ed-dcf14ede7e55>
1280 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] app_stack.c: PJSIP/4008-0000000b Internal Gosub(app-missedcall-hangup,4008,1) start
1281 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:1] NoOp(“PJSIP/4008-0000000b”, “Dialed: 4008”) in new stack
1282 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:2] NoOp(“PJSIP/4008-0000000b”, “Caller: 4004”) in new stack
1283 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:3] GotoIf(“PJSIP/4008-0000000b”, “0?exit”) in new stack
1284 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:4] Set(“PJSIP/4008-0000000b”, “EXTENNUM=4008”) in new stack
1285 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:5] Set(“PJSIP/4008-0000000b”, “FEXTENNUM=4008”) in new stack
1286 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Spawn extension (dialOne-with-exten, 4008, 2) exited non-zero on ‘PJSIP/4004-0000000a’
1287 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [h@dialOne-with-exten:1] Gosub(“PJSIP/4004-0000000a”, “macro-hangupcall,s,1()”) in new stack
1288 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:6] GotoIf(“PJSIP/4008-0000000b”, “0?exit”) in new stack
1289 [2025-04-29 16:24:15] VERBOSE[148079][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:7] AGI(“PJSIP/4008-0000000b”, “agi://127.0.0.1/missedcallnotify.php,4008,4008,0,PJSIP/4008-0000000b,”) in new stack
1290 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-hangupcall:1] Set(“PJSIP/4004-0000000a”, “__MCVMSTATUS=”) in new stack
1291 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-hangupcall:2] Gosub(“PJSIP/4004-0000000a”, “app-missedcall-hangup,s,1()”) in new stack
1292 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@app-missedcall-hangup:1] NoOp(“PJSIP/4004-0000000a”, “Dialed: s”) in new stack
1293 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@app-missedcall-hangup:2] NoOp(“PJSIP/4004-0000000a”, “Caller: 4004”) in new stack
1294 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@app-missedcall-hangup:3] GotoIf(“PJSIP/4004-0000000a”, “0?exit”) in new stack
1295 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@app-missedcall-hangup:4] Set(“PJSIP/4004-0000000a”, “EXTENNUM=s”) in new stack
1296 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@app-missedcall-hangup:5] Set(“PJSIP/4004-0000000a”, “FEXTENNUM=s”) in new stack
1297 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@app-missedcall-hangup:6] GotoIf(“PJSIP/4004-0000000a”, “0?exit”) in new stack
1298 [2025-04-29 16:24:15] VERBOSE[148071][C-00000006] pbx.c: Executing [s@app-missedcall-hangup:7] AGI(“PJSIP/4004-0000000a”, “agi://127.0.0.1/missedcallnotify.php,s,s,0,PJSIP/4004-0000000a,ANSWER,”) in new stack
1299 [2025-04-29 16:24:16] VERBOSE[148079][C-00000006] res_agi.c: <PJSIP/4008-0000000b>AGI Script agi://127.0.0.1/missedcallnotify.php completed, returning 0
1300 [2025-04-29 16:24:16] VERBOSE[148079][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:8] Return(“PJSIP/4008-0000000b”, “”) in new stack
1301 [2025-04-29 16:24:16] VERBOSE[148079][C-00000006] app_stack.c: Spawn extension (from-internal, , 1) exited non-zero on ‘PJSIP/4008-0000000b’
1302 [2025-04-29 16:24:16] VERBOSE[148079][C-00000006] app_stack.c: PJSIP/4008-0000000b Internal Gosub(app-missedcall-hangup,4008,1) complete GOSUB_RETVAL=
1303 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] res_agi.c: <PJSIP/4004-0000000a>AGI Script agi://127.0.0.1/missedcallnotify.php completed, returning 0
1304 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [s@app-missedcall-hangup:8] Return(“PJSIP/4004-0000000a”, “”) in new stack
1305 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-hangupcall:3] UserEvent(“PJSIP/4004-0000000a”, “MES,RTPAUDIOQOSMESBRIDGED:,RTPAUDIOQOSMES: minrxmes=000.000000; maxrxmes=000.000000; avgrxmes=000.000000; stdevrxmes=000.000091; mintxmes=000.000000; maxtxmes=000.000000; avgtxmes=000.000000; stdevtxmes=000.000000;”) in new stack
1306 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-hangupcall:4] GotoIf(“PJSIP/4004-0000000a”, “1?theend”) in new stack
1307 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx_builtins.c: Goto (macro-hangupcall,s,6)
1308 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-hangupcall:6] ExecIf(“PJSIP/4004-0000000a”, “0?Set(CDR(recordingfile)=)”) in new stack
1309 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [s@macro-hangupcall:7] Hangup(“PJSIP/4004-0000000a”, “”) in new stack
1310 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Spawn extension (macro-hangupcall, s, 7) exited non-zero on ‘PJSIP/4004-0000000a’
1311 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] app_stack.c: PJSIP/4004-0000000a Internal Gosub(app-missedcall-hangup,4008,1) start
1312 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:1] NoOp(“PJSIP/4004-0000000a”, “Dialed: 4008”) in new stack
1313 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:2] NoOp(“PJSIP/4004-0000000a”, “Caller: 4004”) in new stack
1314 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:3] GotoIf(“PJSIP/4004-0000000a”, “0?exit”) in new stack
1315 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:4] Set(“PJSIP/4004-0000000a”, “EXTENNUM=4008”) in new stack
1316 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:5] Set(“PJSIP/4004-0000000a”, “FEXTENNUM=4008”) in new stack
1317 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:6] GotoIf(“PJSIP/4004-0000000a”, “0?exit”) in new stack
1318 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:7] AGI(“PJSIP/4004-0000000a”, “agi://127.0.0.1/missedcallnotify.php,4008,4008,0,PJSIP/4004-0000000a,ANSWER,”) in new stack
1319 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] res_agi.c: <PJSIP/4004-0000000a>AGI Script agi://127.0.0.1/missedcallnotify.php completed, returning 0
1320 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] pbx.c: Executing [4008@app-missedcall-hangup:8] Return(“PJSIP/4004-0000000a”, “”) in new stack
1321 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] app_stack.c: Spawn extension (macro-hangupcall, s, 7) exited non-zero on ‘PJSIP/4004-0000000a’
1322 [2025-04-29 16:24:16] VERBOSE[148071][C-00000006] app_stack.c: PJSIP/4004-0000000a Internal Gosub(app-missedcall-hangup,4008,1) complete GOSUB_RETVAL=
Based on it being a simple_bridge, I’m guessing something fundamental prevented it from transitioning to even locally bridged RTP.
Would the HhTt dial options stop direct media since it indicates DTMF features?
Ooh yes, it would.
Both extensions I’m testing with are set to DTMF Signalling=RFC 4733, which is the default I think.
Yes, that sends DTMF over the RTP stream which means Asterisk has to be in the middle of the stream in order to see DTMF for DTMF features.
You would need to override the default dial options for extensions. They allow for the use of DTMF features codes for transfers and disconnecting the call. As long as dial options have DTMF features set, direct media will not happen.
HhTt need to be removed from the internal dial options.
Not that I understand it, but the Asterisk Dial Options in the advanced settings are set to HhTtr. I’m guessing its this that needs changing (or individually on each extension). What are the options? It just seems unnatural to me that all calls trombone via the SIP server.
If you mean what do the options themselves do, they’re documented[1]. They are DTMF options for hanging up or transferring.
It’s not unnatural at all and it is how it has been for PBX systems. The PBX is providing call features and in order to use those features you need to have it in the path. One touch recording is a common feature in PBX systems, that requires DTMF. One touch parking is a feature as well. Call recording itself is a very common feature.
Direct media breaks functionality provided by the PBX.
This is more fundamentally incompatible with direct media than the other cases. The other cases can be worked round, if you can successfully use SIP INFO, for DTMF, but recording the call requires the voice, as well as DTMF, to go through the PABX.
Disable all in-call feature codes.
I understand the logic, but it seems that scalability quickly becomes an issue. The SIP server just handling the signalling and the RTP streams go direct between endpoints just seems more ‘right’ to me. 30 years working in the enterprise and service provider space with IP is probably why…