RestComm / Restcomm-Connect

The Open Source Cloud Communications Platform
http://www.restcomm.com/
GNU Affero General Public License v3.0
240 stars 215 forks source link

Direct dial to specific options throughout an RVD USSD project #586

Closed FerUy closed 7 years ago

FerUy commented 8 years ago

Currently RestComm 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 thru (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 is a better idea to have a final glimpse of what action is being taken). Then, in approximately 5 seconds he sold the flexible amount of $80 to 9998765 thru his 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.

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.

fast-dial

FerUy commented 7 years ago

Updated comment, related to https://github.com/RestComm/ussdgateway/issues/32

abhayani commented 7 years ago

USSD gw allows the routing rule to be configured based on string that match's as of today.

We can change this to Java Reg Exp instead and now Admin can define Regular expression for something like *777*PIN*1*9998765*80# and call directly the business logic that will take care of processing for above short code dialed.

FerUy commented 7 years ago

@abhayani, as for latest USSD Gw admin guide, for creating routing rules, the parameter flag would do the job:

flag - flag is either true or false, default is true. If true that means this is exact match between the configured short code and the dialed by subscriber value. If false, that means the dialed short-code begins with configured short-code. For example, if you created below rule, and user dials *123*7776543*223#, it will match the rule and request will be forwarded to the URL http://myip:8080/mobiussd/recharge. ussd scrule create *123* http://myip:8080/mobiussd/recharge false

I tried with something similar and this is how it looks like in UssdManagement_scroutingrule.xml: <scroutingrule ruleType="SIP" shortcode="*777*" networkid="0" sipProxy="192.168.26.132:5080" exactmatch="false"/>

otsakir commented 7 years ago

This issue was moved to RestComm/visual-designer#63

FerUy commented 7 years ago

(from https://github.com/RestComm/ussdgateway/issues/32): 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*.