说明

通过短消息给自己发信息很方便,我希望我的网站、任务系统在运行时可以给到必要的提醒。这里使用腾讯云的短消息服务,最好先进行进行网站的备案。

内容

腾讯短消息控制台,简单跟着做就可以了。消息不能随便发,所以要先按提示设置消息模板,再往里面灌数据发送。

控制台:
在这里插入图片描述
短信模板:
在这里插入图片描述

接下来我们看怎么样使用python发送,首先参考腾讯短消息的文档
在这里插入图片描述

在控制台的这里查看自己的【短信应用id】
在这里插入图片描述
之后要插入代码

    # 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666
    req.SmsSdkAppid ='1400006666'

代码部分

要使用python调用短信服务,要先装包,参考
注意最好不要用Mac,说是有证书问题

!pip3 install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python

我在ubuntu主机的jupyter上操作
在这里插入图片描述

在代码中提示要使用【腾讯云账户密钥对】secretId,secretKey
在这里插入图片描述

    # 1 -----------------------------> 【腾讯云账户密钥对】
    cred = credential.Credential(secretId,secretKey)

接下来要使用签名

在这里插入图片描述

在这里插入图片描述
申请签名时要使用域名管理的后台截图,不是那个域名证书,签名好了以后要在代码附加

    # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
    req.Sign = "xxx"

然后是一个流水id,服务器完成后会返回这个id。我理解这个就类似task_id, 方便识别服务器回给你的是哪个提交的返回,这也算是TCP的逻辑吧。

    # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
    req.SessionContext = "test_id_1"

要发送的手机号

    # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
    req.PhoneNumberSet = ["+8613711112222"]

本次发送的模板编号
在这里插入图片描述
在这里插入图片描述

    # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401232626232.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1a2FpMDgwMDg=,size_16,color_FFFFFF,t_70)

    req.TemplateID = "449739"

然后使用模板参数进行参数化,这里给的的列表元素按顺序对应

'''
模板的内容
建议:{1} 目前:{2},温度:{3},湿度:{4},气压:{5} 预计{6}:{7}温度:{8},湿度:{9},气压:{10}
'''
    # 模板参数: 若无模板参数,则设置为空
    req.TemplateParamSet = ["带伞", 

测试

签名没审批通过时发了一次失败

{
  "SendStatusSet": [
    {
      "SerialNo": "",
      "PhoneNumber": "+8613711112222",
      "Fee": 0,
      "SessionContext": "test_id_1",
      "Code": "FailedOperation.SignatureIncorrectOrUnapproved",
      "Message": "signature format is incorrect or signature is not approved",
      "IsoCode": ""
    }
  ],
  "RequestId": "0b9be23f-e134-4e49-8948-a5acd6a07fd9"
}

短信的签名不可以有特殊符号(比如.),多试两次看审批的提示就可以了。

{
  "SendStatusSet": [
    {
      "SerialNo": "2028:f825cc4a1f80389f4100",
      "PhoneNumber": "+8613711112222",
      "Fee": 2,
      "SessionContext": "test_id_1",
      "Code": "Ok",
      "Message": "send success",
      "IsoCode": "CN"
    }
  ],
  "RequestId": "154f17b3-d32d-4395-b265-084c7a8b809d"
}

成功了
在这里插入图片描述

梳理一下一共要自定义哪些

  • 1 短信应用id(SdkAppid)。在控制台申请,例1400006666
  • 2 应用秘钥对(【腾讯云账户密钥对】secretId,secretKey)。在控制台申请,是一堆比较长的码,类似md5。
  • 3 短信签名。在控制台申请,记得申请的截图不是域名证书,而是域名管理后台的截图。
  • 4 正文模板id。在控制台申请,里面按{1},{2}… 的方式设置参数部分。
  • 5 流水号,也就是会话id。每次接口调用服务器的返回,帮你识别是哪个请求的返回。
  • 6 要发送的手机号,到这里才进入实质的流程。
  • 7 要发送的内容参数。

其他

在控制台的基础配置中增加一下安全限制
在这里插入图片描述
在这里插入图片描述
并配置一下紧急联系信息
在这里插入图片描述

字数和计费

字数超过70就会算两条的钱,一条5分钱,两条1毛钱。
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐