Audio Artifacts when calling Queue (and only then)

One of my clients has a FreePBX system that is experiencing audio artifacts. Those audio artifacts only occur while you are calling their main queue. There are no issues during the preceding IVR, nor during the call itself, nor if you are put on hold later.

I have found what seems to be the trigger, and that’s when the members (about 20) are added as dynamic members. If I modify the queue and put them as static members this behavior does not happen.

Normally ALL of the members are dynamic, but I have also tried leaving one static and the rest dynamic and that made no difference.

This ONLY happens WHILE you’re calling the queue, and seems to be “worse” during the 1/2 second before someone actually answers the call. Once someone answers it, there is no audio artifacts at all. Prior to getting into the queue, the IVR recordings have no audio artifacts either.

I have tried changing the Queue to play hold music instead of ring, and that made no difference, same problem.

If you are otherwise talking to someone and they put you on hold (same hold music) there is absolutely zero audio artifacts while on hold, NOR when they pick up the phone again.

Kind of at a loss here as to what would cause this. Thoughts?

Asterisk 13.22.0
Queues (NOT Queues Pro).
Using PJSIP for endpoints and sip trunks
System is dual core xeon, 4gb ram on SSD and otherwise works fine.
System supports 23 extensions with light call volume

Logs - let us see what the system is doing while the artifacts are being generated.

Also, what kind of artifacts are you referring to? Are they simply random noise? Can you even characterize them?

It sounds just like dropped RTP packets as if you had a poor internet connection, only the connections are solid, 150mbps on one side with minimal other usage, multi-gigabit on the other, low latency between. The part that is the strangest is that it’s brought on by using dynamic agents, and does not happen if those same people are listed as static agents.

Which logs specifically would be helpful here?

The /var/log/asterisk/full log right around the time of the call to the queue.

From the Asterisk CLI, you can watch the logging and get the timestamp. Pull the info from the full log afterwards. Call in and watch the log as the call is progressing - what you see is the full log.

I don’t know why it would make any difference about their type (static vs dynamic), but you might be hearing a codec change (for example) and only noticing on the dynamic clients.

Log of a sample call (sanitized) is here:

The queue is set to “ring-all” FYI. Using Queue instead of ring-group so they can easily add/remove (log in/out) members as needed themselves. This problem doesn’t happen with ring-groups either with same members, I tried it.

If you only have a couple of people logged into the queue, do the artifacts persist?

Sending the call to a Ring Group is different than using a queue. A Ring Group is an actual destination where 20 phones ring. A queue is an intermediate application that manages the call until someone picks up. Having said that, the static/dynamic thing shouldn’t make any difference.

Do you know of a way to either from CLI or fpbx admin web interface, to log people in/out of a queue so I can do/test this remotely? Historically it was done from the phone using the xml app or feature codes, I’m not onsite and it will be a challenge to get out there for this kind of testing.

From CLI be something like this:

queue remove member DEVICE from QUEUE
In my example i am removing user SIP/1002 from queue 5000
queue remove member SIP/1002 from 5000

If you type queue show [TAB BUTTON]
it will start to help you by showing the values you can key in specific to your system.

 pbx-12*CLI> queue show 5000
 5000 has 0 calls (max unlimited) in 'leastrecent' strategy (365s holdtime, 30s talktime), W:0, 
 C:565, A:1, SL:75.0% within 60s
    agent1001 (SIP/1001 from SIP/1001) (ringinuse disabled) (dynamic) (Unavailable) has taken 
  no calls yet
  agent1002 (SIP/1002 from SIP/1002) (ringinuse disabled) (dynamic) (Unavailable) has taken no calls yet
   No Callers

pbx-12*CLI> queue remove member SIP/1002 from 5000
Removed interface SIP/1002 from queue '5000'

pbx-12*CLI> queue show 5000
5000 has 0 calls (max unlimited) in 'leastrecent' strategy (365s holdtime, 30s talktime), W:0, 
C:565, A:1, SL:75.0% within 60s
   agent1001 (SIP/1001 from SIP/1001) (ringinuse disabled) (dynamic) (Unavailable) has taken 
no calls yet
   No Callers

Best I can see this only impacts queues, and is worse with more people in the queue. There is plenty of horsepower under the hood, watching performance logs (top, load, etc) it’s not breaking a sweat and they have very light call volume.

Any other ideas what to try? Having them use Ring Groups solves the issue (and they’re not really using the power of queues anyway, other than the ability to log in/out is all they care about), but losing the log in/out ability is a problem.

I don’t understand why using a Queue is causing this. Again, there are zero audio issues at any other time, only when you’re in the queue.

Ticket Time!

I can’t think of anything that would cause this. If you can record what is happening maybe one of the Sangoma Pros can figure it out, or at least tell you that there’s nothing they can do at this time. It’s such a specific, niche problem that it really defies remote troubleshooting.

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