# gsms **Repository Path**: qprodn/gsms ## Basic Information - **Project Name**: gsms - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-08-29 - **Last Updated**: 2024-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言, 短信, sms ## README ## 介绍 这是为go开发的短信聚合工具,通过简单的配置即可与短信服务商对接完成,实现发送短信的功能开发 对标java 的sms4j,让go也拥有优秀的短信聚合工具 让对接短信从此变得**简单**、**优雅** ## demo 以下将通过一个简单的demo带你使用gsms `go get -u gitee.com/qprodn/gsms@0.0.1` 1. 注册服务提供商 ```shell tencentProvider := provider.TencentProvider{ BaseSmsProperties: provider.BaseSmsProperties{ ChannelKey: "tx1", TemplateId: "9999999", }, AppId: "999999999", SignName: "测试签名", SecretId: "AK**********************************", SecretKey: "y****************************BX", Region: "ap-guangzhou", } ``` 2. 将服务提供商装在一个切片中 ```go providers := []provider.SmsProvider{&tencentProvider} ``` 3. 设置配置,工具初始化 ```go config := gsms.SmsConfig{ Providers: providers, } err := gsms.Init(config) if err != nil { fmt.Println(err) } ``` 4. 即可填写参数发送短信 ```go templateParams := map[string]string{ "1": "param1", "2": "param2", } phone := []string{"13611111111"} gsms.SendSmsBlend(templateParams, phone) ``` ## 更多使用方法 在配置多个短信服务商的时候,可以通过ChannelKey来指定使用哪家短信服务商的来发送短信 ```go SendSmsDirect(channelKey string, templateId string, params map[string]string, phoneNumbers []string) ``` 在只配置了一家短信服务商的时候,可以不指定ChannelKey,直接使用SendSmsBlend即可 同时也提供了指定模板id发送短信的函数 ```go SendSmsBlendWithTemplateId(templateId string, params map[string]string, phoneNumbers []string) (string, error) ``` 同时也提供异步发送短信函数,给予更强的灵活性 ```go SendSmsDirectAsync(channelKey string, templateId string, params map[string]string, phoneNumbers []string, callback func (string, error)) ``` ## 配置其他厂商 具体可看provider下的短信服务商配置 ```go type AlibabaProvider struct { BaseSmsProperties SignName string AccessKeyId string AccessKeySecret string } ``` 配置好短信服务商后,需要将短信服务商配置添加到providers切片中即可使用 也可自定义短信服务商,实现```baseProvider```中的接口即可接入工具当中 ```go type SmsProvider interface { SendSms(templateId string, templateParams map[string]string, phoneNumbers []string) (string, error) GetChannelKey() string SetHttpClient(httpClient client.HttpClient) GetDefaultTemplateId() string } type BaseSmsProperties struct { ChannelKey string TemplateId string httpClient client.HttpClient } ```