SMS
If you want to verify your users by sending a verification code via SMS you need to provide a SMS gateway service class through the initializer.
This service can also be used by some spaces, and external modules could use it too.
An example class would be something like:
class MySMSGatewayService
attr_reader :mobile_phone_number, :code, :context
def initialize(mobile_phone_number, code, context = {})
@mobile_phone_number = mobile_phone_number
@code = code
@context = context
end
def deliver_code
# Actual code to deliver the code
true
end
end
The arguments provided for the initialize method are:
-
mobile_phone_number
- The full mobile phone number to send the message to, containing the country code. -
code
- The code or the message to be sent to the given mobile phone number. -
context
- An extra context attribute which can be used to pass e.g. the correct organization for the gateway to utilize.
Then you will need to configure it in the Decidim initializer:
config.sms_gateway_service = "MySMSGatewayService"
You can find an example on how this is set up at DecidimBarcelona’s app/services/sms_gateway.rb. Your final implementation will depend on how your SMS provider works.
Another example which also utilizes the context
argument can be found from the Twilio SMS integration available at:
https://github.com/Pipeline-to-Power/decidim-module-ptp/blob/aa82286d91d404e83ea16a55d281a1b049bbaca2/decidim-sms-twilio/lib/decidim/sms/twilio/gateway.rb