SMS Service

This service is capable of sending sms messages using different providers . We supports next providers twilio sinch kavenegar link mobility mobica

Register the service into your main.go file:

registry.ServiceProviderSMS(sms.NewTwilioProvider, sms.NewSinchProvider)
1

Access the service:

service.DI().SMS()
1
Dependencies :

ClockService, ORMConfigService

Every request is saved in SmsTrackerEntity. So you will be able to track every sms

We support defining primary and secondary providers. If primary fails we try to send a message with the secondary provider.

We can set default providers and providers per message as well

Default providers are set at ServiceProviderSMS() Providers per message are set at SendMessage()

The method SendMessage used to send simple message

type Message struct {
	Text     string
	Number   string
	Provider *Provider
}
1
2
3
4
5
configs
sms:
  sandbox_mode: false
  twilio:
    sid: ENV[SMS_TWILIO_SID]
    token: ENV[SMS_TWILIO_TOKEN]
    from_number: ENV[SMS_TWILIO_FROM_NUMBER]
  kavenegar:
    api_key: ENV[SMS_KAVENEGAR_API_KEY]
    sender: ENV[SMS_KAVENEGAR_SENDER]
  sinch:
    app_id: ENV[SMS_SINCH_APP_ID]
    app_secret: ENV[SMS_SINCH_APP_SECRET]
    msg_url: ENV[SMS_SINCH_MSG_URL]
    from_number: ENV[SMS_SINCH_FROM_NUMBER]
  mobica:
    email: ENV[SMS_MOBICA_EMAIL]
    password: ENV[SMS_MOBICA_PASSWORD]
    route: ENV[SMS_MOBICA_ROUTE]
    from: ENV[SMS_MOBICA_FROM]
    endpoint: ENV[SMS_MOBICA_ENDPOINT]
  link_mobility:
    service: ENV[SMS_LINK_MOBILITY_SERVICE]
    key: ENV[SMS_LINK_MOBILITY_KEY]
    secret: ENV[SMS_LINK_MOBILITY_SECRET]
    endpoint: ENV[SMS_LINK_MOBILITY_ENDPOINT]
    shortcode: ENV[SMS_LINK_MOBILITY_SHORTCODE]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

If you set sandbox_mode=true we won't send real sms to the customer