go_sms_sender

package module
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2023 License: Apache-2.0 Imports: 31 Imported by: 3

README

go-sms-sender

Go Report Card Go Go Reference GitHub release (latest SemVer)

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.

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 as Aliyun SMS
  • accessId
  • accessKey
  • sign the sign name
  • template the template code
  • other 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 numbers
  • targetPhoneNumber 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)
	}
}

License

This project is licensed under the Apache 2.0 license.

Documentation

Index

Constants

View Source
const (
	Aliyun       = "Aliyun SMS"
	TencentCloud = "Tencent Cloud SMS"
	VolcEngine   = "Volc Engine SMS"
	Huyi         = "Huyi SMS"
	HuaweiCloud  = "Huawei Cloud SMS"
	Twilio       = "Twilio SMS"
	SmsBao       = "SmsBao SMS"
	MockSms      = "Mock SMS"
	SUBMAIL      = "SUBMAIL SMS"
	BaiduCloud   = "Baidu Cloud SMS"
	UCloud       = "UCloud SMS"
	GCCPAY       = "GCCPAY SMS"
	Infobip      = "Infobip SMS"
	Msg91        = "Msg91 SMS"
)
View Source
const AUTH_HEADER_VALUE = "WSSE realm=\"SDP\",profile=\"UsernameToken\",type=\"Appkey\""
View Source
const WSSE_HEADER_FORMAT = "UsernameToken Username=\"%s\",PasswordDigest=\"%s\",Nonce=\"%s\",Created=\"%s\""

Variables

This section is empty.

Functions

func GetMd5String added in v0.0.6

func GetMd5String(s string) string

func Md5 added in v0.9.0

func Md5(str string) string

func RandStringBytesCrypto added in v0.9.0

func RandStringBytesCrypto(n int) (string, error)

Types

type AliyunClient

type AliyunClient struct {
	// contains filtered or unexported fields
}

func GetAliyunClient

func GetAliyunClient(accessId string, accessKey string, sign string, template string) (*AliyunClient, error)

func (*AliyunClient) SendMessage

func (c *AliyunClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type AliyunResult added in v0.6.0

type AliyunResult struct {
	RequestId string
	Message   string
}

type BaiduClient added in v0.8.0

type BaiduClient struct {
	// contains filtered or unexported fields
}

func GetBceClient added in v0.8.0

func GetBceClient(accessId, accessKey, sign, template string, endpoint []string) (*BaiduClient, error)

func (*BaiduClient) SendMessage added in v0.8.0

func (c *BaiduClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type Destination added in v0.9.0

type Destination struct {
	To string `json:"to"`
}

type GCCPAYClient added in v0.9.0

type GCCPAYClient struct {
	// contains filtered or unexported fields
}

func GetGCCPAYClient added in v0.9.0

func GetGCCPAYClient(clientname string, secret string, template string) (*GCCPAYClient, error)

func (*GCCPAYClient) SendMessage added in v0.9.0

func (c *GCCPAYClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type HuaweiClient added in v0.2.0

type HuaweiClient struct {
	// contains filtered or unexported fields
}

func GetHuaweiClient added in v0.2.0

func GetHuaweiClient(accessId string, accessKey string, sign string, template string, other []string) (*HuaweiClient, error)

func (*HuaweiClient) SendMessage added in v0.2.0

func (c *HuaweiClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

SendMessage https://support.huaweicloud.com/intl/en-us/devg-msgsms/sms_04_0012.html

type HuyiClient added in v0.0.6

type HuyiClient struct {
	// contains filtered or unexported fields
}

func GetHuyiClient added in v0.0.6

func GetHuyiClient(appId string, appKey string, template string) (*HuyiClient, error)

func (*HuyiClient) SendMessage added in v0.0.6

func (hc *HuyiClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type InfobipClient added in v0.9.0

type InfobipClient struct {
	// contains filtered or unexported fields
}

func GetInfobipClient added in v0.9.0

func GetInfobipClient(sender string, apiKey string, baseUrl []string) (*InfobipClient, error)

func (*InfobipClient) SendMessage added in v0.9.0

func (c *InfobipClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type InfobipConfigService added in v0.9.0

type InfobipConfigService struct {
	// contains filtered or unexported fields
}

type Message added in v0.9.0

type Message struct {
	From         string        `json:"from"`
	Destinations []Destination `json:"destinations"`
	Text         string        `json:"text"`
}

type MessageData added in v0.9.0

type MessageData struct {
	Messages []Message `json:"messages"`
}

type Mocker added in v0.3.0

type Mocker struct{}

func NewMocker added in v0.3.0

func NewMocker(accessId, accessKey, sign, templateId string, smsAccount []string) (*Mocker, error)

func (*Mocker) SendMessage added in v0.3.0

func (m *Mocker) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type Msg91Client added in v0.10.0

type Msg91Client struct {
	// contains filtered or unexported fields
}

func GetMsg91Client added in v0.10.0

func GetMsg91Client(senderId string, authKey string, templateId string) (*Msg91Client, error)

func (*Msg91Client) SendMessage added in v0.10.0

func (m *Msg91Client) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type SmsBaoClient added in v0.5.0

type SmsBaoClient struct {
	// contains filtered or unexported fields
}

func GetSmsbaoClient added in v0.5.0

func GetSmsbaoClient(username string, apikey string, sign string, template string, other []string) (*SmsBaoClient, error)

func (*SmsBaoClient) SendMessage added in v0.5.0

func (c *SmsBaoClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type SmsClient

type SmsClient interface {
	SendMessage(param map[string]string, targetPhoneNumber ...string) error
}

func NewSmsClient

func NewSmsClient(provider string, accessId string, accessKey string, sign string, template string, other ...string) (SmsClient, error)

type SmsService added in v0.9.0

type SmsService struct {
	// contains filtered or unexported fields
}

type SubmailClient added in v0.6.0

type SubmailClient struct {
	// contains filtered or unexported fields
}

func GetSubmailClient added in v0.6.0

func GetSubmailClient(appid string, signature string, project string) (*SubmailClient, error)

func (*SubmailClient) SendMessage added in v0.6.0

func (c *SubmailClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type SubmailResult added in v0.6.0

type SubmailResult struct {
	Status string `json:"status"`
	Code   int    `json:"code"`
	Msg    string `json:"msg"`
}

type TencentClient

type TencentClient struct {
	// contains filtered or unexported fields
}

func GetTencentClient

func GetTencentClient(accessId string, accessKey string, sign string, templateId string, appId []string) (*TencentClient, error)

func (*TencentClient) SendMessage

func (c *TencentClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type TwilioClient added in v0.4.0

type TwilioClient struct {
	// contains filtered or unexported fields
}

func GetTwilioClient added in v0.4.0

func GetTwilioClient(accessId string, accessKey string, template string) (*TwilioClient, error)

func (*TwilioClient) SendMessage added in v0.4.0

func (c *TwilioClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

SendMessage targetPhoneNumber[0] is the sender's number, so targetPhoneNumber should have at least two parameters

type UcloudClient added in v0.9.0

type UcloudClient struct {
	ProjectId  string
	PrivateKey string
	PublicKey  string
	Sign       string
	Template   string
	// contains filtered or unexported fields
}

func GetUcloudClient added in v0.9.0

func GetUcloudClient(publicKey string, privateKey string, sign string, template string, projectId []string) (*UcloudClient, error)

func (*UcloudClient) SendMessage added in v0.9.0

func (c *UcloudClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

type VolcClient added in v0.0.3

type VolcClient struct {
	// contains filtered or unexported fields
}

func GetVolcClient added in v0.0.3

func GetVolcClient(accessId, accessKey, sign, templateId string, smsAccount []string) (*VolcClient, error)

func (*VolcClient) SendMessage added in v0.0.3

func (c *VolcClient) SendMessage(param map[string]string, targetPhoneNumber ...string) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL