At its core, RCS (Rich Communication Services) is a suite of specifications from OMA and GSMA aimed at replacing SMS messages with a richer messaging system equipped with added services such as group chat, message read receipts, file and file thumbnail transfers, download pausing and resuming, geo-location push, to name a few.
But what extensions does RCS require from SIP in order to achieve the desired functionality? And, more importantly, is OpenSIPS equipped to support them? The good news is that the vast majority of SIP-related RCS features are already supported by OpenSIPS, since all SIP customizations simply end up being either extra parameters for SIP headers such as Contact, Accept, Accept-Contact or extra MIME content types and XML payloads for the body of the SIP request. For the most part, RCS only requires support for the following RFCs:
- RFC 3261 (SIP)
- RFC 3428 (SIP MESSAGE)
- RFC 3550 (RTP/RTCP)
- RFC 3501 (IMAP4)
- RFC 4566 (SDP)
- RFC 4975 (MSRP)
- RFC 5547 (SDP attributes for file transfer)
Obviously, that is excellent news, as OpenSIPS already supports everything that’s SIP in there! Still, before getting overly excited that we can already start building RCS platforms with OpenSIPS releases such as 3.2 LTS, let’s take a look at some sample RCS-enriched SIP messages and what those lists of RCS capabilities look like. Because in some cases, developers may need to program OpenSIPS in order to mangle those capabilities before routing RCS SIP traffic to an interconnected carrier: removing unsupported capabilities, or adding extra ones in case an endpoint did not include them.
For this, we wrote a technical tutorial wiki page, showcasing some string-managing techniques you can use in order to shape up the RCS capabilities of SIP messages egressing your platform.
The tutorial is named RCS – Managing Capabilities. Happy hacking!
More to Come
While capabilities are an essential part of RCS, notice how MSRP is just as important: after all, RCS is mainly all about messaging. Because of this, heavy work is already long underway on OpenSIPS master branch in order to add native support for MSRP traffic relaying. So stay tuned for future blog posts which will expand on that area of focus for OpenSIPS 3.3!
Oh, and did I mention that we’ve just solved the last pending bug report as part of the OpenSIPS 3.2 Security Audit 2021/2022? Please be on the lookout for updates on this topic as well, as both the work invested and the results obtained are massive!