您现在的位置是:时尚 >>正文
golang华为云短信
时尚9422人已围观
简介华为云短信API的Go SDK,用起来不算复杂,但有几个坑第一次踩的时候挺浪费时间。我最近在一个告警通知服务里接入了它,把过程记一下,给需要的人省点事。 先说依赖。华为云官方提供了Go SDK,模块路 ...
华为云短信API的云短Go SDK,用起来不算复杂,云短但有几个坑第一次踩的云短时候挺浪费时间。我最近在一个告警通知服务里接入了它,云短把过程记一下,云短给需要的云短人省点事。
先说依赖。云短华为云官方提供了Go SDK,云短模块路径是云短 github.com/huaweicloud/huaweicloud-sdk-go-v3。直接 go get 拉下来就行。云短不过要注意版本,云短早期的云短一些tag跟现在的API签名方式不太一样,建议用比较新的云短release。我用的云短当时最新版,没遇到兼容问题。云短
核心代码其实就三块:初始化客户端、构造请求、处理响应。华为云短信走的是 smsapi 这个包,客户端初始化需要 region、endpoint 和认证信息。认证用的是AK/SK,也就是Access Key和Secret Key,在华为云控制台的“我的凭证”里能找到。别把AK/SK硬编码在代码里,用环境变量或者配置文件读取,这个不用多说。
初始化大概长这样:
auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := smsapi.NewSmsClient( smsapi.SmsClientBuilder(). WithRegion(region). WithCredential(auth). Build()) region 比如 cn-north-4,看你短信资源在哪个区域。endpoint一般不用手动指定,SDK会根据region自动拼。
接下来构造发送请求。短信API的请求体比较绕,分成了 SendSmsRequest 和里面的 SendSmsRequestBody。关键字段是 PhoneNumbers、TemplateId、SignName,还有模板参数 TemplateParas。模板参数是个字符串数组,顺序必须跟你在华为云上申请的模板变量顺序一致。这里我第一次就搞错了,模板里是 { 1} 和 { 2},我传参传反了,结果短信内容对不上。华为云的模板变量是 { 1} 开始编号,不是 { 0},别想当然。
发送请求的代码片段:
request := &smsapi.SendSmsRequest{ Body: &smsapi.SendSmsRequestBody{ PhoneNumbers: "8613800000000", TemplateId: "模板ID", SignName: "签名名称", TemplateParas: []string{ "123456", "5"}, }, } response, err := client.SendSms(request) 手机号要带国家码,国内是 86 开头。不带你可能会收到 E000027 之类的错误码。响应里 response.Code 是 "000000" 表示成功,其他都是失败。失败信息在 response.Description 里,但有时候描述比较笼统,得去查华为云的错误码文档。
有个细节:SDK返回的 response 是 *smsapi.SendSmsResponse,如果请求本身没发出去(比如网络问题),err 会是非nil,这时候 response 可能是nil,别直接取 response.Code,会panic。先判 err,再判 response。
另外,华为云短信有流控。默认每个应用每秒能发的条数有限制,超了会返回限流错误。如果你的服务是高频告警,得做重试或者排队。我当时的做法是加了个简单的令牌桶,每秒最多发N条,超出的请求放进队列延迟处理。没上什么复杂框架,就一个带缓冲的channel加定时器,够用了。
日志方面,建议把每次发送的 PhoneNumbers、TemplateId、response.Code 和 response.Description 都记下来。华为云控制台也能看发送记录,但延迟有点大,排查问题时还是本地日志快。尤其是模板参数错误这种,控制台只显示发送失败,不告诉你具体哪个参数有问题。
最后提一句签名。华为云的短信签名必须提前审核通过,而且签名名称跟短信内容里的签名要一致。你代码里传的 SignName 跟控制台申请的不一样,直接报错。这个审核一般几个小时,急用的话提前弄。
整体感觉,华为云Go SDK的API设计还算清晰,但错误处理和参数校验得自己多留神。文档里示例代码是Java和Python居多,Go的示例偏少,有些字段含义得翻源码或者试出来。接入一次之后,后面就是体力活了。
Tags:
相关文章
网站黑屏怎么解决
时尚上个月我同事老张的电脑屏幕突然一片漆黑,光标还能动,桌面图标却全没了。他第一反应是重启,结果开机后依然黑屏,只看得见鼠标箭头在深色背景上孤独地晃动。这场景太熟悉了——不是显示器坏了,是系统资源管理器崩 ...
【时尚】
阅读更多seo网络推广专家
时尚有个做宠物殡葬的客户找我,说投了两个月竞价,烧掉六万块,成交三单。我打开他账户一看,关键词全是“宠物火化”“宠物殡葬服务”这种大词,出价一次三十多块。再搜一下他的自然排名,前五页找不着。这活儿没法干— ...
【时尚】
阅读更多网站维护合同
时尚去年秋天,杭州一家做户外装备的电商公司换了三次网站维护商。原因不复杂:前两家合同里只写了“保证网站正常运行”,结果服务器崩了四小时,对方说“这不属于日常维护范围”。第三份合同,他们把“故障响应时间”写 ...
【时尚】
阅读更多