目前影刀通知指令有微信通知、企微通知、钉钉通知、飞书通知、邮件通知、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代码到影刀进行封装。
python包名称:tencentcloud-sdk-python
镜像地址:https://mirrors.tencent.com/pypi/simple/tencentcloud-sdk-python/

# 使用提醒:
# 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模块中。
只需将核心代码复制到该模块中即可,根据自身需求进行指令封装,下一步在应用中依据需求进行调用。

模块调用详情图
