Does the queue application require state information on the devices in order to send calls with PJSIP?
We use realtime queues currently with chan_sip on Asterisk 13.18-cert2. We send our queue calls to a trunk in our environment. We do not have device registration information or state on our Asterisk. We simply run the Queue application and send the calls for the Queue members to a switch where device state is handled.
We are trying to upgrade to PJSIP, but we are running into a problem with our queue members showing up as invalid once we change our member interface from SIP/[member]
to PJSIP/[member]
. And so the result is that Asterisk does not send a call to the switch because Asterisk thinks there are no available queue members. I have outlined more details below:
In chan_sip, this is our asterisk_queue_member table that we use in extconfig.conf:
uniqueid membername queue_name interface penalty paused
318550 NULL 22609 SIP/sipdevice@trunk 1 NULL
When we look at a queue, we see it is not in use:
sip09*CLI> queue show 22609
22609 has 0 calls (max unlimited) in 'rrmemory' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
Members:
SIP/sipdevice@trunk with penalty 1 (ringinuse disabled) (realtime) (Not in use) has taken no calls yet
No Callers
And when we call the Queue application from AGI:
EXEC Queue "22609,tr,,,300"
Asterisk sends the call for that device to the trunk (SIP/sipdevice@trunk
) and everything works fine.
But, when we upgrade to PJSIP, we change the interface to be PJSIP:
uniqueid membername queue_name interface penalty paused
318550 NULL 22609 PJSIP/sipdevice@trunk 1 NULL
And the member shows up as invalid.
sip07*CLI> queue show 22609
22609 has 0 calls (max unlimited) in 'rrmemory' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
Members:
PJSIP/sipdevice@trunk with penalty 1 (ringinuse disabled) (realtime) (Invalid) has taken no calls yet
No Callers
And so, when we execute the queue application on that queue (EXEC Queue "22609,tr,300”) we get “There are 0 available members”:
[2018-02-06 09:53:26] DEBUG[5461][C-00000000]: app_queue.c:5249 is_our_turn: There are 0 available members.
[2018-02-06 09:53:26] DEBUG[5461][C-00000000]: app_queue.c:5267 is_our_turn: It's not our turn (PJSIP/trunk-00000000).
[2018-02-06 09:53:26] DEBUG[5461][C-00000000]: res_config_mysql.c:1589 mysql_reconnect: MySQL RealTime: Connection okay.
[2018-02-06 09:53:26] DEBUG[5461][C-00000000]: res_config_mysql.c:495 realtime_multi_mysql: MySQL RealTime: Retrieve SQL: SELECT * FROM asterisk_queue_member WHERE interface LIKE '%' AND queue_name = '22609' ORDER BY interface
We are not seeing any errors on start up with the app_queue.so. Does PJSIP require us to have the device state information in order to send calls to queue members? Or is there a new setting we need to configure so that the queue application will see that we are trying to send the calls to a trunk, not a device directly?