Beispiel #1
0
 def get_client(self):
     # Required steps:
     # Instantiate an authentication object. The Tencent Cloud account key pair `secretId` and `secretKey` need to be passed in as the input parameters.
     # The example here uses the way to read from the environment variable, so you need to set these two values in the environment variable first.
     # You can also write the key pair directly into the code, but be careful not to copy, upload, or share the code to others;
     # otherwise, the key pair may be leaked, causing damage to your properties.
     # Query the CAM key: https://console.cloud.tencent.com/cam/capi
     cred = credential.Credential(self.tencent_sms_secret_id,
                                  self.tencent_sms_secret_key)
     # cred = credential.Credential(
     #     os.environ.get(""),
     #     os.environ.get("")
     # )
     # (Optional) Instantiate an HTTP option
     httpProfile = HttpProfile()
     # If you need to specify the proxy for API access, you can initialize HttpProfile as follows
     # httpProfile = HttpProfile(proxy="http://*****:*****@proxy IP:proxy port")
     httpProfile.reqMethod = "POST"  # POST request (POST request by default)
     httpProfile.reqTimeout = 30  # Request timeout period in seconds (60 seconds by default)
     httpProfile.endpoint = "sms.tencentcloudapi.com"  # Specify the access region domain name (nearby access by default)
     # Optional steps:
     # Instantiate a client configuration object. You can specify the timeout period and other configuration items
     clientProfile = ClientProfile()
     clientProfile.signMethod = "TC3-HMAC-SHA256"  # Specify the signature algorithm
     clientProfile.language = "en-US"
     clientProfile.httpProfile = httpProfile
     # Instantiate the client object of the requested product (with SMS as an example)
     # The second parameter is the region information. You can directly enter the string `ap-guangzhou` or import the preset constant
     client = SmsClient(cred, self.tencent_sms_region, clientProfile)
     return client
Beispiel #2
0
def login():
    # if request.method == 'POST':
    # 获取通过url请求传参的数据
    Phone = request.form.get("Phone")
    Code = request.form.get("Code")
    print('Phone')
    # 获取url请求传的密码,明文
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
        # 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值
        # 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人
        # CAM 密钥查询:https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential("AKIDDBub3vFl6DZfaGe26B0cy6yb7d1Arcvy",
                                     "zkEgy1pIWUBdQy291tWhlYooZ5uVt1u4")
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )
        # 实例化一个 http 选项,可选,无特殊需求时可以跳过
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # POST 请求(默认为 POST 请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
        # # 非必要步骤:
        # # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
        req = models.SendSmsRequest()
        req.SmsSdkAppid = "1400464331"
        # # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
        req.Sign = "JiuKey"
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = "xxx"
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [Phone]
        # 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
        req.TemplateID = "818049"
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [Code]
        # # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
        resp = client.SendSms(req)
        # 输出 JSON 格式的字符串回包
        print(resp.to_json_string(indent=2))
        return Phone

    except TencentCloudSDKException as err:
        print(err)
    return 'success'
Beispiel #3
0
    def send_message(self, PhoneNumberSet, TemplateID, TemplateParamSet):
        """
        :param PhoneNumberSet: 发送手机号
        :param TemplateID: 短信模板ID
        :param TemplateParamSet: 模板中的参数
        :return:
        """
        cred = credential.Credential(self.apiId, self.apiKey)

        # 实例化一个 http 选项,可选,无特殊需求时可以跳过
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # POST 请求(默认为 POST 请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        # httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile
        # 实例化 SMS 的 client 对象
        # 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-shanghai", clientProfile)

        messageDict = {
            "PhoneNumberSet": PhoneNumberSet,
            "TemplateID": TemplateID,
            "SmsSdkAppid": smsAppId,
            "Sign": sign,
            "TemplateParamSet": TemplateParamSet,
        }

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        req = requestSms(messageDict)

        try:
            # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
            resp = client.SendSms(req)
            # 输出 JSON 格式的字符串回包
            print(resp.to_json_string(indent=2))
            resp = json.loads(
                resp.to_json_string(indent=0).replace(
                    r"\n", "")).get("SendStatusSet")[0]
            return resp
        except TencentCloudSDKException as err:
            print(err)
            err = {
                key.capitalize(): value
                for key, value in err.__dict__.items()
            }
            return err
Beispiel #4
0
    def __init__(self, secret_id: str, secret_key: str, sdkappid: str):
        self.sdkappid = sdkappid

        cred = credential.Credential(secret_id, secret_key)
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile
        self.client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
Beispiel #5
0
def get_provider_client(name=None):
    """
    Return a new provider client
    """
    provider = get_configured_provider()

    secretId = provider.get("id")
    secretKey = provider.get("key")
    region = __get_location(None)

    cpf = ClientProfile()
    cpf.language = "en-US"
    crd = credential.Credential(secretId, secretKey)

    if name == "cvm_client":
        client = cvm_client.CvmClient(crd, region, cpf)
    elif name == "vpc_client":
        client = vpc_client.VpcClient(crd, region, cpf)
    else:
        raise SaltCloudSystemExit("Client name {} is not supported".format(name))

    return client
Beispiel #6
0
def send_sms(content, phones):
    try:
        logger.info(f"========{content}")
        secret_id, secret_key = __acquire_sms_config()
        cred = credential.Credential(secret_id, secret_key)
        # 实例化要请求产品(以cvm为例)的client对象
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        client = sms_client.SmsClient(cred, "ap-beijing", clientProfile)
        # 实例化一个请求对象
        req = models.SendSmsRequest()
        req.SmsSdkAppid = "1400301649"
        req.Sign = "爱极客"
        req.PhoneNumberSet = phones
        req.TemplateID = "599228"
        req.TemplateParamSet = content
        resp = client.SendSms(req)
        result = resp.to_json_string(indent=2)
        print(resp.to_json_string(indent=2))
        for status in json.loads(resp.to_json_string(indent=2)).get(
                "SendStatusSet", {}):
            # 现在只发送一条短信数据
            code = status.get("Code")
            if code.lower() == "ok":
                break
            else:
                return False
        return True
    except Exception as e:
        print(e)
        return False
Beispiel #7
0
 def send_message_by_sms(cls, message):
     cred = credential.Credential(SMSConfig.secretId, SMSConfig.secretKey)
     # 实例化一个http选项,可选的,没有特殊需求可以跳过。
     httpProfile = HttpProfile()
     # 如果需要指定proxy访问接口,可以按照如下方式初始化hp
     httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
     httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
     httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
     # 实例化一个客户端配置对象,可以指定超时时间等配置
     clientProfile = ClientProfile()
     clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
     clientProfile.language = "en-US"
     clientProfile.httpProfile = httpProfile
     # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
     client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
     req = models.SendSmsRequest()
     # 基本类型的设置:
     req.SmsSdkAppId = SMSConfig.SdkAppId
     # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
     req.SignName = SMSConfig.signName
     # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
     req.ExtendCode = ""
     # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
     req.SessionContext = "xxx"
     # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
     req.SenderId = ""
     # 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号]
     # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
     req.PhoneNumberSet = SMSConfig.sendPhone
     # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
     req.TemplateId = SMSConfig.templateId
     # 模板参数: 若无模板参数,则设置为空
     req.TemplateParamSet = [i for i in message[0].split(',') if i]
     # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
     # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
     resp = client.SendSms(req)
     print(resp)
Beispiel #8
0
def send_vcode_sms(tel, code):
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
        # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
        # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
        # 以免泄露密钥对危及你的财产安全。
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(TencentCloud_SecretId,
                                     TencentCloud_SecretKey)
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化一个http选项,可选的,没有特殊需求可以跳过。
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
        # SDK提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = SMS_SmsSdkAppid
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "王冬代码练习"
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = ""
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = ["+86%s" % tel]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = SMS_TemplateID
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [code, variable.VERIFY_CODE_EXPIRE_TIME_CN]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        print(resp.to_json_string())
        if resp.SendStatusSet[0].Code == "Ok" and resp.SendStatusSet[
                0].Message == "send success":
            return True
        else:
            # 发送失败,则打日志
            logger.warning(
                "tel:%s || vote:%s || RequestId:%s" %
                (tel, resp.SendStatusSet[0].Message, resp.RequestId))
            return resp.SendStatusSet[0].Message

    except TencentCloudSDKException as err:
        # 报错,则打日志
        logger.error("tel:%s || vote:%s" % (tel, str(err)))
        print(err)

    # 示例正常的返回值 res 的值
    """
    {
        "SendStatusSet": [
            {
                "SerialNo": "2019:538884*********",
                "PhoneNumber": "+86182********",
                "Fee": 1,
                "SessionContext": "",
                "Code": "Ok",
                "Message": "send success"
            }
        ],
        "RequestId": "bf0d639e-9956-4366-be0f-a23001900ce0"
    }
    """
    return '发送失败,未知原因'
Beispiel #9
0
from tencentcloud.common.profile.http_profile import HttpProfile
try:
    # 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey
    cred = credential.Credential(os.environ.get("TENCENTCLOUD_SECRET_ID"),
                                 os.environ.get("TENCENTCLOUD_SECRET_KEY"))

    # 实例化一个http选项,可选的,没有特殊需求可以跳过。
    httpProfile = HttpProfile()
    httpProfile.reqMethod = "GET"  # post请求(默认为post请求)
    httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
    httpProfile.endpoint = "cvm.ap-shanghai.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

    # 实例化一个client选项,可选的,没有特殊需求可以跳过。
    clientProfile = ClientProfile()
    clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
    clientProfile.language = "en-US"
    clientProfile.httpProfile = httpProfile

    # 实例化要请求产品(以cvm为例)的client对象,clientProfile是可选的。
    client = cvm_client.CvmClient(cred, "ap-shanghai", clientProfile)

    # 实例化一个cvm实例信息查询请求对象,每个接口都会对应一个request对象。
    req = models.DescribeInstancesRequest()

    # 填充请求参数,这里request对象的成员变量即对应接口的入参。
    # 你可以通过官网接口文档或跳转到request对象的定义处查看请求参数的定义。
    respFilter = models.Filter()  # 创建Filter对象, 以zone的维度来查询cvm实例。
    respFilter.Name = "zone"
    respFilter.Values = ["ap-shanghai-1", "ap-shanghai-2"]
    req.Filters = [respFilter]  # Filters 是成员为Filter对象的列表
Beispiel #10
0
    def tencent_send(phone_num):
        try:
            # 必要步骤:
            # 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
            # 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值
            # 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人
            # CAM 密钥查询:https://console.cloud.tencent.com/cam/capi

            # cred = credential.Credential("secretId","secretKey")
            cred = credential.Credential(os.environ.get("secretId"),
                                         os.environ.get("secretKey"))
            # print(os.environ.get("secretId"))
            verify_code = str(int((random.uniform(0, 1) * 9 + 1) * 100000))
            phone = '+86' + phone_num

            # 实例化一个 http 选项,可选,无特殊需求时可以跳过
            httpProfile = HttpProfile()
            httpProfile.reqMethod = "POST"  # POST 请求(默认为 POST 请求)
            httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
            httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

            # 非必要步骤:
            # 实例化一个客户端配置对象,可以指定超时时间等配置
            clientProfile = ClientProfile()
            clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
            clientProfile.language = "en-US"
            clientProfile.httpProfile = httpProfile

            # 实例化 SMS 的 client 对象
            # 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量
            client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

            # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
            # 您可以直接查询 SDK 源码确定 SendSmsRequest 有哪些属性可以设置
            # 属性可能是基本类型,也可能引用了另一个数据结构
            # 推荐使用 IDE 进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
            req = models.SendSmsRequest()

            # 基本类型的设置:
            # SDK 采用的是指针风格指定参数,即使对于基本类型也需要用指针来对参数赋值
            # SDK 提供对基本类型的指针引用封装函数
            # 帮助链接:
            # 短信控制台:https://console.cloud.tencent.com/smsv2
            # sms helper:https://cloud.tencent.com/document/product/382/3773

            # 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666
            req.SmsSdkAppid = "1400401547"
            # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
            req.Sign = "瑞选网"
            # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
            req.ExtendCode = ""
            # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
            req.SessionContext = "xxx"
            # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
            req.SenderId = ""
            # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
            # 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
            req.PhoneNumberSet = [
                phone,
            ]
            # 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
            req.TemplateID = "665620"
            # 模板参数: 若无模板参数,则设置为空
            req.TemplateParamSet = [
                verify_code,
            ]

            # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
            resp = client.SendSms(req)

            # 输出 JSON 格式的字符串回包
            re_data = json.loads(resp.to_json_string(indent=2))
            print(re_data)
            if resp and re_data.get('SendStatusSet')[0].get('Code') == 'Ok':
                return verify_code
            else:
                return None

            # if re_data.get('code') == 2:
            #     return verify_code
            # else:
            #     return None

        except TencentCloudSDKException as err:
            print(err)
Beispiel #11
0
 def SetClientProfile(self, clientProfile: ClientProfile, httpProfile: HttpProfile) -> None:
     clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
     clientProfile.language = "en-US"  # 指定展示英文(默认为中文)
     clientProfile.httpProfile = httpProfile
     return
Beispiel #12
0
def send_sms(phone_number, code, minute):
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
        # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
        # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
        # 以免泄露密钥对危及你的财产安全。
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(secret_id, secret_key)
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化一个http选项,可选的,没有特殊需求可以跳过。
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
        # SDK提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 以下信息根据需要进行更改
        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = SmsSdkAppid
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = SmsSign
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = "123456"
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        phone_number = "+86" + str(phone_number)
        req.PhoneNumberSet = [phone_number]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        req.TemplateID = SmsTemplateID
        # 模板参数: 若无模板参数,则设置为空 验证码 验证时间
        req.TemplateParamSet = [str(code), str(minute)]

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        # print(resp.to_json_string(indent=2).get("SendStatusSet").get("Code"))
        """
        {'SendStatusSet': [{'SerialNo': '2019:2486505420595011479', 'PhoneNumber': '+86135555555', 'Fee': 1, 'SessionContext': '123456', 'Code': 'Ok', 'Message': 'send success'}], 'RequestId': '21a4489f-f873-4115-bc08-1aaa5c8aa91c'}

        """

        code = json.loads(resp.to_json_string(indent=2))
        data = code.get("SendStatusSet")[0].get("Code")
        return data

    except TencentCloudSDKException as err:
        print(err)
        return "Error"
Beispiel #13
0
def send_notification(params, phone='+8618861805533', template='success'):
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
        # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
        # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
        # 以免泄露密钥对危及你的财产安全。
        # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(appid, appsecret)
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化一个http选项,可选的,没有特殊需求可以跳过。
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 30  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        # 实例化要请求产品(以sms为例)的client对象
        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
        # SDK提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台: https://console.cloud.tencent.com/sms/smslist
        # sms helper: https://cloud.tencent.com/document/product/382/3773

        # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
        req.SmsSdkAppid = "1400351701"
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
        req.Sign = "徐浩宇的主页"
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = ""
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = [phone]
        # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
        if template == 'success':
            req.TemplateID = "578337"
        elif template == 'error':
            req.TemplateID = "577893"

        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = params

        # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
        # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        print(resp.to_json_string(indent=2))

    except TencentCloudSDKException as err:
        print(err)
Beispiel #14
0
def send_sms(mobile=None, code=None):
    """发送短信"""
    try:
        # 必要步骤:
        # 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
        # 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值
        # 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人
        # CAM 密钥查询:https://console.cloud.tencent.com/cam/capi
        cred = credential.Credential(TENCENT_SECRETID, TENCENT_SECRETKEY)
        ssl._create_default_https_context = ssl._create_unverified_context
        # cred = credential.Credential(
        #     os.environ.get(""),
        #     os.environ.get("")
        # )

        # 实例化一个 http 选项,可选,无特殊需求时可以跳过
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # POST 请求(默认为 POST 请求)
        httpProfile.reqTimeout = 60  # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)

        # 非必要步骤:
        # 实例化一个客户端配置对象,可以指定超时时间等配置
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile

        # 实例化 SMS 的 client 对象
        # 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        # 您可以直接查询 SDK 源码确定 SendSmsRequest 有哪些属性可以设置
        # 属性可能是基本类型,也可能引用了另一个数据结构
        # 推荐使用 IDE 进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
        req = models.SendSmsRequest()

        # 基本类型的设置:
        # SDK 采用的是指针风格指定参数,即使对于基本类型也需要用指针来对参数赋值
        # SDK 提供对基本类型的指针引用封装函数
        # 帮助链接:
        # 短信控制台:https://console.cloud.tencent.com/smsv2
        # sms helper:https://cloud.tencent.com/document/product/382/3773

        # 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666
        req.SmsSdkAppid = TENCENT_SMSSDKAPPID
        # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
        req.Sign = TENCENT_SIGN
        # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
        req.ExtendCode = ""
        # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
        req.SessionContext = "xxx"
        # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
        req.SenderId = ""
        # 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
        # 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
        req.PhoneNumberSet = ["+86" + mobile]
        # 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
        req.TemplateID = TENCENT_TEMPLATEID
        # 模板参数: 若无模板参数,则设置为空
        req.TemplateParamSet = [code]

        # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
        resp = client.SendSms(req)

        # 输出 JSON 格式的字符串回包
        logger.info(resp.to_json_string(indent=2))

    except TencentCloudSDKException as err:
        logger.info(err)