This is a Go Package for SMS Gateway
List of supported gateways:
go get github.com/mousav1/sms
Add the config file to the project
In the configuration file, you can choose the default driver and also set the settings of each driver.
{
"default_driver": "Ghasedak",
"drivers": {
"Ghasedak": {
"api_key": "your-ghasedak-api-key",
"line_number": "your-ghasedak-line-number",
"host": "api.ghasedak.io"
},
"Kavenegar": {
"api_key": "your-kavenegar-api-key",
"line_number": "your-kavenegar-line-number",
"host": "api.kavenegar.com"
}
}
}
In your code just use it like this.
cfg, err := config.LoadConfig("config.json")
if err != nil {
log.Fatalf("error loading config: %v", err)
}
// Create an SMS gateway using the loaded configuration
smsGateway, err := provider.NewSMSGateway(configFile)
if err != nil {
fmt.Println("Failed to create SMS gateway:", err)
return
}
// Use the SMS gateway to send messages
response, err := smsGateway.SendSMS("Number", "message")
if err != nil {
fmt.Println("Failed to send SMS:", err)
return
}
1- Add custom driver to the driver directory
2- Create the code structure for the driver
3- Implement driver methods:
// CreateProvider creates an instance of the mydriver provider.
func (g *mydriver) CreateProvider(config config.DriverConfig) (sms.SMSProvider, error) {}
// SendSMS sends an SMS using mydriver.
func (g *mydriver) SendSMS(to, message string) (sms.Response, error) {}
4- Add the driver to the provider.go in package:
var providerFactories = map[string]SMSProviderFactory{
"Kavenegar": &driver.KavenegarProvider{},
"Ghasedak": &driver.GhasedakProvider{},
"mydriver": &driver.mydriver{},
}