2024c
For Compass release 2024c we focussed on maintenance, modernizing our architecture and extending our API. We’ve replaced our internal message bus with RabbitMQ, making it easier to modularize our code base. We refactored the code connecting to our trunk providers, eliminating a problem where anonymous calls got the external number when forwarded transparently. We added API calls for custom provisioning for phone types on a reseller level.
Important changes
Changed
Communication between the components of Compass was done via RPC calls over the ICE protocol. This has some disadvantages, like messages being lost on restart and having to configure the receiver in the component sending the messages. After 2024c our components will use RabbitMQ as a broker. It will be easier to distribute our components differently, add events and new components. This will not change anything to our event bus over XMPP.
There was an issue when forwarding calls transparently to external numbers if the incoming call was anonymous. Instead of it being anonymous, it got the name of the external number in the From
header. At the same time, the external number was not added to the relevant headers, making it impossible for some trunks to identify the caller. This is against rfc3325. To fix this, we cleaned up the code sending messages to our trunk providers and made sure to follow the rfc standards.
In 2024b we made it possible to set functionkeys, call waiting and custom provisioning settings in the API. This could only be done per phone or per phone model in a company. In 2024c it will also be possible to do this on a reseller level. Custom settings on the phone level will overwrite the custom settings on a company level, which on their turn will overwrite the custom settings on the reseller level.
We removed the necessity of adding a leg id to the answerCall
endpoint. From now on it will be possible to answer calls by just sending a call id. Also, it makes more sense to have this endpoint on the user and the identity.
With the regular maintenance, we’ve updated to a new major version of Spring Boot. With this update, the validation has been tightened. It will be impossible to send properties that don’t exist on the request object. This was already the case for most API endpoints, but not for all. With this update the behavior will be consistent across all endpoints.
Also the next issues have been fixed:
- GL-4611 - Rewrite TrunkController from ICE
- GL-4635 - Update Asterisk to 20.9.1
- GL-4659 - 500 Internal Error for a user without the right feature at the
listenIn
endpoint - GL-4671 - Queue settings cannot be adjusted
Added Yealink T42U and T46U support
We have implemented provisioning support for Yealink T42U and T46U, with firmware 108.86.188.7. We also added the EXP43 expansion pad for the Yealink T46U.
REST API
Added
Added API endpoints for phone provisioning settings:
GET /reseller/{id}/phoneModel/{phone_model_id}/settings
PATCH /reseller/{id}/phoneModel/{phone_model_id}/settings
Added answerCall endpoints to user and identity:
POST /user/{id}/answerCall
POST /identity/{id}/answerCall
Known issues
We are aware of the following issues. Please don’t open new support tickets for them.
- GL-2868 - Semi-attended transfer generates an extra call recording
- GL-3376 - Large XMPP rosters are shortened by the platform
- GL-3847 - User call forwards are not followed in accordance with the availability status