Reviving this topic… It is super hard to work with the VitalPBX API to utilize the login/logout functionality. It was mentioned here on the forums several times, as well as here: Queue API Implementation Issues
I will explain the latest frustration.
When you query http://{{host}}/api/v2/queues/3
, it returns a detailed list of the queue and all dynamic members:
{
"status": "success",
"message": null,
"data": {
"queue_id": 3,
"extension": "8000",
...
"force_moh": false,
"members": [
{
"member_id": 7,
"extension": "6413",
"interface": "Local/6413@T2_queue-call-to-agents/n",
"extension_id": 23,
"penalty": 0,
"extension_hint": "QA_6413",
"diversions": false,
"type": "dynamic",
"name": "Test Tenant 2"
},
{
"member_id": 8,
"extension": "6414",
"interface": "Local/6414@T2_queue-call-to-agents/n",
"extension_id": 25,
"penalty": 0,
"extension_hint": "QA_6414",
"diversions": true,
"type": "dynamic",
"name": "YP Test"
}
]
}
}
Which at first glance is awesome, it tells you exactly who you can login, which is awesome!
However, Two issues:
Issue # 1 - Locating the device ID
if you want you want to login any of these agents, you can only log them in by device ID. So you have to write your own logic to locate the device ID for this extension any only then you can call the http://{{host}}/api/v2/devices/{{deviceID}}/queues-login
endpoint.
(Additionally, sometimes, an extension can have more than one device, which makes things complicated)
Issue #2 - Extension without devices
If you use an extension that has no device, such as a FollowMe extension, you cannot login that extension with the API!!!
Solution?
Why can’t there be a simple endpoint to login/logout queue members based on the data you return in the members array as you see above.
For example:
POST http://{{host}}/api/v2/{{member_id}}/queue-login
Or
POST http://{{host}}/api/v2/{{extension_id}}/queue-login
And as mentioned in the linked post, please… have the responses consistent, so an application can understand it.