With PortaBilling as the Online Charging System (OCS), mobile virtual network operators (MVNO) can offer a full range of mobile services to their customers. PortaBilling supports 2.5/3G and 4G mobile networks and uses Diameter (Ro) as the main protocol for online charging. Since the CAMEL protocol is the main protocol used for real-time charging in 2.5 and 3G networks, additional gateway is required to convert the CAMEL requests to Diameter (Ro) requests.
PortaBilling is integrated with one more gateway that converts the CAMEL requests to Diameter (Ro) requests and vice versa – the Pharos CIG (Charging Interworking Gateway). With the Pharos CIG, PortaBilling supports real-time charging for domestic and roaming voice calls, SMS, and USSD.
The Pharos CIG is deployed within a service provider’s network and acts as a mediation component between PortaBilling and a mobile operator’s network. The Pharos CIG communicates with the MSC (Mobile Switching Center) using the CAMEL protocol and then converts the CAMEL to Diameter (Ro) to communicate with PortaBilling, and vice versa.
This is how it works:
Let’s say you are the MVNO in South Africa who provides domestic/roaming voice calls and SMS to subscribers. John Doe is your subscriber. When John Doe makes a call to a destination 27115557122, South Africa, the MSC performs the call authorization in PortaBilling to verify that John Doe has sufficient funds to call this destination. The MSC sends the authorization request to PortaBilling via the Pharos CIG using CAMEL protocol. The Pharos CIG receives the authorization request from the MSC, converts it from CAMEL to Diameter (Ro) and sends this request to PortaBilling. PortaBilling locks in the funds to cover the initial period of the call and replies to the Pharos CIG with a confirmation message using Diameter (Ro). The Pharos CIG receives the reply from PortaBilling, converts it from Diameter to CAMEL, and sends it to the MSC. When the initial period of the call is over, the MSC sends requests to lock in the funds for the subsequent periods. When John Doe finishes the call, the MSC sends a request to PortaBilling to inform it that the call is over. PortaBilling creates an xDR record for this call.
You can find the configuration details and the workflow for roaming voice calls and SMS services in PortaBilling Administrator Guide in the Online charging for roaming services chapter.
This integration allows service providers to run MVNO in 2.5 and 3G networks and offer a full range of mobile services to their customers using another CAMEL to Diameter gateway.
Charging for USSD sessions
PortaBilling supports charging for USSD sessions for service providers that launch MVNOs in a 2.5/3G network using Pharos Charging Interworking Gateway (Pharos CIG).
Unstructured Supplementary Service Data (USSD) requests allow mobile phone users to request information or perform various actions by dialing short codes. For example, a user can dial *136# to check the current balance or *136*4# to change the package.
The advantage of the USSD services is that they require neither Internet access nor a smartphone. With USSD requests, MVNOs can provide services that are easy to access from any mobile phone.
Usually, USSD requests are free of charge, but service providers may charge users for some of them (e.g., USSD requests for activation of premium features, accessing banking services, or receiving various content such as news, currency exchange rates, weather forecasts).
The USSD sessions charge is time-based. For example, a South African MNO MTN uses the twenty-second interval for USSD sessions charging, meaning that the users are charged $0.2 for every 20 seconds of a USSD session. During a session, every 20 seconds PortaBilling receives a new Diameter request from the Pharos USSD gateway. This interval is configured in tariff rates in PortaBilling. Every 20 seconds of the session show up as a separate xDR in PortaBilling.
Let’s consider examples for 2 types of USSD sessions:
- Sessions with menu options. For example, John Doe wants to check the currency exchange rates. He dials *102*3#. A new USSD session starts and John receives a USSD message with a menu with various options (“News, press 1”, “Currency exchange rates, press 2”, “To go to the main menu, press 0” etc.). John dials 2 and receives a USSD message with exchange rates. Then he decides to also check the news. John dials 0 to go back to the main menu and dials 1 to check the news. After that, John presses the “Close” button to terminate the session. The duration of the session is 45 seconds. From the session initiation, the Pharos USSD gateway has sent to PortaBilling three Diameter requests of 20 seconds each, so the total cost of this USSD session is $0.2*3=$0.6.
- Sessions without menu options. Let’s say John Doe dials *102*444# to change the current package to “Basic,” the cheaper one. John receives a USSD message that his package was successfully changed. He presses the “Close” button (no other actions are available). The service provider charges John Doe $0.2 for this request as if it was a twenty-second session.
Service providers operating at markets where USSD services are in demand can monetize these services.
To configure charging for USSD sessions, do the following:
- Go to the Configuration server > BillingEngine > Custom group:
- for the Custom.IniOptions attribute, add the following string: [Pharos]RoServiceContexts=[the value of the Service-Context-Id AVP that is sent in the Diameter request for USSD]. For example, for an MVNO launching in the MTN network, this string looks as follows: [Pharos]RoServiceContextsfirstname.lastname@example.org;
- for the Custom.LoadAdapterModules attribute, specify: pharos=Porta::BE::M::Adapter::Pharos.
- Go to PortaBilling:
- Create a separate service to charge for USSD sessions (select Voice calls as a service type).
- Add the available USSD short codes (e.g., *101#, *102*3#) to the list of destinations in PortaBilling as custom destinations.
- Add rates for each short code to the vendor tariff (e.g., Destination – *101#, Rate – $0; Destination – *102*3#, Interval – 20 seconds, Rate – $0.3).
- Create a customer tariff to charge for USSD sessions. Create a rate for each short code (e.g., Destination – *101#, Rate – $0; Destination – *102*3#, Interval – 20 seconds, Rate – $0.6).
- Open the mobile service product and add the USSD service on the Services page.
- Open the Usage charges page for the product and add a record with the following access code: OUTGOING.SI[the number specified in the value of the Service-Identifier AVP in the Diameter request for USSD]. For example, if you configure an MVNO launching in the MTN network, the access code looks as follows: OUTGOING.SI120.Next to the Access code field, select the created customer tariff for USSD charges.
- Create a voice calls service policy, enable the Rise MSCC result code attribute for it, and assign this service policy to the product (or an account).