Queue member status not showing "ONHOLD"

It’s an unusual thing to do. How are you using the information?

I can only suggest working backwards and looking at the device status directly, initially using CLI commands, to make sure it is actually available at that level, and maybe looking into reading it directly with AMI. However, I don’t think I’m going to spend any more time on the code to work out exactly how that handles it.

I checked on the asterisk CLI the device state of the queue member is “inuse” as that member is talking to caller.
My point here is when agent has put callers call on hold from his end why queue member's device state is not changing to HOLD from INUSE

Here, what i have tried to replicate the same on local demo setup i could see the device which i am communicating “to” is showing “ONHOLD” but the queue member who is putting call on hold, it’s device state is “INUSE”.

What could be the possible reason for such a behavior?

The onhold status is if a channel has been put on hold. Not if they have put someone on hold.


Alice calls Bob
Bob puts Alice on hold
Alice would be the one as on hold

As per shared example, is there any way i can determine when Bob is putting Alice on hold in runtime call.

There might be AMI events? Otherwise I don’t know.

There is “Hold” event in AMI but our Real time monitoring system is capturing members runtime status by sending AMI Actions and in which we could not identify which agent(queue member) has put caller on hold.

Is there a way by which i can put both the channels on HOLD?

The code isn’t written to do that, so no.

I did wonder if that was the case, but I couldn’t find it documented, one way or the other, and, as noted above, didn’t want to delve too far into the actual code.

If you know the channel name, then you can do core show channel PJSIP/555-1234 on the Asterisk CLI to get the Streams info at the bottom of the output. The State will be sendonly if the channel is on hold. I don’t think there is (yet) any AMI for stream state status query…

Another Asterisk application you might consider is BridgeWait - like a smarter version of HOLD. Since you control the frontend via JsSIP, you could test a new button that redirects the channels using a DTMF code sequence from features.conf

I checked by putting call on hold but for both the channels state is showing “sendrecv

I will work on it and let you know. Thanks for the suggestion.

@penguinpbx I am trying this as suggested but peer channel is unable to join the holding bridge getting below error,

[Nov 3 16:48:39] WARNING[3470375][C-0000000a]: app_bridgewait.c:486 bridgewait_exec: Failed to join waiting bridge ‘default’ for ‘PJSIP/kamailioazure-00000011’.

Hmm, the associated code comment says that error should only be encountered during “extreme situations” – maybe try a simpler test ?

What version of Asterisk are you using ?

And do you have the bridge modules loaded ?

The comment also says that the bridge must have been created, so I doubt it is a missing module.

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