-
Epic
-
Resolution: Done
-
Minor
-
Future Dev
-
MOODLE_405_STABLE
-
Add SMS subsystem
Add an SMS subsystem and related plugin type (Gateway) to Moodle LMS, to allow various components to send messages via SMS.
Only sending (not receiving) of messages will be initially supported.
High Level Requirements
- A new SMS subsystem that provides a defined API for sending SMS messages
-
- It should enforce max message length
- SMS format and header requirements
- Delivery/handoff status information
- A new SMS Gateway (gateway) plugin type.
- Each SMS gateway such as AWS SNS should be a gateway plugin.
- The gateway plugins are responsible for managing the connection and actual sending of the SMS, as well as any required user settings
- Only one Gateway provider should be able to be enabled at once.
- Initial Gateway providers for AWS SNS & Modica (As per the original MFA SMS plugin)
- An interface to allow report builder reports.
- Create a new SMS component in Tracker etc.
Why an SMS subsystem?
- There will soon to be more than one area of Moodle using SMS
- Initially SMS was for an MFA factor, however there will also be a SMS notification provider in the future. As such it makes sense to have a dedicated SMS subsystem that multiple areas can use.
- SMS is the preferred (only) option in some parts of the world
- Looking at GSMA global mobile economy reports (https://www.gsma.com/mobileeconomy/#trends ) for example; the usage of non-smartphone mobile devices in such geographies as Africa and parts of the middle east areas is still prevalent. These areas still have a low(er) adoption of mobile internet usage. Because of this SMS usage is still high. Related to this in these parts of the world mobile data is in short supply/ is expensive, however, SMS is included for "free" in many mobile plans.
- Research shows that users want notifications etc. from LMS to their mobile devices
It is also worth mentioning that SMS is not a replacement for notifications sent to the Moodle Mobile APP, it is a supplementary mechanism. As above because of the use of "non smart" phones and data restrictions in parts of the world, SMS provides an alternative.
Related Trackers:
MDL-78511will provide SMS sending functionality for MFA. It will also add some of the required third part libs to core. Once the subsystem is in place there will need to be a piece of work refactor this functionality to use the new subsystem.- MDL-79715 will create a new messaging provider so that messages can be delivered by SMS. This should be done after the SMS subsytem is integrated.
Some SMS technical details
Here is some broad technical detail on the SMS standard that may help in subsystem design. These may vary between gateway providers, but this should be relatively consistent.
Each SMS message can contain up to 140 bytes, and the character quota depends on the encoding scheme. For example, an SMS message can contain:
- 160 GSM characters
- The 3GPP TS 23.038 standard (originally GSM recommendation 03.38) defines GSM 7-bit default alphabet which is mandatory for GSM handsets and network elements,[1] but the character set is suitable only for English and a number of Western-European languages. Languages such as Chinese, Korean or Japanese must be transferred using the 16-bit UCS-2character encoding. A limited number of languages, like Portuguese, Spanish, Turkish and a number of languages used in India written with a Brahmic scripts may use 7-bit encoding with national language shift table defined in 3GPP 23.038. For binary messages, 8-bit encoding is used.
- 140 ASCII characters
- 70 UCS-2 characters
When you send an SMS message, you specify the phone number using the E.164 format, a standard phone numbering structure used for international telecommunication. Phone numbers that follow this format can have a maximum of 15 digits along with the prefix of a plus sign and the country code. For example, a US phone number in E.164 format appears as +1XXX5550100.