Skip to content

mousav1/sms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Golang SMS Gateway

This is a Go Package for SMS Gateway

List of supported gateways:

Install

go get github.com/mousav1/sms

Configure

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"
    }
  }
}

Usage

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
	}

Add custom driver

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{},
}

Releases

No releases published

Packages

No packages published

Languages