RestComm / ussdgateway

RestComm USSD Gateway
http://www.restcomm.com/
GNU Affero General Public License v3.0
89 stars 102 forks source link

Avoid navigating through USSD menus by direct dialing specific options #32

Closed FerUy closed 7 years ago

FerUy commented 7 years ago

Currently USSD Gateway does not support USSD direct dial or fast access, i.e. instead of making the user going through the whole menu to get somewhere in the call flow, just with one direct dial. e.g. *345*1*4*5#.

A typical use case example: USSD Voucherless Top Up system (see attached image)... the retailer needs to enter its PIN, the desired action of the welcome menu, the customer's account number, the Top Up amount (which could be a fixed or flexible amount), then it dials something like this: *777*PIN*1*9998765*8*80# or even simpler like *777*PIN*1*9998765*80# (the confirmation option is not listed, though it could usually be a better idea to have a final glimpse of what action is being taken). Then, in approximately 5 seconds the retailer sold the flexible amount of $80 to 9998765 thru its account (whose PIN could be something like 1234), via the USSD code 777, an action that would take much longer (1 minute or more, had he done it step by step initiating with just *777#), thus less sales per day and less revenue either for the retailer and the MNO. Equally important, TCAP dialog capacity would be positively impacted too.

Similar examples could be pointed out for other projects like mobile wallet that is huge in some Latin American and African countries through USSD. This should be taken as a major issue, as from personal experience, MNOs which already deployed USSD Gateways willing to replace with ours, would not accept it if it does not support this type of direct dialing/fast access.

This issue is related to https://github.com/RestComm/Restcomm-Connect/issues/586

fast-dial

FerUy commented 7 years ago

Please see comments in https://github.com/RestComm/Restcomm-Connect/issues/586 regarding this issue.

FerUy commented 7 years ago

As result of today's tests, for the upper example, setting up routing rules makes USSD Gateway able to deliver what is needed for direct dialing and avoiding navigation of a complex menu but reaching a specific target within the flow. Following a routing rule example: <scroutingrule ruleType="SIP" shortcode="*777*" networkid="0" sipProxy="192.168.26.132:5080" exactmatch="false"/>

For example, if *777*1234*1*90001234*50# is dialed, the following action happens at the USSD Gateway, which is correct:

ussd_long_dialing

In the case of communicating with Restcomm-Connect, this doesn't prosper, as it doesn't support it (therefore, a fix for issue https://github.com/RestComm/Restcomm-Connect/issues/586 is needed). The message logged in the console of USSD Gateway is as following:

18:44:37,427 ERROR [SipClientSbbImpl] (SLEE-EventRouterExecutor-0-thread-1) Received CLIENT_ERROR Response 404 For SIP Dialog Id b0a50f1883955b32ec359b415b30aeb3@192.168.26.132:9558:74204203_bb4c53c8_57a5b08a_2834efc1

So, closing this issue as Restcomm USSD Gateway is able to proceed with this by setting up the proper routing rule like the example shown before. For accessing the welcome screen and navigate through the flow from the beginning, *777# routing rule must be setup as well, along with *777*.