django中基于python3.6使用容联发送短信

匿名 (未验证) 提交于 2019-12-02 22:51:30

一. Django基于python3.6使用容联发送短信流程

  容联官方的python支持2.7版本,当我们python解释器采用3版本时,需要修改容联接口中的一些参数及方法。

  首先去容联官网注册账号,申请测试账号无需实名认证,而且开始账号自带8元钱,一条短信大概2分。

1.1 调用接口前的准备

  首先注册登录之后再控制台中添加测试号码:

  点击导航栏的开发文档:

  选择短信开发手册:

  之后点击Demo示例:

  下载基于python的Demo:

  下载完成后解压,将其中的两个文件复制:

  然后在python项目文件夹下新建文件夹,比如libs,里面再新建一个文件夹,将这两个文件黏贴在其中:

  然后在yuntongxun文件下新建sms.py文件,同时将接口调用示例中年的代码复制黏贴至其中:

  将sms.py中的报错修改一下:

  以上几个参数在控制台中可以看到:

  同时可以修改一下sms.py文件中调用接口的函数,修改一下返回的信息,方便后续加入自己的逻辑,这里我将其函数名也修改了:

def send_msg(to, datas, tempId):     # 初始化REST SDK     rest = REST(serverIP, serverPort, softVersion)     rest.setAccount(accountSid, accountToken)     rest.setAppId(appId)      result = rest.sendTemplateSMS(to, datas, tempId)     if result.get('statusCode') == '000000':         print('发送成功')         return True     else:         print('发送失败')         return False

  result中的信息可以在开发文档中查看:

1.2 使用容联接口

  打开CCPRestSDK.py发现报错:

  将其中的模块修改如下,修改三个地方:

# 修改 from hashlib import md5 import base64 import datetime # 修改 from urllib import request as urllib2 import json # 修改 from .xmltojson import xmltojson from xml.dom import minidom 

  然后里面还有很多报错如下:

  修改成以下格式即可(将Exception后的逗号去掉改为as即可),将所有该报错修改,共13个:

  然后将第定位至235行:

  首先修改生成sig中的内容:

#生成sig signature = self.AccountSid + self.AccountToken + self.Batch; md5_obj = md5() md5_obj.md5.new(signature) sig = md5_obj.hexdigest().upper()

# 仅仅修改其中的auth auth = base64.encodebytes(src.encode()).decode().strip()

  修改如下:

req.data = body.encode()

  使用Int将其转为整型:

if(int(self.ServerPort)<=0):     print('172005');     print('端口错误(小于等于0)');

  接着在yuntongxun文件夹下的__init__.py中加入以下语句:

from .sms import send_msg

import os  # 以下三行配置django测试环境 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev') import django django.setup()  from luffyapi.libs.yuntongxun import send_msg  # send_msg('接收方手机号',(验证码,过期时间分钟), 模块编号) # 模板编号测试环境中只能为1,接收方手机号是我们控制台测试号码中配置的 # 过期时间客户端收到的是以分钟为单位的,我们通过该值配置redis等非关系型数据库中该验证码的过期时间 result = send_msg('15858291832', ('python', 5), 1) print(result)
 
CCPRestSDK修改后的代码
from .CCPRestSDK import REST from django.conf import settings # 注:在配置文件dev中完成四个配置信息 # 说明:主账号,登陆云通讯网站后,可在"控制台-应用"中看到开发者主账号ACCOUNT SID _accountSid = settings.SMS_ACCOUNTSID # 说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTH TOKEN _accountToken = settings.SMS_ACCOUNTTOKEN # 说明:请使用管理控制台首页的APPID或自己创建应用的APPID _appId = settings.SMS_APPID # 说明:请求地址,生产环境配置成app.cloopen.com,开发环境配置成sandboxapp.cloopen.com _serverIP = settings.SMS_SERVERIP  # 说明:请求端口 ,生产环境为8883 _serverPort = "8883" # 说明:REST API版本号保持不变 _softVersion = '2013-12-26'  def send_sms(mobile, code_expire_tuple, temp_id):     # 配置     rest = REST(_serverIP, _serverPort, _softVersion)     rest.setAccount(_accountSid, _accountToken)     rest.setAppId(_appId)     # 发送     result = rest.sendTemplateSMS(mobile, code_expire_tuple, temp_id)     # 结果:信息成功发生,结果字典result中 statuCode 字段为 "000000"     if result.get("statusCode") == "000000":         return True  # 表示发送短信成功     else:         return False  # 表示发送失败
sms.py代码

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!