更新时间:2022-09-16 GMT+08:00
Python
- 本文档所述Demo在提供服务的过程中,可能会涉及个人数据的使用,建议您遵从国家的相关法律采取足够的措施,以确保用户的个人数据受到充分的保护。
- 本文档所述Demo仅用于功能演示,不允许客户直接进行商业使用。
- 本文档信息仅供参考,不构成任何要约或承诺。
发送短信
# -*- coding: utf-8 -*- import json import requests # 需要先使用pip install requests命令安装依赖 # 必填,请参考"开发准备"获取如下数据,替换为实际值 url = 'https://ip:port/common/sms/sendTemplateMessage' # APP接入地址+接口访问URI msisdn = ['8612345678911'] #手机号码,多个手机号以,号分隔,例如:['8612345678911','8612345678912'] smsTemplateId = "SMS_21060200001" # 模板ID templateParas = {"VarName": "VarValue"} # 1、当发送短信使用的是无变量的模板时,请删除本行代码。2、当发送短信使用的是带变量的模板时,需要配置本行代码。VarName表示模板中变量的参数名称,VarValue表示该变量实际要配置的参数值,请按照实际情况配置VarName和VarValue。若需要配置多个变量,请参考本行代码格式进行添加。 account = 'account' # 实际账号 password = 'password' # 实际密码 signature = '【huawei】' # 签名名称 def main(): # 请求Headers header = {'Content-Type': 'application/json;charset=UTF-8'} # 当发送短信使用的是无变量模板时,不需要添加templateParas参数。 mtSmsMessage = { 'mobiles': msisdn, 'templateId': smsTemplateId, 'templateParas': templateParas, 'signature': signature, } requestLists = [mtSmsMessage] # 请求Body formData = {'account': account, 'password': password, 'requestLists': requestLists, 'statusCallback': 'https://ip:port/common/sms/notifyReportMessage' } # 为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题 r = requests.post(url, data=json.dumps(formData, ensure_ascii=False).encode("utf-8"), headers=header, verify=False) print(r.text) # 打印响应信息 if __name__ == '__main__': main()
上行短信接收
# -*- coding: utf-8 -*- import urllib.parse # 上行短信通知样例(urlencode) updata = "mobile=%2B12345678911&content=***&sendTime=20220127020758&extCode="; ''' 解析上行短信通知数据 @param data: 短信平台推送的上行短信通知数据 @return: ''' def onSmsUpData(data): keyValues = urllib.parse.parse_qs(data); #解析上行短信通知数据 ''' Example: 此处以解析content为例,请按需解析所需参数并自行实现相关处理 'mobile': 上行短信手机号 'content': 短信内容 'sendTime': 上行短信时间 'extCode': 扩展码 ''' content = keyValues.get('content'); #上行短信发送的内容 print('Sms up data. Content: ', content[0]); if __name__ == '__main__': onSmsUpData(updata)
状态报告接收
# -*- coding: utf-8 -*- import urllib.parse # 短信平台上报状态报告数据样例(urlencode) #success_body = "requestId=20220126&mobile=12345678911&messageId=2022012619403400&status=DELIVRD&resultCode=000000&resultDesc=success&smsCount=null&receiveTime=null"; failed_body = "requestId=20220126&mobile=12345678911&messageId=2022012619403400&status=E200027&resultCode=1020001&resultDesc=Parameter error&smsCount=null&receiveTime=null"; ''' 解析状态报告数据 @param data: 短信平台上报的状态报告数据 @return: ''' def onSmsStatusReport(data): keyValues = urllib.parse.parse_qs(data); #解析状态报告数据 ''' Example: 此处以解析status为例,请按需解析所需参数并自行实现相关处理 'messageId': 短信唯一标识 'smsCount': 长短信拆分条数 'receiveTime': 资源更新时间 'status': 状态码 ''' status = keyValues.get('status'); #状态报告枚举值 # 通过status判断短信是否发送成功 if 'DELIVRD' == str.upper(status[0]): print('Send sms success. messageId: ', keyValues.get('messageId')[0]); else: # 发送失败,打印status print('Send sms failed. messageId: ', keyValues.get('messageId')[0]); print('Failed status: ', status[0]); if __name__ == '__main__': # onSmsStatusReport(success_body) onSmsStatusReport(failed_body)
父主题: API样例代码