package main import ( "encoding/json" "fmt" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" sms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms/v20190711" //引入sms ) func main() { /* 必要步骤: * 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。 * 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。 * 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人, * 以免泄露密钥对危及你的财产安全。 * CAM密匙查询: https://console.cloud.tencent.com/cam/capi*/ credential := common.NewCredential( // os.Getenv("TENCENTCLOUD_SECRET_ID"), // os.Getenv("TENCENTCLOUD_SECRET_KEY"), "xxx", "xxx", ) /* 非必要步骤: * 实例化一个客户端配置对象,可以指定超时时间等配置 */ cpf := profile.NewClientProfile() /* SDK默认使用POST方法。 * 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求 */ cpf.HttpProfile.ReqMethod = "POST" /* SDK有默认的超时时间,非必要请不要进行调整 * 如有需要请在代码中查阅以获取最新的默认值 */ //cpf.HttpProfile.ReqTimeout = 5 /* SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务 * 则必须手动指定域名,例如sms的上海金融区域名: sms.ap-shanghai-fsi.tencentcloudapi.com */ cpf.HttpProfile.Endpoint = "sms.tencentcloudapi.com" /* SDK默认用TC3-HMAC-SHA256进行签名 * 非必要请不要修改这个字段 */ cpf.SignMethod = "HmacSHA1" /* 实例化要请求产品(以sms为例)的client对象 * 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量 */ client, _ := sms.NewClient(credential, "ap-guangzhou", cpf) /* 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数 * 你可以直接查询SDK源码确定接口有哪些属性可以设置 * 属性可能是基本类型,也可能引用了另一个数据结构 * 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明 */ request := sms.NewSendStatusStatisticsRequest() /* 基本类型的设置: * SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。 * SDK提供对基本类型的指针引用封装函数 * 帮助链接: * 短信控制台: https://console.cloud.tencent.com/sms/smslist * sms helper: https://cloud.tencent.com/document/product/382/3773 */ /* 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666 */ request.SmsSdkAppid = common.StringPtr("1400787878") /* 拉取最大条数,最多100条 */ request.Limit = common.Uint64Ptr(0) /* 偏移量 注:目前固定设置为0 */ request.Offset = common.Uint64Ptr(0) /* 开始时间,yyyymmddhh 需要拉取的起始时间,精确到小时 */ request.StartDateTime = common.Uint64Ptr(2019122400) /* 结束时间,yyyymmddhh 需要拉取的截止时间,精确到小时 * 注:EndDataTime 必须大于 StartDateTime */ request.EndDataTime = common.Uint64Ptr(2019122523) // 通过client对象调用想要访问的接口,需要传入请求对象 response, err := client.SendStatusStatistics(request) // 处理异常 if _, ok := err.(*errors.TencentCloudSDKError); ok { fmt.Printf("An API error has returned: %s", err) return } // 非SDK异常,直接失败。实际代码中可以加入其他的处理。 if err != nil { panic(err) } b, _ := json.Marshal(response.Response) // 打印返回的json字符串 fmt.Printf("%s", b) }