最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語(yǔ)言實(shí)現(xiàn)短信發(fā)送實(shí)例探究

 更新時(shí)間:2024年01月04日 14:21:31   作者:github  
這篇文章主要為大家介紹了go語(yǔ)言實(shí)現(xiàn)短信發(fā)送實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

特點(diǎn)

  • 支持目前市面多家服務(wù)商
  • 一套寫(xiě)法兼容所有平臺(tái)
  • 簡(jiǎn)單配置即可靈活增減服務(wù)商
  • 內(nèi)置多種服務(wù)商輪詢(xún)策略、支持自定義輪詢(xún)策略
  • 統(tǒng)一的返回值格式,便于日志與監(jiān)控
  • 更多等你去發(fā)現(xiàn)與改進(jìn)...

平臺(tái)支持

目前支持

  • 阿里云
  • 互億無(wú)線(xiàn)
  • 短信寶
  • 聚合數(shù)據(jù)
  • 網(wǎng)易云信
  • 微網(wǎng)通聯(lián)
  • twilio

環(huán)境需求

  • Golang >= 1.18

安裝

$ go get github.com/pkg6/go-sms

使用

package main
import (
    gosms "github.com/pkg6/go-sms"
    "github.com/pkg6/go-sms/gateways"
    "github.com/pkg6/go-sms/gateways/twilio"
)
func main() {
    sms := gosms.NewParser(gateways.Gateways{Twilio: twilio.Twilio{AccountSID: "ACd********", AuthToken: "***********", TwilioPhoneNumber: "+1********"}})
    // 常規(guī)
    sms.Send(18888888888, gosms.MapStringAny{
        "content":  "您的驗(yàn)證碼是:****。請(qǐng)不要把驗(yàn)證碼泄露給其他人。",
        "template": "SMS_001",
        "data": gosms.MapStrings{
            "code": "6379",
        },
    }, nil)
}

短信內(nèi)容

由于使用多網(wǎng)關(guān)發(fā)送,所以一條短信要支持多平臺(tái)發(fā)送,每家的發(fā)送方式不一樣,但是我們抽象定義了以下公用屬性:

  • content 文字內(nèi)容,使用在像云片類(lèi)似的以文字內(nèi)容發(fā)送的平臺(tái)
  • sign_name 簽名
  • template 模板 ID,使用在以模板ID來(lái)發(fā)送短信的平臺(tái)
  • data 模板變量,使用在以模板ID來(lái)發(fā)送短信的平臺(tái)

所以,在使用過(guò)程中你可以根據(jù)所要使用的平臺(tái)定義發(fā)送的內(nèi)容。

sms.Send(18888888888, gosms.MapStringAny{
    "content":  "您的驗(yàn)證碼是:****。請(qǐng)不要把驗(yàn)證碼泄露給其他人。",
    "template": "SMS_001",
    "data": gosms.MapStrings{
        "code": "6379",
    },
}, nil)

你也可以使用閉包來(lái)返回對(duì)應(yīng)的值:

sms.Send(18888888888, gosms.MapStringAny{
    "content": func(gateway gosms.IGateway) string {
        return "您的驗(yàn)證碼是:****。請(qǐng)不要把驗(yàn)證碼泄露給其他人。"
    },
    "template": func(gateway gosms.IGateway) string {
        if gateway.GetName() == "aliyun" {
            return "TP2818"
        }
        return "SMS_001"
    },
    "data": func(gateway gosms.IGateway) gosms.MapStrings {
        return map[string]string{
            "code": "1234",
        }
    },
}, nil)

發(fā)送網(wǎng)關(guān)

默認(rèn)使用初始化中的網(wǎng)關(guān)發(fā)送,如果某一條短信你想要覆蓋默認(rèn)的設(shè)置。在 send 方法中使用第三個(gè)參數(shù)即可:

sms := gosms.NewGateways(twilio.GateWay("ACd********", "***********", "+1***********"))
sms.Send(18888888888, gosms.MapStringAny{
    "content": "您的驗(yàn)證碼是:****。請(qǐng)不要把驗(yàn)證碼泄露給其他人。",
}, nil)

自定義網(wǎng)關(guān)

本拓展已經(jīng)支持用戶(hù)自定義網(wǎng)關(guān),你可以很方便的配置即可當(dāng)成與其它拓展一樣的使用:

sms := gosms.NewGateways()
sms.Extend("aliyun", aliyun.GateWay("accessKeyId", "accessKeySecret"))
sms.Send(18888888888, gosms.MapStringAny{
    "content": "您的驗(yàn)證碼是:****。請(qǐng)不要把驗(yàn)證碼泄露給其他人。",
}, []string{"aliyun"})

自定義網(wǎng)關(guān)實(shí)現(xiàn)接口

// IGateway 網(wǎng)關(guān)
type IGateway interface {
    // I 用于初始化默認(rèn)值
    I() IGateway
    // GetName 網(wǎng)關(guān)名稱(chēng)
    GetName() string
    // Send 發(fā)送操作
    Send(to IPhoneNumber, message IMessage) (SMSResult, error)
}

通過(guò)Sender函數(shù)去發(fā)送

package main
import (
    "fmt"
    gosms "github.com/pkg6/go-sms"
    "github.com/pkg6/go-sms/gateways/twilio"
)
func main() {
    gateway := twilio.GateWay("ACd********", "********", "+1111111")
    var message = gosms.MessageContent("Hello from Twilio")
    number := gosms.CHNPhoneNumber(18888888888)
    result, err := gosms.Sender(number, message, gateway)
    if resp, ok := result.ClientResult.Response.(twilio.Response); ok {
        fmt.Println(resp)
    }
    fmt.Println(err)
}

總結(jié)

以上就是go語(yǔ)言實(shí)現(xiàn)短信發(fā)送實(shí)例探究的詳細(xì)內(nèi)容,更多關(guān)于go語(yǔ)言發(fā)送短信的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談Go語(yǔ)言的空標(biāo)示符

    淺談Go語(yǔ)言的空標(biāo)示符

    本文通過(guò)文字及實(shí)例介紹了Go語(yǔ)言的空標(biāo)示符,對(duì)此有不明白的朋友可以參考學(xué)習(xí),下面一起來(lái)看看吧。
    2016-08-08
  • Go語(yǔ)言基礎(chǔ)go doc命令用法及示例詳解

    Go語(yǔ)言基礎(chǔ)go doc命令用法及示例詳解

    這篇文章主要為大家介紹了Go語(yǔ)言基礎(chǔ)go doc命令的用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2021-11-11
  • 解析Golang中的鎖競(jìng)爭(zhēng)問(wèn)題

    解析Golang中的鎖競(jìng)爭(zhēng)問(wèn)題

    這篇文章主要介紹了golang中的鎖競(jìng)爭(zhēng)問(wèn)題,本文通過(guò)實(shí)例代碼給大家詳細(xì)講解,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • Go語(yǔ)言Cookie用法分析

    Go語(yǔ)言Cookie用法分析

    這篇文章主要介紹了Go語(yǔ)言Cookie用法,結(jié)合實(shí)例形式分析了Go語(yǔ)言Cookie的設(shè)置、讀取等相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • go的websocket實(shí)現(xiàn)原理與用法詳解

    go的websocket實(shí)現(xiàn)原理與用法詳解

    這篇文章主要介紹了go的websocket實(shí)現(xiàn)原理與用法,詳細(xì)分析了websocket的功能、原理及Go語(yǔ)言實(shí)現(xiàn)websocket的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • golang使用aes庫(kù)實(shí)現(xiàn)加解密操作

    golang使用aes庫(kù)實(shí)現(xiàn)加解密操作

    這篇文章主要介紹了golang使用aes庫(kù)實(shí)現(xiàn)加解密操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go語(yǔ)言中的速率限流策略全面詳解

    Go語(yǔ)言中的速率限流策略全面詳解

    這篇文章主要為大家介紹了Go語(yǔ)言中的速率限流策略全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Go Excelize API源碼解讀GetSheetViewOptions與SetPageLayout

    Go Excelize API源碼解讀GetSheetViewOptions與SetPageLayo

    這篇文章主要為大家介紹了Go Excelize API源碼解讀GetSheetViewOptions與SetPageLayout方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • GO開(kāi)發(fā)編輯器安裝圖文詳解

    GO開(kāi)發(fā)編輯器安裝圖文詳解

    這篇文章主要介紹了GO開(kāi)發(fā)編輯器安裝,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Go語(yǔ)言中字符串賦值中的問(wèn)題與解決方法

    Go語(yǔ)言中字符串賦值中的問(wèn)題與解決方法

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中字符串賦值會(huì)出現(xiàn)的一些問(wèn)題以及解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2024-12-12

最新評(píng)論

珠海市| 博客| 墨玉县| 阳曲县| 吉木萨尔县| 克山县| 巴楚县| 东阳市| 新源县| 鄄城县| 疏附县| 共和县| 咸丰县| 孙吴县| 桦南县| 古丈县| 黎川县| 庆安县| 余庆县| 连江县| 双鸭山市| 枞阳县| 武山县| 津南区| 宣化县| 屏南县| 历史| 嘉兴市| 元江| 宁蒗| 雷山县| 肃北| 斗六市| 商城县| 天峨县| 绿春县| 宜川县| 娄烦县| 阿城市| 离岛区| 贺兰县|