04.腾讯云端短信开发

一、短信服务应用申请

准备工作
0)注册公众号
1)创建短信应用 - 应用管理
2)在腾讯云的短信板块下创建国内短信 - 国内短信 > 签名管理(等待审核)
3)申请短信模块 - 国内短信 > 正文模板管理(等待审核)

二、API和SDK的区别

1 API:api接口,第三方厂商,给你提供的http的接口,调用第三方的接口,就可以完成一些事,这就是api接口

2 SDK:软件开发工具包,厂商已经封装了很多底层代码,我们只需要按照文档,使用固定的方法完成固定的事即可(基于api封装出来的)



4 补充
	c语言写的sdk, xx.dll  xx.so  c/c++编译后的动态链接库
    动态链接库:
    	
    from ctypes import *
    #----------以下四种加载DLL方式皆可—————————
    # pDLL = WinDLL("./myTest.dll")
    # pDll = windll.LoadLibrary("./myTest.dll")
    # pDll = cdll.LoadLibrary("./myTest.dll")
    pDll = CDLL("./myTest.dll")

    #调用动态链接库函数(c代码中有这个函数,传入两个参数)
    res = pDll.sum(1,2)
    #打印返回结果
    print(res)

三、python中使用腾讯源短信服务

基本介绍
1)API文档,接口的使用说明,去官方文档拷代码

2)SDK,基于开发语言封装的可以直接调用的功能(工具)集合
    -3.0:更强大,不仅仅有发短信的代码,还有很多其他的
    -2.0:只针对与发短信


安装
	官网sdk使用文档中找到安装命令:pip install qcloudsms_py
使用说明

按照sdk使用说明进行开发:https://cloud.tencent.com/document/product/382/11672

腾讯云发短信测试:t_sms.py
# 所有配置换成申请的数据

# 申请的短信应用 SDK AppID
appid = 1400
# 申请的短信应用 SDK AppKey
appkey = "ba81"
# 申请的短信模板ID,需要在短信控制台中申请
template_id = 5447
# 申请的签名,参数使用的是`签名内容`,而不是`签名ID`
sms_sign = "Owen的技术栈"


from qcloudsms_py import SmsSingleSender
sender = SmsSingleSender(appid, appkey)

import random
def get_code():
    code = ''
    for i in range(4):
        code += str(random.randint(0, 9))
    return code

mobile = 13344556677
# 模板所需参数,和申请的模板中占位符要保持一致
code = get_code()
print(code)
params = [code, 5]
try:
    result = sender.send_with_param(86, mobile, template_id, params, sign=sms_sign, extend="", ext="")
    if result and result.get('result') == 0:
        print('发送成功')
except Exception as e:
    print('短信发送失败:%s' % e)

四、短信服务二次封装

在libs目录下新建tx_sms包

1 在libs目录下新建tx_sms包
	__init__.py
    send_sms.py
    settings.py
2.在 __init__.py文件中
from .send_sms import get_code, send

send_sms.py

from qcloudsms_py import SmsSingleSender

from . import settings

from luffyapi.utils.logger import get_logger
import random

logger = get_logger()


# 随机生成四位数字验证码

# 字符串+数字 在python中报错---》python是动态强类型(不同类型之间不能之间运算)
def get_code():
    code = ''
    for i in range(6):
        code += str(random.randint(0, 9))  # 更牛逼的方法自己实现

    return code


def send(phone, code):
    ssender = SmsSingleSender(settings.APPID, settings.APPKEY)
    try:
        result = ssender.send_with_param(86, phone, settings.TEMPLATE_ID, [code, ], sign=settings.SMS_SING, extend="",
                                         ext="")
          """
        'result': 0表示成功
        result: {'result': 0, 'errmsg': 'OK', 'ext': '', 'sid': '2025dfawefwfjkiokjg984100', 'fee': 1, 'isocode': 'CN'}
        """
        if result.get('result') == 0:
            return True
        else:
            # 记录日志
            logger.warning('%s手机号,短信发送失败' % phone)
            return False
    except Exception as e:
        # 记录日志
        logger.warning('%s手机号,短信发送时出异常' % phone)
        return False

settings.py

# 短信应用 SDK AppID
APPID = 1400519021  # SDK AppID 以1400开头
# 短信应用 SDK AppKey
APPKEY = "17f5e09eb4a5f33ceab0fd336f480b16"

# 需要发送短信的手机号码

# 短信模板ID,需要在短信控制台中申请
TEMPLATE_ID = 951303  # NOTE: 这里的模板 ID`7839` 只是示例,真实的模板 ID 需要在短信控制台中申请
# 签名
SMS_SING = "末流学习"  # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐