Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Plugin Based Implementation: A plugin design where one can plugin an SMS gateway service to MifosX which takes input as a phone number and a message, and sends out an SMS
  • SMS Gateway Plugins: Implementation for maybe 2 SMS providers as plugins: Twilio and , Nexmo., or Telerivet

Requirements

#User Story TitleUser Story DescriptionPriorityNotes
1SMS QueueA queuing mechanism, where SMS events to be posted are put on a queue, and then a queue reader picks each SMS up and posts it out through the configured SMS Gateway. This queue should be visible in UI (exposed through API), with a status of whether the SMS was sent successfully or not. Attributes: Target User, Phone Number, Message, Time, Success/Failed, Status Message (to indicate error message or success message), Triggered By (Username/System). TBD
    • Should this be implemented using a persistent JMS queue, or a similar queue library? 
    • How does this look for multi-tenant systems. One common queue or a queue-per-tenant? I guess a queue-per-tenant.
2Provide a Simple SMS sending capability for a ClientProvide the ability to send any text sms via a simple dialog box in Client screen. This is more for show casing that a loan officer can maybe send some message to the client via the system. Some questions here:TBD
  • How do we ensure each client has given us a phone number? 
  • If many people share a common phone number (in a group for instance), then maybe sending the "name" of the person in SMS is important. 
  • Do we need some country specific validation in phone number entry for a client? 
  • Do we need some flag indicating that a user has not configured a valid phone number and hence we won't be able to send any sms notification.
3Identify Automatic System Notification SMS Events
We need to identify some system events and scenarios which we would like to have integrated via SMS notification. Can you give some suggestions on what these could be? 
As I understand, there would be 3 types of SMS notifications: 
  • Manual - triggered by someone from within MifosX. Like sending an SMS to a client with some message. 
  • Event based - triggered by system whenever certain events occur. Like a loan is approved or rejected, etc.
  • Schedule based - triggered periodically, running as a batch job.. maybe integrated with the Spring Scheduler framework. For instance of checking on disbursements to be done today, and send sms in morning to all loan officers. 
I need examples or what events we would like to support to begin with. Some that come to my mind are (based on my super limited domain knowledge): 
  • Inform a client when her loan is approved - "Your loan of amount X has been approved".
  • Inform a client when her loan is disbursed - "Your loan for amount X has been disbursed on <date>".
  • Inform a client when her next repayment is due (n days earlier) - "For loan payment for Rs 300 is due in 3 days on the 21-April-2013".
  • I need more suggestions on this.
TBD 
4SMS Notification Configuration Screen
 Need to create a configuration screen where all SMS based notification configurations can be done. This will contain the following:
  • SMS Gateway Plugin choice + Gateway Plugin configurations/credentials
  • Which system events should be enabled for auto-send (from list 5 above)
  • What would be the template message for each type of system event (or maybe for now, we hardcode this in code, and expose templates later when the need arises) The problem around hardcoding the SMS message for system events is that we need to send messages in different languages to different roles. Like Loan Officer may want SMS in English, while Clients may want it in Swahili, or Hindi, etc. So - it would just make sense to give the ability to enter the SMS template message right now.
  • Ability to see the SMS notification queue.
TBD 

...