荣联云通讯短信平台
-
安装
requests
模块
pip install requests
-
配置
-
POST :
https://app.cloopen.com:8883/2013-12-26/Accounts/{accountSid}/SMS/TemplateSMS?sig={SigParameter}
-
请求包头
参数 类型 是否必选 参数说明 accountSid String 必选 账号ID SigParameter String 必选 签名 SigParameter: 账号ID+令牌Token+时间(‘YmdHMS’) 的MD5值
-
请求包头字段
参数 类型 是否必选 参数说明 Accept String 必选 客户端响应接收数据格式 Content-Type String 必选 类型 Content-Length String 必选 Authorization String 必选 携带参数 -
请求包体
参数 类型 是否必选 参数说明 to String 必选 “电话1,电话2,电话3” appId String 必选 应用ID templateId String 必选 datas String 可选 内容数据外层节点,模板如果没有变量,此参数可不传 data String 可选 内容数据,用于替换模板中{序号} -
响应
此步响应只表明客户的短信请求发送成功,不表明短信通道已经发送短信成功。(状态码)
参数 类型 是否必选 参数说明 statusCode String 必选 请求状态码,取值000000(成功) smsMessageSid String 必选 短信唯一标识符 dateCreated String 必选 短信的创建时间
-
-
代码块
import hashlib,base64,requests,json
from datetime import datetime
class YunTongXin:
__base_url = 'https://app.cloopen.com:8883/2013-12-26/Accounts/{}/SMS/TemplateSMS?sig={}'
# 初始化代码
def __init__(self, accid='', appid='', appkey='', temid='',temp_motice='45分钟'):
self.accid = accid
self.appid = appid
self.appkey = appkey
self.temid = temid
self.temp_motice = temp_motice
# md5编码
def __md5(self, raw):
md5 = hashlib.md5()
md5.update(raw.encode('utf-8'))
return md5.hexdigest()
# 获取格式化时间
def __get_format_time(self):
return str(datetime.now().strftime('%Y%m%d%H%M%S'))
# base64编码
def __get_base64_code(self, raw):
st = raw.encode()
return base64.b64encode(st).decode('utf-8')
# 请求包头
def __request_url(self, stamp):
sig = self.__md5(self.accid + self.appkey + stamp).upper() # 生成签名
return self.__base_url.format(self.accid, sig) # https 请求地址
# 请求包头字段
def __request_header(self, stamp):
authorization = self.__get_base64_code(self.accid + ':' + stamp)
return {
'Authorization': authorization, 'Accept': 'application/json;',
'Content-Type': 'application/json;charset=utf-8;'}
# 请求包体
def __request_body(self, phone, code):
return {
"to": ','.join(phone),
"appId": self.appid,
"templateId": self.temid,
"datas": [code, self.temp_motice]
}
# 返回结构化结果
def __ajaxReturn(self, code=92000, msg='', data=[]):
dict = {"code": code, "msg": msg, "data": data}
return json.dumps(dict)
# 发送短信
def send(self, phone=[], code=''):
stamp = self.__get_format_time() # 获取当前格式化时间
url = self.__request_url(stamp) # 请求包地址
headers = self.__request_header(stamp) # 请求包头字段
data = self.__request_body(phone, code)
obj = requests.post(url, headers=headers, json=data)
dict = json.loads(obj.text)
if dict.get('statusCode') == '000000':
return self.__ajaxReturn(msg="发送成功", data={})
else:
return self.__ajaxReturn(code=92001, msg='发送失败', data={"code": dict.get('statusCode')})
# 调用
accid = '' # 账号id
appid = '' # 应用id
appkey = '' # key
temid = '1' # 默认模版
temp_motice = '30分钟' # 参数
phone = ['电话1','电话2'] # 电话号码
code = '' # 短信验证码
# 实例化
yun = YunTongXin(accid=accid,appid=appid,appkey=appkey,temid=temid,temp_motice=temp_motice)
# 发送短信
yun.send(phone, code)