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 (such as Votings), 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