|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package aliyun
-
- import (
- utils "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils"
- "encoding/json"
- "errors"
- "fmt"
- openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
- dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v4/client"
- util "github.com/alibabacloud-go/tea-utils/v2/service"
- "github.com/alibabacloud-go/tea/tea"
- "strings"
- )
-
- // Description:
- //
- // 使用AK&SK初始化账号Client
- //
- // @return Client
- //
- // @throws Exception
- func CreateClientOwn(accessKeyId, accessKeySecret string) (_result *dysmsapi20170525.Client, _err error) {
- // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
- // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378661.html。
- config := &openapi.Config{
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
- AccessKeyId: tea.String(accessKeyId),
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
- AccessKeySecret: tea.String(accessKeySecret),
- }
- // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
- config.Endpoint = tea.String("dysmsapi.aliyuncs.com")
- _result = &dysmsapi20170525.Client{}
- _result, _err = dysmsapi20170525.NewClient(config)
- return _result, _err
- }
-
- func AliyunSendSmsOwn(accessKeyId, accessKeySecret, phone, signName, templateCode, templateParam string) error {
- client, _err := CreateClientOwn(accessKeyId, accessKeySecret)
- if _err != nil {
- return _err
- }
- sendSmsRequest := &dysmsapi20170525.SendSmsRequest{
- PhoneNumbers: tea.String(phone),
- SignName: tea.String(signName),
- TemplateCode: tea.String(templateCode),
- TemplateParam: tea.String(templateParam),
- }
- runtime := &util.RuntimeOptions{}
- tryErr := func() (_e error) {
- defer func() {
- if r := tea.Recover(recover()); r != nil {
- _e = r
- }
- }()
- // 复制代码运行请自行打印 API 的返回值
- body, _err := client.SendSmsWithOptions(sendSmsRequest, runtime)
- if _err != nil {
- return _err
- }
- if body != nil && body.Body != nil && body.Body.Code != nil && *body.Body.Code != "OK" {
- if body.Body.Message != nil {
- fmt.Println("阿里短信:" + utils.SerializeStr(body))
- }
- return errors.New("发送失败")
- }
- return nil
- }()
-
- if tryErr != nil {
- var error = &tea.SDKError{}
- if _t, ok := tryErr.(*tea.SDKError); ok {
- error = _t
- } else {
- error.Message = tea.String(tryErr.Error())
- }
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- fmt.Println(tea.StringValue(error.Message))
- // 诊断地址
- var data interface{}
- d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
- d.Decode(&data)
- if m, ok := data.(map[string]interface{}); ok {
- recommend, _ := m["Recommend"]
- fmt.Println(recommend)
- }
- _, _err = util.AssertAsString(error.Message)
- if _err != nil {
- return _err
- }
- }
- return _err
- }
|