Awesome
go-sms-sender
This is a powerful open-source library for sending SMS message, which will help you to easily integrate with the popular SMS providers. And it has been applied to Casdoor, if you still don’t know how to use it after reading README.md, you can refer to it.
We support the following SMS providers, welcome to contribute.
- Twilio
- Amazon SNS
- Azure ACS
- GCCPAY
- Infobip
- SUBMAIL
- SmsBao
- Alibaba Cloud
- Tencent Cloud
- Baidu Cloud
- VolcEngine
- Huawei Cloud
- UCloud
- Huyi
- Netgsm
- Oson Sms
Installation
Use go get
to install:
go get github.com/casdoor/go-sms-sender
How to use
Create Client
Different SMS providers need to provide different configuration, but we support a unit API as below to init and get the SMS client.
func NewSmsClient(provider string, accessId string, accessKey string, sign string, template string, other ...string) (SmsClient, error)
provider
the name of SMS provider, such asAliyun SMS
accessId
accessKey
sign
the sign nametemplate
the template codeother
other configuration
Send Message
After initializing the SMS client, we can use the following API to send message.
SendMessage(param map[string]string, targetPhoneNumber ...string) error
param
the parameters in the SMS template, such as 6 random numberstargetPhoneNumber
the receivers, such as+8612345678910
Example
Twilio
Please get necessary information from Twilio console
package main
import "github.com/casdoor/go-sms-sender"
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_sender.Twilio, "ACCOUNT_SID", "AUTH_TOKEN", "", "TEMPLATE_CODE")
if err != nil {
panic(err)
}
params := map[string]string{}
params["code"] = "123456"
phoneNumer := "+8612345678910"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
Aliyun
Before you begin, you need to sign up for an Aliyun account and retrieve your Credentials.
package main
import "github.com/casdoor/go-sms-sender"
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_sender.Aliyun, "ACCESS_KEY_ID", "ACCESS_KEY_SECRET", "SIGN_NAME", "TEMPLATE_CODE")
if err != nil {
panic(err)
}
params := map[string]string{}
params["code"] = "473956"
phoneNumer := "+8612345678910"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
Tencent Cloud
package main
import "github.com/casdoor/go-sms-sender"
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_sender.TencentCloud, "secretId", "secretKey", "SIGN_NAME", "TEMPLATE_CODE", "APP_ID")
if err != nil {
panic(err)
}
params := map[string]string{}
params["0"] = "473956"
phoneNumer := "+8612345678910"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
Netgsm
- yourAccessId: is KullaniciAdi
- yourAccessKey: is Sifre
- yourSign: is Baslik
package main
import "github.com/casdoor/go-sms-sender"
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_sender.Netgsm, "yourAccessId", "yourAccessKey", "yourSign", "yourTemplate")
if err != nil {
panic(err)
}
params := map[string]string{}
params["param1"] = "value1"
params["param2"] = "value2"
phoneNumer := "+8612345678910"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
Oson Sms
- senderId: is
login
- secretAccessKey: is
hash
- signName: is
from
- templateCode: is
message
package main
func main() {
client, err := go_sms_sender.NewSmsClient(go_sms_senderOsonSms, "senderId", "secretAccessKey", "signName", "templateCode")
if err != nil {
panic(err)
}
params := map[string]string{}
params["code"] = "123456"
phoneNumer := "+992123456789"
err = client.SendMessage(params, phoneNumer)
if err != nil {
panic(err)
}
}
Running Tests
To run tests for the go-sms-sender
library, navigate to the root folder of the project in your terminal and execute the following command:
go test -v ./...
you can modify mock_test.go file to mock an other tests
License
This project is licensed under the Apache 2.0 license.