PJSIP still has bugs

Unrelated to the topic of this thread, but you can bulk import users into groups by using Bulk Handler to modify your user groups.

I was not sure if it was a PJSIP Extension creation issue or not. That is why I mentioned it.

The past few virtual PBX images I have setup for clients and gone live with are 100% PJSIP (endpoint and trunk) and so far I have not seen any issues.

Polycom VVX 411’s with BLFs
Completely up to date FreePBX Distro: 10.13.66-20

just weighing in :slight_smile:

2 Likes

Ok for those with the 100% let’s pretend this page is lying and let’s view to another corner since everything is good and “working 100%”

https://issues.asterisk.org/jira/browse/ASTERISK-26105?jql=issuetype%20%3D%20Bug%20AND%20status%20in%20(Open%2C%20"In%20Progress"%2C%20Reopened%2C%20Triage)%20AND%20text%20~%20"Pjsip"

BTW I’m just weighing. :slight_smile:

Please leave your snarky attitude at the door. I generally like you Max but you are now poking/proding those who are just saying it works for them because you (for some reason) want only people to report it doesn’t work for them.

The people who have said it works have provided the setup they used. I haven’t seen you provide anything of substance yet. This whole thread started because someone said “PJSIP is very buggy” and they refused to provided evidence of that fact. It’s surprising to see more people saying it works 100% while also providing evidence of the fact.

I don’t want to have to lock you out of this thread but you can’t go out and say we are bullying dicko to then bully users who say it works for them

Also PJSIP Add header works. We use it in FreePBX. (See @lgaetz’s response below on why)

edit 2018-07-14: The method that follows is no longer working

The linked ticket is not a bug, it is a fundamental misunderstanding of PJSIP. You can’t add custom SIP headers to outbound calls on PJSIP channels using the same old method that works for chan_sip (i.e. using the [macro-dialout-trunk-predial-hook] context). This is a problem that I struggled with when I first started using PJSIP, and I addressed it by:

Adding custom dial options to the PJSIP trunk, i.e:

Ttb(lgaetz-custom-header^s^1)

Then add the custom dialplan for the subroutine referenced in the trunk dial option:

[lgaetz-custom-header]
exten => s,1,gotoif($["${CHANNEL(channeltype)}"="SIP"]?SIP)
exten => s,n,gotoif($["${CHANNEL(channeltype)}"="PJSIP"]?PJSIP)
exten => s,n,noop(Not a sip channel)
exten => s,n,Return
exten => s,n(SIP),noop(Adding custom header to SIP channel)
exten => s,n,SIPAddHeader(X-Tag:lgaetz)
exten => s,n,Return
exten => s,n(PJSIP),noop(Adding custom header to PJSIP channel)
exten => s,n,Set(PJSIP_HEADER(add,X-Tag)=lgaetz)
exten => s,n,Return

In order to add a custom SIP header to a PJSIP channel, it must be done at the point of dialing

1 Like

Hi Andrew, I don’t know what snarky means so not sure how to take that, I’m not “proding” anyone I’m genuinely trying to give examples, not even sarcasm this time.

Yes, some people came and said it’s working and that’s fine, but my link(i noticed now) is opening just one issue. I was trying to share the complete list of registered bugs on JIRA by the filters in the URL and you can give it a shot.

When we talk in absolutes and people start saying 100% for me is a total lie, I mean how come a system could be working at 100% when clearly there is a list of bugs and issues in the Asterisk forum and JIRA page, Either they didn’t use that or they use just basic configuration so if we are trying to get somewhere here stop using the absolutes like everything is perfect and we know is not.

As I told you and you know it, I was trying to use GULP now PJSIP I tried two years, and many of the bugs were reported by others before me, so I didn’t open a report because many people had the same. You are a developer and you know that we cannot release alfa or beta products into Production servers so in my case that was the main reason to drop PJSIP usage. And after two years believe me I don’t want to waste more time until I see a better feedback from the community. I have a project where I decided to use OpenSIPs over Asterisk-PJSIP channel just because I prefer to have a reliable system than an experimental one and was a bummer.

Finally I’m surprised about the threat of locking me out, disagreements are very common in life Andrew and I prefer to have more disagreements than just nod my head and jump into the “hype train” because at the end disagreements will take us to somewhere either you guys accept that PJSIP is not perfect and is not working 100% or I accept that by this year is more mature than before.

I will stop posting in this thread not because the warning, but because is useless to have more words on this.
Have a nice day mate.

3 Likes

I tend to have to agree with @navaismo on this. I would have to say that the people announcing that Chan_PJSIP has just worked, 100%, for them since they’ve used it are doing basic use of the system. It wouldn’t matter if it was Chan_SIP or Chan_PJSIP, it’s a basic install and use case. They’ll both work 100% and probably without issue because the users aren’t really “using” the driver for all of its features or functionality.

I’ve used Chan_PJSIP for deployments over the past 18 months and yes, it’s had issues when trying to use more than just “register and do calls”. Many of those issues have been fixed, however, during most of those 18 months Chan_PJSIP was considered a “primary/default” SIP driver for things.

But let’s be honest here, in the non-Asterisk world of SIP, Chan_SIP and Chan_PJSIP mean nothing to people outside of “Oh those are the Asterisk SIP stacks”. Other SIP systems out there have been providing features that Chan_PJSIP now offers for years and for the most part without the bugs that Chan_PJSIP has and is suffering through.

It’s been two years (roughly) since the release of Chan_PJSIP and it still does NOT support FQDNs in the external_media_address setting. This basically makes using Chan_PJSIP for trunks in any deployment that requires Dynamic DNS useless since it can’t support the FQDN.

At the end of the day Chan_PJSIP still has problems, just like Chan_SIP does (which people point out about Chan_SIP when defending Chan_PJSIP). To ignore or act like those problems don’t exist or impact some of the user base in someway is ignorance.

Not to mention that it is still standard (and typical) that when a Chan_PJSIP issue can’t be figured out the question becomes “Does this work with Chan_SIP? It does? Do you need anything PJSIP offers? You dont? Just use Chan_SIP”. <-- That happens more than people would like to admit but it does and that shows there are still issues with Chan_PJSIP.

To be clear here, I’m not saying DEATH TO CHAN_PJSIP at all with this. I’m not saying “PJSIP SUCKS BIGLY”. I’m saying that Chan_PJSIP has issues and it has bugs despite the fact that the average, basic user will probably never use Chan_PJSIP for more than connecting phones and making calls and it works 100% for that. To sit there and deny it or deflect when people point out the shortcomings of the driver is just sticking your head in the sand hoping all the bad things are gone when you pull your head out to look around. (Again, I’m talking in generalities not specific people)

1 Like

Please provide specific examples (like a very few of you have) of pjsip bugs. Got it about the fqdn

This thread is aggravating because the way I see it is that the people who have no issues with pjsip are the ones being nice and going into full detail. The ones who have pjsip issues are the ones saying they used it years ago and won’t give us the names of providers or their setup. Some have yes but the overall feel of this is “pjsip is buggy but I’m not going to tell you why”

I accepted this already as I stated it above but you still aren’t giving me any factual evidence.

Outside of the FQDN right now, I can’t personally. A year ago I could but those issues were resolved and rather quickly for the most part. I use PJSIP in locations that require multiple AORs, in most cases they don’t do anything else but answer calls. In the cases that I have BLF on PJSIP I’m not seeing any issues or at least none are being reported to me.

Does PJSIP has bugs? Yes. Does PJSIP still work? Yes. In the grand scheme of things PJSIP is young compared to other SIP stacks that are out there. For Asterisk (Digium) PJSIP makes sense, it’s closing the gap that Chan_SIP had compared to other SIP stacks. It’s addressing issues that Chan_SIP has had for years. Because yes, Chan_SIP has bugs but for the most part the standard use of Chan_SIP doesn’t see them. Plus that fact it’s been around forever (basically) people have accepted the “This is just how Chan_SIP works” logic.

PJSIP will get there some day, when it has matured until then it will probably still have growing pains and that is expected. Yes PJSIP was rather buggy when it was introduced but it’s flattened out. A lot of the issues I see (from my view) are things that have existed for sometime and are still on the roadmap to be fixed. I do see some new issues come up but those are isolated.

But I agree with @tm1000 just don’t say PJSIP is buggy and then not offer up current proof that it is buggy. If there are bugs you or anyone is running into that aren’t known, make them known. Don’t just complain “there are bugs”. Also, I’ve seen a few people on the “PJSIP is full of bugs” rant without actually having any idea of what bugs there were or any real data. They were just parroting a soundbite. That gets old.

From what I have been told Switchvox is 100% PJSIP now so Digium is in fact eating their own dog food.

1 Like

Okay Everyone the Moment we have all been waiting for… a possible bug. But as I promised I want the team to help me first. :stuck_out_tongue:

PBXact UC 60 - Firmware .20
Up to date firmware on phone
All extensions use PJSIP
Responsive Firewall Enabled and ports are forwarded properly.

PJSIP Local on the network - 2 way voice and everything is working 100%
PJSIP Remote (no VPN or anything) - I can use all phone apps, BLF works, and I can make a call… No Voice either way. No ports blocked and no traffic dropped.

Disabled the internal firewall on the PBXact and no change

I created a new extension using CHAN_SIP and build a new config - didn’t change the phone - rebooted and let remote provision do its thing. After its couple reboots it came up and everything was green lit. Picked up and made a call. 2 Way voice was working with no problem.

You’d have to provide some debug. We have steps on how to do this in the wiki. I’m on mobile right now or I’d pass this along to you.

what do you want it from the server or the phone?

Server.

What logs do we need? The messages log

[2017-06-30 13:02:24] VERBOSE[26877] pbx_variables.c: Setting global variable 'SIPDOMAIN' to '96.83.189.229'
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@from-internal:1] Macro("PJSIP/4353-00000059", "user-callerid,LIMIT") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:1] Set("PJSIP/4353-00000059", "TOUCH_MONITOR=1498842144.444") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:2] Set("PJSIP/4353-00000059", "AMPUSER=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:3] GotoIf("PJSIP/4353-00000059", "0?report") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:4] ExecIf("PJSIP/4353-00000059", "1?Set(REALCALLERIDNUM=4353)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:5] Set("PJSIP/4353-00000059", "AMPUSER=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:6] GotoIf("PJSIP/4353-00000059", "0?limit") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:7] Set("PJSIP/4353-00000059", "AMPUSERCIDNAME=Julie") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:8] GotoIf("PJSIP/4353-00000059", "0?report") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:9] Set("PJSIP/4353-00000059", "AMPUSERCID=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:10] Set("PJSIP/4353-00000059", "__DIAL_OPTIONS=Ttr") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:11] Set("PJSIP/4353-00000059", "CALLERID(all)="Julie" <4353>") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:12] GotoIf("PJSIP/4353-00000059", "0?limit") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:13] ExecIf("PJSIP/4353-00000059", "1?Set(GROUP(concurrency_limit)=4353)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:14] ExecIf("PJSIP/4353-00000059", "0?Set(CHANNEL(language)=)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:15] GotoIf("PJSIP/4353-00000059", "1?continue") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (macro-user-callerid,s,29)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:29] Set("PJSIP/4353-00000059", "CALLERID(number)=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:30] Set("PJSIP/4353-00000059", "CALLERID(name)=Julie") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:31] GotoIf("PJSIP/4353-00000059", "0?cnum") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:32] Set("PJSIP/4353-00000059", "CDR(cnam)=Julie") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:33] Set("PJSIP/4353-00000059", "CDR(cnum)=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:34] Set("PJSIP/4353-00000059", "CHANNEL(language)=en") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-user-callerid:35] GosubIf("PJSIP/4353-00000059", "0?app-check-classofservce,s,1()") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@from-internal:2] Set("PJSIP/4353-00000059", "ROUTEUSER=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@from-internal:3] Set("PJSIP/4353-00000059", "ROUTEUSER=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@from-internal:4] GotoIf("PJSIP/4353-00000059", "1?notblind") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (from-internal,7249725765,7)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@from-internal:7] GotoIf("PJSIP/4353-00000059", "1?restrictedroute-13cee27a2bd93915479f049378cffdd3,7249725765,2:outbound-allroutes,7249725765,2") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (restrictedroute-13cee27a2bd93915479f049378cffdd3,7249725765,2)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@restrictedroute-13cee27a2bd93915479f049378cffdd3:2] Gosub("PJSIP/4353-00000059", "sub-record-check,s,1(out,7249725765,dontcare)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:1] GotoIf("PJSIP/4353-00000059", "0?initialized") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:2] Set("PJSIP/4353-00000059", "__REC_STATUS=INITIALIZED") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:3] Set("PJSIP/4353-00000059", "NOW=1498842144") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:4] Set("PJSIP/4353-00000059", "__DAY=30") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:5] Set("PJSIP/4353-00000059", "__MONTH=06") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:6] Set("PJSIP/4353-00000059", "__YEAR=2017") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:7] Set("PJSIP/4353-00000059", "__TIMESTR=20170630-130224") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:8] Set("PJSIP/4353-00000059", "__FROMEXTEN=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:9] Set("PJSIP/4353-00000059", "__MON_FMT=wav") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:10] NoOp("PJSIP/4353-00000059", "Recordings initialized") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:11] ExecIf("PJSIP/4353-00000059", "0?Set(ARG3=dontcare)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:12] Set("PJSIP/4353-00000059", "REC_POLICY_MODE_SAVE=") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:13] ExecIf("PJSIP/4353-00000059", "0?Set(REC_STATUS=NO)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:14] GotoIf("PJSIP/4353-00000059", "3?checkaction") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (sub-record-check,s,17)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@sub-record-check:17] GotoIf("PJSIP/4353-00000059", "1?sub-record-check,out,1") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (sub-record-check,out,1)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [out@sub-record-check:1] NoOp("PJSIP/4353-00000059", "Outbound Recording Check from 4353 to 7249725765") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [out@sub-record-check:2] Set("PJSIP/4353-00000059", "RECMODE=dontcare") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [out@sub-record-check:3] ExecIf("PJSIP/4353-00000059", "1?Goto(routewins)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (sub-record-check,out,7)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [out@sub-record-check:7] Gosub("PJSIP/4353-00000059", "recordcheck,1(dontcare,out,7249725765)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [recordcheck@sub-record-check:1] NoOp("PJSIP/4353-00000059", "Starting recording check against dontcare") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [recordcheck@sub-record-check:2] Goto("PJSIP/4353-00000059", "dontcare") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (sub-record-check,recordcheck,3)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [recordcheck@sub-record-check:3] Return("PJSIP/4353-00000059", "") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [out@sub-record-check:8] Return("PJSIP/4353-00000059", "") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@restrictedroute-13cee27a2bd93915479f049378cffdd3:3] ExecIf("PJSIP/4353-00000059", "0 ?Set(CDR(accountcode)=)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@restrictedroute-13cee27a2bd93915479f049378cffdd3:4] Set("PJSIP/4353-00000059", "MOHCLASS=default") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@restrictedroute-13cee27a2bd93915479f049378cffdd3:5] ExecIf("PJSIP/4353-00000059", "1?Set(TRUNKCIDOVERRIDE=<7245424508>)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@restrictedroute-13cee27a2bd93915479f049378cffdd3:6] Set("PJSIP/4353-00000059", "_NODEST=") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [7249725765@restrictedroute-13cee27a2bd93915479f049378cffdd3:7] Macro("PJSIP/4353-00000059", "dialout-trunk,1,17249725765,,off") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:1] Set("PJSIP/4353-00000059", "DIAL_TRUNK=1") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:2] GosubIf("PJSIP/4353-00000059", "0?sub-pincheck,s,1()") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:3] GotoIf("PJSIP/4353-00000059", "0?disabletrunk,1") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:4] Set("PJSIP/4353-00000059", "DIAL_NUMBER=17249725765") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:5] Set("PJSIP/4353-00000059", "DIAL_TRUNK_OPTIONS=Ttr") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:6] Set("PJSIP/4353-00000059", "OUTBOUND_GROUP=OUT_1") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:7] GotoIf("PJSIP/4353-00000059", "1?nomax") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (macro-dialout-trunk,s,9)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:9] GotoIf("PJSIP/4353-00000059", "0?skipoutcid") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:10] Set("PJSIP/4353-00000059", "DIAL_TRUNK_OPTIONS=T") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:11] Macro("PJSIP/4353-00000059", "outbound-callerid,1") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:1] ExecIf("PJSIP/4353-00000059", "0?Set(CALLERPRES(name-pres)=)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:2] ExecIf("PJSIP/4353-00000059", "0?Set(CALLERPRES(num-pres)=)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:3] ExecIf("PJSIP/4353-00000059", "0?Set(REALCALLERIDNUM=4353)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:4] GotoIf("PJSIP/4353-00000059", "1?normcid") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (macro-outbound-callerid,s,7)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:7] Set("PJSIP/4353-00000059", "USEROUTCID=") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:8] Set("PJSIP/4353-00000059", "EMERGENCYCID=") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:9] Set("PJSIP/4353-00000059", "TRUNKOUTCID=") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:10] GotoIf("PJSIP/4353-00000059", "1?trunkcid") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx_builtins.c: Goto (macro-outbound-callerid,s,15)
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:15] ExecIf("PJSIP/4353-00000059", "0?Set(CALLERID(all)=)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:16] ExecIf("PJSIP/4353-00000059", "0?Set(CALLERID(all)=)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:17] ExecIf("PJSIP/4353-00000059", "1?Set(CALLERID(all)=<7245424508>)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:18] ExecIf("PJSIP/4353-00000059", "0?Set(CALLERPRES(name-pres)=prohib_passed_screen)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:19] ExecIf("PJSIP/4353-00000059", "0?Set(CALLERPRES(num-pres)=prohib_passed_screen)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:20] Set("PJSIP/4353-00000059", "CDR(outbound_cnum)=7245424508") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-outbound-callerid:21] Set("PJSIP/4353-00000059", "CDR(outbound_cnam)=") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:12] GosubIf("PJSIP/4353-00000059", "0?sub-flp-1,s,1()") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:13] Set("PJSIP/4353-00000059", "OUTNUM=17249725765") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:14] Set("PJSIP/4353-00000059", "custom=SIP/42789965GW1") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:15] ExecIf("PJSIP/4353-00000059", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^default)T)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:16] ExecIf("PJSIP/4353-00000059", "0?Set(DIAL_TRUNK_OPTIONS=TM(confirm))") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:17] Macro("PJSIP/4353-00000059", "dialout-trunk-predial-hook,") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("PJSIP/4353-00000059", "") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:18] GotoIf("PJSIP/4353-00000059", "0?skipcrm") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:19] Set("PJSIP/4353-00000059", "__CRM_DIRECTION=OUTBOUND") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:20] Set("PJSIP/4353-00000059", "__CRM_DESTINATION=17249725765") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:21] Set("PJSIP/4353-00000059", "__CRM_SOURCE=4353") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:22] AGI("PJSIP/4353-00000059", "sangomacrm.agi") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: Launched AGI Script /var/lib/asterisk/agi-bin/sangomacrm.agi
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: LINKEDID: 1498842144.444
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: SOURCE: 4353
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: DESTINATION: 17249725765
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: DIRECTION: OUTBOUND
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: EXTTOCALL:
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: START
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: SCRIPT: php /var/www/html/admin/modules/sangomacrm/importOne.php 'eyJ1dWlkIjoiMTQ5ODg0MjE0NC40NDQiLCJzb3VyY2UiOiI0MzUzIiwiZGVzdGluYXRpb24iOiIxNzI0OTcyNTc2NSIsImRpcmVjdGlvbiI6Ik9VVEJPVU5EIiwidHlwZSI6IlNUQVJUIiwienVsdV90eXBlIjoiIiwiZXh0dG9jYWxsIjoiIiwiY251bSI6IjcyNDU0MjQ1MDgiLCJjbmFtIjoiIiwiY2FsbHBvcCI6ZmFsc2UsInZvaWNlbWFpbCI6IiJ9' > /dev/null 2>&1 &
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] res_agi.c: <PJSIP/4353-00000059>AGI Script sangomacrm.agi completed, returning 0
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:23] Set("PJSIP/4353-00000059", "CHANNEL(hangup_handler_push)=crm-hangup,s,1") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:24] NoOp("PJSIP/4353-00000059", "CRM Finished") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:25] GotoIf("PJSIP/4353-00000059", "0?bypass,1") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:26] ExecIf("PJSIP/4353-00000059", "1?Set(CONNECTEDLINE(num,i)=17249725765)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:27] ExecIf("PJSIP/4353-00000059", "1?Set(CONNECTEDLINE(name,i)=CID:7245424508)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:28] ExecIf("PJSIP/4353-00000059", "0?Set(CONNECTEDLINE(name,i)=CID:(Hidden)7245424508)") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:29] GotoIf("PJSIP/4353-00000059", "0?customtrunk") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@macro-dialout-trunk:30] Dial("PJSIP/4353-00000059", "SIP/42789965GW1/17249725765,300,T") in new stack
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] netsock2.c: Using SIP RTP TOS bits 184
[2017-06-30 13:02:24] VERBOSE[22716][C-0000002e] netsock2.c: Using SIP RTP CoS mark 5
[2017-06-30 13:02:25] VERBOSE[22716][C-0000002e] app_dial.c: Called SIP/42789965GW1/17249725765
[2017-06-30 13:02:26] VERBOSE[22716][C-0000002e] app_dial.c: SIP/42789965GW1-00000024 is making progress passing it to PJSIP/4353-00000059
[2017-06-30 13:02:30] VERBOSE[22716][C-0000002e] app_dial.c: SIP/42789965GW1-00000024 is making progress passing it to PJSIP/4353-00000059
[2017-06-30 13:02:34] VERBOSE[22716][C-0000002e] app_dial.c: SIP/42789965GW1-00000024 answered PJSIP/4353-00000059
[2017-06-30 13:02:34] VERBOSE[22779][C-0000002e] bridge_channel.c: Channel SIP/42789965GW1-00000024 joined 'simple_bridge' basic-bridge <0fce2665-4957-457a-9d2f-12ca506f9cbb>
[2017-06-30 13:02:34] VERBOSE[22716][C-0000002e] bridge_channel.c: Channel PJSIP/4353-00000059 joined 'simple_bridge' basic-bridge <0fce2665-4957-457a-9d2f-12ca506f9cbb>
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] bridge_channel.c: Channel PJSIP/4353-00000059 left 'simple_bridge' basic-bridge <0fce2665-4957-457a-9d2f-12ca506f9cbb>
[2017-06-30 13:03:22] VERBOSE[22779][C-0000002e] bridge_channel.c: Channel SIP/42789965GW1-00000024 left 'simple_bridge' basic-bridge <0fce2665-4957-457a-9d2f-12ca506f9cbb>
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] app_macro.c: Spawn extension (macro-dialout-trunk, s, 30) exited non-zero on 'PJSIP/4353-00000059' in macro 'dialout-trunk'
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Spawn extension (restrictedroute-13cee27a2bd93915479f049378cffdd3, 7249725765, 7) exited non-zero on 'PJSIP/4353-00000059'
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Executing [h@restrictedroute-13cee27a2bd93915479f049378cffdd3:1] Hangup("PJSIP/4353-00000059", "") in new stack
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Spawn extension (restrictedroute-13cee27a2bd93915479f049378cffdd3, h, 1) exited non-zero on 'PJSIP/4353-00000059'
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] app_stack.c: PJSIP/4353-00000059 Internal Gosub(crm-hangup,s,1) start
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@crm-hangup:1] NoOp("PJSIP/4353-00000059", "Sending Hangup to CRM") in new stack
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@crm-hangup:2] NoOp("PJSIP/4353-00000059", "HANGUP CAUSE: 16") in new stack
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@crm-hangup:3] ExecIf("PJSIP/4353-00000059", "0?Set(__CRM_VOICEMAIL=)") in new stack
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@crm-hangup:4] NoOp("PJSIP/4353-00000059", "MASTER CHANNEL: 1498842144.444 = 1498842144.444") in new stack
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@crm-hangup:5] GotoIf("PJSIP/4353-00000059", "0?return") in new stack
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@crm-hangup:6] Set("PJSIP/4353-00000059", "__CRM_HANGUP=1") in new stack
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@crm-hangup:7] AGI("PJSIP/4353-00000059", "sangomacrm.agi") in new stack
[2017-06-30 13:03:22] VERBOSE[22716][C-0000002e] res_agi.c: Launched AGI Script /var/lib/asterisk/agi-bin/sangomacrm.agi
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: LINKEDID: 1498842144.444
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: SOURCE: 4353
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: DESTINATION: 17249725765
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: DIRECTION: OUTBOUND
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: EXTTOCALL:
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: START
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] res_agi.c: sangomacrm.agi: SCRIPT: php /var/www/html/admin/modules/sangomacrm/importOne.php 'eyJ1dWlkIjoiMTQ5ODg0MjE0NC40NDQiLCJzb3VyY2UiOiI0MzUzIiwiZGVzdGluYXRpb24iOiIxNzI0OTcyNTc2NSIsImRpcmVjdGlvbiI6Ik9VVEJPVU5EIiwidHlwZSI6IkVORCIsInp1bHVfdHlwZSI6IiIsImV4dHRvY2FsbCI6IiIsImNudW0iOiI3MjQ1NDI0NTA4IiwiY25hbSI6IiIsImNhbGxwb3AiOmZhbHNlLCJ2b2ljZW1haWwiOiIifQ==' > /dev/null 2>&1 &
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] res_agi.c: <PJSIP/4353-00000059>AGI Script sangomacrm.agi completed, returning 0
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] pbx.c: Executing [s@crm-hangup:8] Return("PJSIP/4353-00000059", "") in new stack
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] app_stack.c: Spawn extension (restrictedroute-13cee27a2bd93915479f049378cffdd3, h, 1) exited non-zero on 'PJSIP/4353-00000059'
[2017-06-30 13:03:23] VERBOSE[22716][C-0000002e] app_stack.c: PJSIP/4353-00000059 Internal Gosub(crm-hangup,s,1) complete GOSUB_RETVAL=

You can see the call connects but stays connected but I just have no Audio. Again… I changed NOTHING except the driver from PJSIP back to Chan_SIP and then it worked. So this has cant have anything to do with my firewall or NAT issues.

One thing you can do (and sorry I didn’t say this over PM but its easier to get it out in the open) is: rtp set debug on

on the asterisk cli to see where it thinks packets are

You’ll need to do this because dialplan logs like you’ve shown above only show dialplan, they don’t show audio

You can also compare that with when you use chansip and chanpjsip as they use the same rtp engine.

I think we have a winner:

Sent RTP packet to 10.15.20.171:12104 (type 00, seq 014477, ts 1110542080, len 000160)
Got RTP packet from 208.93.226.13:5634 (type 00, seq 001609, ts 1110542243, len 000160)
Sent RTP packet to 10.15.20.171:12104 (type 00, seq 014478, ts 1110542240, len 000160)
Got RTP packet from 208.93.226.13:5634 (type 00, seq 001610, ts 1110542403, len 000160)
Sent RTP packet to 10.15.20.171:12104 (type 00, seq 014479, ts 1110542400, len 000160)
Got RTP packet from 208.93.226.13:5634 (type 00, seq 001611, ts 1110542563, len 000160)
Sent RTP packet to 10.15.20.171:12104 (type 00, seq 014480, ts 1110542560, len 000160)

10.15.20.171 is the private IP address inside the remote network.
I have no clue what that WAN IP address is. Its not my SIP providers gateway or the Public IP of the phone system.