def send_sms(self, message, phone_numbers): # Preprocessing message = re.sub(r'[^A-Za-z0-9]', '', message) client = AcsClient(self.access_key, self.secret_key, self.region_id) request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', self.region_id) request.add_query_param( 'PhoneNumbers', ','.join([str(phone_number) for phone_number in phone_numbers])) request.add_query_param('SignName', self.sign_name) request.add_query_param('TemplateCode', self.template_code) # Notice that the parameter "code" is from the SMS template your created in Aliyun # Modify to your own parameter(s) which you are using in the SMS template request.add_query_param('TemplateParam', "{\"code\":\"%s\"}" % message) response = client.do_action_with_exception(request) return response.decode('utf-8')
def send_sms(phone, code): client = AcsClient('LTAI4FppavJLWqYjFtZwU1Pf', 'oP3BxfEWb0t2rNqykdhay9EQWsAv6s', 'cn-hangzhou') code = "{'code':%s}" % (code) print('我是codes:', code) request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', "禹王村") request.add_query_param('TemplateCode', "SMS_181556017") # request.add_query_param('TemplateParam', {'code': '123456'}) request.add_query_param('TemplateParam', code) response = client.do_action(request) # python2: print(response) print(str(response, encoding='utf-8')) return str(response, encoding='utf-8')
def send_sms(self, zb1, z1, zb2, z2): t1 = time.time() - self.init_time self.write_log(t1) if t1 <= 240: return client = AcsClient('dd', 'dd', 'cn-hangzhou') time2 = datetime.now().strftime('%Y-%m-%d %H:%M:%S') request = CommonRequest() request.set_accept_format('json') request.set_domain('dd') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', "dd") request.add_query_param('SignName', "dd") request.add_query_param('TemplateCode', "dd") request.add_query_param('TemplateParam', "{\"zb1\": \"" + zb1 + "\",\"z1\": \"" + z1 + "\",\"zb2\":\"" + zb2 + "\",\"z2\":\"" + z2 + "\",\"time\":\"" + time2 + "\"}") self.write_log(f"{zb1},{z1},{zb2},{z2}") # response = client.do_action(request) # python2: print(response) # self.write_log(str(response, encoding = 'utf-8')) self.sendmail(zb1 + "-" + time2, z1 + ',' + zb2 + ',' + z2)
class AliyunSMS(object): '''阿里云短信服务''' def __init__(self): self.client = AcsClient(accessKeyId, accessSecret, regionid) def _create_request(self, to: str, code: str): '''封装短信请求''' self.request = CommonRequest() self.request.set_accept_format('json') self.request.set_domain('dysmsapi.aliyuncs.com') self.request.set_method('POST') self.request.set_protocol_type('https') # https | http self.request.set_version('2017-05-25') self.request.set_action_name('SendSms') self.request.add_query_param('RegionId', regionid) self.request.add_query_param('PhoneNumbers', to) self.request.add_query_param('SignName', SignName) self.request.add_query_param('TemplateCode', TemplateCode) self.request.add_query_param('TemplateParam', "{\"code\":\"%s\"}" % code) def sen_msg(self, to: str, code: str): self._create_request(to, code) response = self.client.do_action_with_exception(self.request).decode() result = json.loads(response).get('Code') if result == 'OK': return True else: return False
def sms_pubilc_param(mobile, routing_key, action): # client = AcsClient('<accessKeyId>', '<accessSecret>', 'default') client = AcsClient(ACCESSKEYID, ACCESSSECRET, 'cn-hangzhou') request = CommonRequest() # 固定参数 request.set_accept_format('json') # 格式 request.set_domain('dysmsapi.aliyuncs.com') # 短信域名 request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') # 版本 request.set_action_name('SendSms') # 发送信息 request.add_query_param('RegionId', "cn-hangzhou") # 短信API的值 request.add_query_param('SignName', SIGNNAME) # 短信签名名称 # 业务参数 request.add_query_param('PhoneNumbers', mobile) # 短信模板 template_code = "" if action == "register": template_code = TEMPLATECODEREG elif action == "login": template_code = "SMS_xxx" return request, template_code, client
def smscode1(request): """ 检查手机验证码 :param request: :return: """ # !/usr/bin/env python # coding=utf-8 phone = request.GET.get('phone', '') number = random.randint(100000, 999999) client = AcsClient('LTAIeUCNImn4yp21', 'M3Yxqxs3wOljHPn7EimdETr9PkDwdN', 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', "勺品有品") request.add_query_param('TemplateCode', "SMS_169903182") request.add_query_param('TemplateParam', "{'code':%s}" % number) response = client.do_action_with_exception(request) # python2: print(response) print(str(response, encoding='utf-8')) jionStr = {'number': number} return HttpResponse(json.dumps(jionStr))
def send_sms(self, phone_number, msg_type, code=0): if code == 0: code = self.generate_code() if msg_type == AliyunSms.MSG_TYPE_REGISTER: template_code = 'SMS_164075985' else: template_code = 'SMS_164075981' request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('PhoneNumbers', phone_number) request.add_query_param('SignName', self.sign_name) request.add_query_param('TemplateCode', template_code) request.add_query_param('TemplateParam', json.dumps({"code": code})) try: response = self.aliyun_client.do_action_with_exception(request) result = json.loads(str(response, encoding="utf-8")) if result["Code"] == "OK": # save the send record record = SmsVerifyRecord() record.code = code record.send_type = msg_type record.mobile_phone = phone_number record.save() except: return None
def send_sms(phone): request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', "18676689715") request.add_query_param('SignName', "swiper") request.add_query_param('TemplateCode', "SMS_189840981") vcode = gen_vcode() print('vcode:', vcode) code_dict = {'code': vcode} # 把code加入缓存 key = keys.VCODE % phone # 优化: 开发环境, 验证码缓存14天, 正式环境缓存15分钟 timeout = 86400 if settings.DEBUG else 900 cache.set(key, vcode, timeout=timeout) request.add_query_param('TemplateParam', json.dumps(code_dict)) response = client.do_action_with_exception(request) result = json.loads(response, encoding='utf-8') code = result.get('Code') if code == 'OK': return True return False
def BeginSend(PhoneNum, AccessKeyId, AccessSecret, SignName, TemplateCode): client = AcsClient(AccessKeyId, AccessSecret, 'cn-hangzhou') # 生成验证码 authCode = str(random.randint(1000, (10**VerificationLen - 1))) dict = {'code': authCode} request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', PhoneNum) request.add_query_param('SignName', SignName) request.add_query_param('TemplateCode', TemplateCode) # request.add_query_param('TemplateParam', "{'code':'5648'}") request.add_query_param('TemplateParam', str(dict)) # 请求 response = client.do_action(request) cjson = json.loads(str(response, 'utf-8')) cjson['authCode'] = authCode print(json.dumps(cjson)) return cjson
def send_sms(template, telephone): client = AcsClient('LTAI4GEAa9cHq88oEGdahuCD', 'Hb8SsROuwHMN7g7xZH78933QqqtUa3', 'default') # 短信里面的 我的AccessKey ID 我的Access Key Secret request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('http') # https | http 注意当项目发布到服务器上需要修改协议 request.set_version('2017-05-25') # set_action_name 这个是选择你调用的接口的名称,如:SendSms,SendBatchSms等 request.set_action_name('SendSms') # request.set_action_name('QuerySendDetails') # 这个参数也是固定的 request.add_query_param('RegionId', "default") # 98A66994-3DF4-4FA5-A33F-CCB36EB599D0 # request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', telephone) # 发给谁 request.add_query_param('SignName', '知了论坛') # 签名 request.add_query_param('TemplateCode', 'SMS_189523758') # 模板编号 request.add_query_param('TemplateParam', f"{template}") # 发送验证码内容 response = client.do_action_with_exception(request) return response
def aLiYunApiForEcs(self, private_ip): client = AcsClient('*******', '*********', 'cn-beijing') request = CommonRequest() request.set_accept_format('json') request.set_domain('ecs.aliyuncs.com') request.set_method('POST') request.set_version('2014-05-26') request.set_action_name('DescribeInstances') request.add_query_param('PrivateIpAddresses', '["%s"]' % (private_ip)) response = client.do_action_with_exception(request) ecs_info = json.loads(response)["Instances"]["Instance"][0] ret = { "online_time": ecs_info["CreationTime"], "expired_time": ecs_info["ExpiredTime"], "charge_type": ecs_info["InstanceChargeType"], "instance_id": ecs_info["InstanceId"], "instance_name": ecs_info["InstanceName"], "instance_type": ecs_info["InstanceType"], "public_ip": ecs_info["PublicIpAddress"].get("IpAddress")[0] if ecs_info["PublicIpAddress"].get("IpAddress") else ecs_info["EipAddress"]["IpAddress"] } return ret
class AlidayuSMS(object): APP_KEY_FIELD = 'ALIDAYU_APP_KEY' APP_SECRET_FIELD = 'ALIDAYU_APP_SECRET' SMS_SIGN_NAME_FIELD = 'ALIDAYU_SIGN_NAME' SMS_TEMPLATE_CODE_FIELD = 'ALIDAYU_TEMPLATE_CODE' def __init__(self, app=None): self.client = None self.request = None if app: self.init_app(app) def init_app(self, app): config = app.config self.client = AcsClient(config[self.APP_KEY_FIELD], config[self.APP_SECRET_FIELD], 'default') self.request = CommonRequest() self.request.set_accept_format('json') self.request.set_domain('dysmsapi.aliyuncs.com') self.request.set_method('POST') self.request.set_protocol_type('https') # https | http self.request.set_version('2017-05-25') self.request.set_action_name('SendSms') self.request.add_query_param('SignName', config[self.SMS_SIGN_NAME_FIELD]) self.request.add_query_param('TemplateCode', config[self.SMS_TEMPLATE_CODE_FIELD]) def sendSMS(self, phone, code): self.request.add_query_param('PhoneNumbers', phone) json_code = json.dumps({'code': code}) self.request.add_query_param('TemplateParam', json_code) response = self.client.do_action_with_exception(self.request) return response
def sendmessage(ticketmseeage: str): ''' 短信通知,调用阿里云接口 ''' message_conf = _get_yaml() is_email = message_conf["message_conf"]["is_massage"] if is_email: accessKeyId = message_conf["message_conf"]["aliyunkeyid"] aliyunsecret = message_conf["message_conf"]["aliyunsecret"] phonenumbers = message_conf["message_conf"]["phone"] trcket = '{"code":"' + ticketmseeage + '"}' client = AcsClient(accessKeyId, aliyunsecret, 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('PhoneNumbers', phonenumbers) request.add_query_param('SignName', '抢票小助手') request.add_query_param('TemplateCode', 'SMS_164266405') request.add_query_param('TemplateParam', trcket) response = client.do_action(request) # python2: print(response) print(str(response, encoding='utf-8')) try: pass except Exception as identifier: print(u"短信发送失败{}".format(identifier))
def check_record_id(dns_rr, dns_domain): times = 0 # 用于检查对应子域名的记录信息 check = 0 # 用于确认对应子域名的记录信息 request = CommonRequest() request.set_accept_format('json') # 设置返回格式 request.set_domain('alidns.aliyuncs.com') # 阿里云服务 request.set_method('POST') request.set_protocol_type('https') request.set_version('2015-01-09') request.set_action_name('DescribeDomainRecords') request.add_query_param('DomainName', rc_domain) # 设置请求域名 request.add_query_param('RRKeyWord', rc_rr) request.add_query_param('TypeKeyWord', rc_type) response = loads(clt.do_action(request)) # 接受返回数据 result = response['DomainRecords']['Record'] # 缩小数据范围 for record_info in result: # 遍历返回数据 if record_info['RR'] == dns_rr: # 检查是否匹配 check = 1 break # 确认完成结束 else: times += 1 # 进入下个匹配 if check: result = result[times]['RecordId'] # 返回记录数值 else: result = -1 # 返回失败数值 return result
def send_sms(phone, code): # !/usr/bin/env python # coding=utf-8 from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest client = AcsClient('LTAIznxYom8fTE24', '4eTEzXNBG3VW8iRfPZ1M8CDusiXDWU', 'cn-hangzhou') code = "{'code':'%s'}" % (code) # print(code) request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', "关家实践组") request.add_query_param('TemplateCode', "SMS_172205443") request.add_query_param('TemplateParam', code) response = client.do_action(request) # python2: print(response) # print(str(response, encoding='utf-8')) return str(response, encoding='utf-8')
def dataworks_api_create_adhoc_dag(accesskey_id, accesskey_secret, region_id, projectname, flowname, bizdate='2018-07-25 00:00:00'): client = AcsClient(accesskey_id, accesskey_secret, region_id) request = CommonRequest() request.set_accept_format('json') request.set_domain('dataworks.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2018-06-01') request.set_action_name('CreateManualDag') request.add_query_param('ProjectName', projectname) request.add_query_param('FlowName', flowname) request.add_query_param('Bizdate', bizdate) response = client.do_action(request) #pprint(response) js = json.loads(response) status = 'Failed and unknown' dag_id = '0' if ('ReturnCode' in js): if (js['ReturnCode'] == '600011'): status = 'Failed and Bizdate should be in [2019-03-20 00:00:00 format]' if (js['ReturnCode'] == '0') and ('ReturnValue' in js): status = 'Succeed' dag_id = js['ReturnValue'] return js, status, dag_id
def get_phone_code(*, phone: int, phone_code: str) -> tuple: """ 获取短信验证码 phone: 手机号 """ AccessKey = settings.PHONE_ACCESSKEY AccessSecret = settings.PHONE_ACCESSSECRET code = "cn-hangzhou" try: client = AcsClient(AccessKey, AccessSecret, code, phone) request = CommonRequest() request.set_accept_format("json") request.set_domain("dysmsapi.aliyuncs.com") request.set_method("POST") request.set_protocol_type("https") # https | http request.set_version("2017-05-25") request.set_action_name("SendSms") request.add_query_param("RegionId", "cn-hangzhou") request.add_query_param("PhoneNumbers", phone) request.add_query_param("SignName", settings.PHONE_SIGNNAME) request.add_query_param("TemplateCode", settings.PHONE_TEMPLATECODE) json_data = json.dumps({"code": phone_code}) request.add_query_param("TemplateParam", json_data) client.do_action(request) except Exception as e: message = f"向手机 {phone} 发送验证码失败" logger.error(message, e) return None, message phone_code_time = settings.PHONE_CODE_EXPIRE_SECONDS // 60 message = f"验证码已发送, {phone_code_time}分钟之内有效" return phone_code, message
async def speakvoice(key: str) -> str: try: data = getconfig() filepath = os.path.dirname(__file__) + '\data.txt' if (key == '鉴权'): # 创建AcsClient实例 client = AcsClient(data["AccessKey"], data["AccessKeySecret"], "cn-shanghai") # 创建request,并设置参数 request = CommonRequest() request.set_method('POST') request.set_domain('nls-meta.cn-shanghai.aliyuncs.com') request.set_version('2019-02-28') request.set_action_name('CreateToken') response = client.do_action_with_exception(request) content = json.loads(response) token = content['Token']['Id'] with open(filepath, "w") as fp: fp.write(token) return '[CQ:face,id=101]鉴权成功,你现在可以开始发语音了!' with open(filepath, "r") as fp: token = fp.read() client = ali_speech.NlsClient() # 设置输出日志信息的级别:DEBUG、INFO、WARNING、ERROR client.set_log_level('INFO') appkey = data['key'] text = key audio_name = 'data/record/mymusic/' + '1.mp3' process(client, appkey, token, text, audio_name) return "[CQ:record,file=mymusic/1.mp3,magic=false]" except (Exception): return "[CQ:face,id=177]出了问题,好像不能获取到数据了,请重试!"
def send_to(self, phone_number): ''''send''' if self.debug: return '123456' code = gen_sms_code(6) from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest client = AcsClient(self.access_key_id, self.access_secret, 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phone_number) request.add_query_param('SignName', '知识树') request.add_query_param('TemplateCode', 'SMS_194635024') request.add_query_param('TemplateParam', json.dumps({'code': code})) response = client.do_action_with_exception(request) # python2: print(response) # print(str(response, encoding='utf-8')) return code
def test_bug_with_17661113(self): request = CommonRequest() request.set_domain("nlp.cn-shanghai.aliyuncs.com") request.set_uri_pattern("/nlp/api/reviewanalysis/ecommerce") request.set_method(method_type.POST) request.add_header("x-acs-signature-method", "HMAC-SHA1") request.add_header("x-acs-signature-nonce", uuid.uuid4().hex) request.add_header("x-acs-signature-version", "1.0") content = '{"text":"裙子穿着很美哦,上身效果也不错,是纯棉的料子,穿着也很舒服。", ' \ '"cate":"clothing"}' request.set_content_type("application/json;chrset=utf-8") request.set_accept_format("application/json;chrset=utf-8") if sys.version_info[0] == 2: request.set_content(content) else: request.set_content(content.encode('utf-8')) request.set_version('2018-04-08') request.set_action_name("None") # We have 2 possible situations here: NLP purchased or NLP purchased # The test case should be passed in both situations. try: response = self.client.do_action_with_exception(request) self.assertTrue(response) except ServerException as e: self.assertEqual("InvalidApi.NotPurchase", e.error_code) self.assertEqual("Specified api is not purchase", e.get_error_msg())
def _refresh_session_ak_and_sk(self): request = CommonRequest(product="Sts", version='2015-04-01', action_name='AssumeRole') request.set_method('POST') request.set_protocol_type('https') request.add_query_param('RoleArn', self._credential.role_arn) request.add_query_param('RoleSessionName', self._credential.session_role_name) request.add_query_param('DurationSeconds', self._SESSION_PERIOD) request.set_accept_format('JSON') access_key_credential = AccessKeyCredential( self._credential.sts_access_key_id, self._credential.sts_access_key_secret) signer = AccessKeySigner(access_key_credential) status, headers, body = self._doAction(request, signer) if status == 200: response = json.loads(body.decode('utf-8')) session_ak = response.get("Credentials").get("AccessKeyId") session_sk = response.get("Credentials").get("AccessKeySecret") token = response.get("Credentials").get("SecurityToken") self._session_credential = session_ak, session_sk, token self._last_update_time = int(time.time()) else: code = error_code.SDK_GET_SESSION_CREDENTIAL_FAILED message = "refresh session token failed, server return: " + body http_status = status raise exceptions.ServerException(code, message, http_status)
def deploy(warurl): request = CommonRequest() request.set_accept_format('json') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_domain(endpoint) request.set_version('2017-08-01') packageversion = strftime("%Y%m%d%H%M%S", gmtime()) request.add_query_param('RegionId', region) request.add_query_param('AppId', appid) request.add_query_param('PackageVersion', packageversion) request.add_query_param('DeployType', 'url') request.add_query_param('WarUrl', warurl) request.add_query_param('GroupId', 'all') #request.set_uri_pattern('/pop/v5/app/app_status') request.set_uri_pattern('/pop/v5/changeorder/co_deploy') body = '''''' response = '' request.set_content(body) response = client.do_action(request) # python2: print(response)
def send(self, req): phone = req.data.get("phone") type = req.data.get("type") # 随机生成4位验证码 code = str(random.randrange(1000, 10000)) template_param = "{\"code\":\"%s\"}" % code client = AcsClient(settings.ACCESS_KEY_ID, settings.ACCESS_SECRET_KEY, settings.REGION_ID) request = CommonRequest() request.set_accept_format('json') request.set_domain(settings.DOMAIN) request.set_method('POST') request.set_protocol_type('http') request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', settings.SIGN_NAME) request.add_query_param('TemplateCode', settings.TEMPLATE_NAME) request.add_query_param('TemplateParam', template_param) response = client.do_action_with_exception(request) res = json.loads(response.decode()) if res.get("Message") == "OK" and res.get("Code") == "OK": live_time = 60 * 5 # 5分钟 # cache.set("baoxian" + phone, code, live_time) cache.set(type + phone, code, live_time) data = {"code": 200, "msg": "发送成功"} else: data = {"code": 2, "msg": res.get("Message")} return Response(data)
def send_msg_to_phone(phone_num, content): """ 将阿里云提供的发送短信demo,封装为函数,这样使用时更加方便 :param phone_num: :param content: :return: """ client = AcsClient('LTAI4GJcCBqAEs63nNVNsJ63', 'hZXTnGJvkT54E6bqYH4jwAJO5Tc9Mx', 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phone_num) request.add_query_param('SignName', "dong4716138") request.add_query_param('TemplateCode', "SMS_167532197") request.add_query_param('TemplateParam', "{\"code\":\"%s\"}" % content) response = client.do_action(request) # python2: print(response) print(str(response, encoding='utf-8'))
def send_sms(self, mobile, sign, template, data=None): """ 发送短信 mobile: 手机号码 sign: 短信签名 template: 短信模板 data: 短信内容 """ request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "default") request.add_query_param('PhoneNumbers', mobile) request.add_query_param('SignName', sign) request.add_query_param('TemplateCode', template) #request.add_query_param('TemplateParam', '{"code":"%s"}'%content) response = self.client.do_action(request) return response
def send_sms(phone, code): client = AcsClient('LTAIEx3Gbdbceg2C', 'MsCoWUm3x2iXaIcvtqhQLi9yj6nHxX', 'cn-hangzhou') # phone = '17600950805' # aa= '222222' code = "{'code':%s}" % (code) request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', '北网实训组') request.add_query_param('TemplateCode', 'SMS_165745016') request.add_query_param('TemplateParam', code) response = client.do_action(request) # python2: print(response) print(str(response, encoding='utf-8')) return str(response, encoding='utf-8')
def send_msg_to_phone(phone_num, content): """ 将阿里云提供的发送短信demo,封装为函数,这样使用时更加方便 :param phone_num: :param content: :return: """ client = AcsClient('LTAI4GFkdB5KgW8K98eAd7a3', 'cBVs8OKBjbley1VkqhUgx4c7yu48Z4', 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phone_num) request.add_query_param('SignName', "小马哥") request.add_query_param('TemplateCode', "SMS_204296280") request.add_query_param('TemplateParam', "{\"code\":\"%s\"}" % content) response = client.do_action(request) # python2: print(response) print(str(response, encoding='utf-8'))
def send_sms(phone, code): client = AcsClient('LTAI4Fog9VDu4HPx1eZ64K6W', 'cf2fqRQn7Pm4vQbR9DGGe8Xr4nBqeA', 'cn-hangzhou') # phone = '17600950805' # aa= '222222' code = "{'code':%s}" % (code) request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', '北网人工智能') request.add_query_param('TemplateCode', 'SMS_181545706') request.add_query_param('TemplateParam', code) response = client.do_action(request) # python2: print(response) print(str(response, encoding='utf-8')) return str(response, encoding='utf-8')
def send_sms(template, phone, template_code): client = AcsClient(settings.ACCESSKEY_ID, settings.ACCESSKEY_SERECT, settings.REGION_ID) # 短信里面的 我的AccessKey ID 我的Access Key Secret request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('http') # https | http 注意当项目发布到服务器上需要修改协议 request.set_version('2017-05-25') # set_action_name 这个是选择你调用的接口的名称,如:SendSms,SendBatchSms等 request.set_action_name('SendSms') # request.set_action_name('QuerySendDetails') # 这个参数也是固定的 request.add_query_param( 'RegionId', settings.REGION_ID) # 98A66994-3DF4-4FA5-A33F-CCB36EB599D0 # request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phone) # 发给谁 request.add_query_param('SignName', settings.SIGN_NAME) # 签名 request.add_query_param('TemplateCode', template_code) # 模板编号 request.add_query_param('TemplateParam', f"{template}") # 发送验证码内容 response = client.do_action_with_exception(request) return response
def message_code(reuqest): if reuqest.method == 'POST': phone = reuqest.POST.get('phone') logger.info('请求验证码的用户:{}'.format(phone)) # 在发送验证码之前需要检查验证码有效期,如果在有效期内不直接发送验证码 cache_phone_message = cache.get('phone_message:' + phone) if cache_phone_message: logger.info('redis服务器下该{}用户的验证码为:{},还未过有效期'.format( phone, cache_phone_message)) # 已经获取到缓存的手机号了 # 准备给前端返回的数据信息 return JsonResponse({'status': 405, 'msg': '验证码有效期内请勿重复申请'}) # 生成6位随机验证码(string) # 先生成6位随机数列表:random.sample([x for x in string.ascii_letters + string.digits],6 # 通过join将列表拼接字符串 # kUEeBr # print("".join(random.sample([x for x in string.ascii_letters + string.digits], 6))) # 生成6位随机数,准备填充到短信验证码模版的code表中 six_num = "".join(map(lambda x: random.choice(string.digits), range(6))) '''-------------------------------阿里的短信服务器调用代码-----------------------------------------''' client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', SignName) request.add_query_param('TemplateCode', TemplateCode) request.add_query_param('TemplateParam', {'code': six_num}) response_message = client.do_action(request) logger.info('当前手机号:{},验证码:{},发送状态:{}'.format( phone, six_num, str(response_message, encoding='utf-8'))) # python2: print(response) response_message = json.loads(str(response_message, encoding='utf-8')) logger.info('短信服务器返回的消息:{}'.format(response_message)) '''-------------------------------阿里的短信服务器调用代码-----------------------------------------''' if response_message['Code'] == 'OK': # 如果验证码发送成功,那需要把当前验证码加入到缓存中进行存储,设定短信10分钟内有效 logger.info('验证码发送成功,有效期10分钟') cache.set('phone_message:' + phone, six_num, 60 * 10) # 准备给前端返回的数据信息 return JsonResponse({'status': 200, 'msg': '验证码发送成功'}) else: # 准备给前端返回的数据信息 return JsonResponse({ 'status': 404, 'msg': str(response_message['Message']) })