基于腾讯云短信-短信通知的实现———by.北方区平平无奇组织
评论
收藏

基于腾讯云短信-短信通知的实现———by.北方区平平无奇组织

经验分享
多金
2023-07-03 21:03·浏览量:2789
多金
发布于 2023-07-03 21:032789浏览

       

语雀链接

https://www.yuque.com/liuqinglong-9n2dn/mo0eon/nlaeg5zgs54w0auv?singleDoc# 《基于腾讯云短信-短信通知的实现》



         目前影刀通知指令有微信通知、企微通知、钉钉通知、飞书通知、邮件通知、iOS 设备通知。但暂时没有短信通知的指令封装。而客户存在使用影刀发送短信消息通知的需求。所以这里做了基于腾讯云短信接口的短信通知python模块实现,供大家参考。

效果展示

实现步骤:

第一步、注册腾讯云账号,并开通腾讯云短信服务

注册腾讯云

https://cloud.tencent.com/register





根据提示信息完成实名认证即可。


开通腾讯云短信服务

直达开通地址:https://console.cloud.tencent.com/smsv2/open

或者在控制台首页直接搜索短信进入

点击开始接入即开通成功,首次开通有100条免费试用短信

第二步、配置短信接口数据(创建应用、创建签名、创建短信模板)

创建应用

可以在创建的应用上个性化管理短信发送任务,例如设置不同的发送频率和发送超量提醒等。但是个人版是只有默认配置不能更改。(这里已有一个默认应用不需要创建了)


点开应用会得到编码实现时信息appid

创建签名

创建签名前需要先去准备一个订阅号,因为调用短信接口是要有正规业务场景的,这一点是国家管控的要审核。所以依据平台要求自用的话要有个人实名认证的网站、公众号、小程序或者App。因为公众号最容易申请,订阅号属于公众号的一种相对于其类型的公众号很容易申请到,所以这里就建议去申请格订阅号来认证标签。

申请订阅号可以参考这位大佬的文章

https://jingyan.baidu.com/article/e6c8503c69ed9fa44e1a18d1.html

完成之后再继续创建签名

国内短信由签名+正文组成,签名符号为【】例如【腾讯云】就是签名,其余为正文,下面的短信中除了验证码是个变量,其他都是固定内容,这些固定内容称其为正文模板

打开签名管理点击创建签名。



签名类型选择公众号

按要求填写所有资料提交申请等待审核完成。

创建正文模板

正文模板也是要审核的所以这里也要根据规范填写,可以一次创建多个模板。




这里注意一下变量的长度,是由限制的可以看一下官方文档。

第三步、代码实现

这里我们利用腾讯云提供的代码自动生成工具“云API”来完成

找到发送短信的调试接口,选择生成python代码

填写参数

点击参数后面的【*】会定位到对应的说明指引。还有两个参数这里没有显示出来但在代码中有,点击页面中获取密匙到密匙管理页面获取。





这里时发送短信的必备参数,基于我们前面的配置到制定位置获取即可。

蓝框里的表单参数是我们必须要获取的
"PhoneNumberSet": [手机号],这里是一个列表,可以填写多个手机号
"SmsSdkAppId": 应用ID,
"SignName": 短信签名,
"TemplateId": 正文模板ID,
"TemplateParamSet": [],正文模板里的参数,可以有多个,根据模板参数个数填写
"SecretId":密匙id
"SecretKey":密匙

填写参数后,自动生成python代码,可以点击在线调试在线调用一下。

最后复制python代码到影刀进行封装。

第四步、使用影刀封装为短信通知指令

1.新建自动化指令,导入项目依赖python包

python包名称:tencentcloud-sdk-python

镜像地址:https://mirrors.tencent.com/pypi/simple/tencentcloud-sdk-python/

2.代码整合

核心代码:
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import json
from tencentcloud import common
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
def main(手机号,模板参数列表,应用ID,短信签名,模板ID,SecretId,SecretKey):
    try:
        # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
        # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
        # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
        cred = credential.Credential(SecretId, SecretKey)
        # 实例化一个http选项,可选的,没有特殊需求可以跳过
        httpProfile = HttpProfile()
        httpProfile.endpoint = "sms.tencentcloudapi.com"

        # 实例化一个client选项,可选的,没有特殊需求可以跳过
        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        # 实例化要请求产品的client对象,clientProfile是可选的
        client = sms_client.SmsClient(cred, "ap-nanjing", clientProfile)

        # 实例化一个请求对象,每个接口都会对应一个request对象
        req = models.SendSmsRequest()
        params = {
            "PhoneNumberSet": [手机号],
            "SmsSdkAppId": 应用ID,
            "SignName": 短信签名,
            "TemplateId": 模板ID,
            "TemplateParamSet": 模板参数列表
        }
        req.from_json_string(json.dumps(params))

        # 返回的resp是一个SendSmsResponse的实例,与请求对象对应
        resp = client.SendSms(req)
        # 输出json格式的字符串回包
        print(resp.to_json_string())
        return resp.to_json_string()

    except TencentCloudSDKException as err:
     print(err)
     #return err.get_message

这段代码放到一个python模块中,在主流程中调用即可。我这里时复制到了一个名为sendMessage.py的python模块中。

2.1.封装短信发送模块

只需将核心代码复制到该模块中即可,根据自身需求进行指令封装,下一步在应用中依据需求进行调用。

模块调用详情图

2.2.参数说明
收藏10
全部评论1
最新
发布评论
评论