def DDNS(ip): # 更改www解析 client = AcsClient('LTAIc8YWfR2ROU2t', '7MXSBNpJxqqJHfLGmEUYbTZukswZEv', 'cn-hangzhou') request = CommonRequest() recordId = "your recordId" request.set_domain('alidns.aliyuncs.com') request.set_version('2015-01-09') request.set_action_name('UpdateDomainRecord') request.add_query_param('RecordId', recordId) request.add_query_param('RR', 'www') request.add_query_param('Type', 'A') request.add_query_param('Value', ip) client.do_action_with_exception(request) # 更改@解析 request = CommonRequest() recordId = "17833809750340608" request.set_domain('alidns.aliyuncs.com') request.set_version('2015-01-09') request.set_action_name('UpdateDomainRecord') request.add_query_param('RecordId', recordId) request.add_query_param('RR', '@') request.add_query_param('Type', 'A') request.add_query_param('Value', ip) response = client.do_action_with_exception(request) return response
def rds_redis(AccessKeyId, AccessKeySecret, RegionId): # 获取服务器系统3天后日期 today = datetime.date.today() tomorrow = today + datetime.timedelta(days=3) day_sys, month_sys, year_sys = tomorrow.strftime('%d'), tomorrow.strftime( '%m'), tomorrow.strftime('%Y') # rds实例存放列表 rds_list = [] for reg in RegionId: client = AcsClient(AccessKeyId, AccessKeySecret, reg) # 查询实例详情的默认参数设置 request = CommonRequest() request.set_accept_format('json') request.set_domain('r-kvstore.aliyuncs.com') request.set_method('POST') request.set_version('2015-01-01') request.set_action_name('DescribeInstances') # 自定义添加查询参数 request.add_query_param('RegionId', reg) request.add_query_param('PageSize', '50') # 发送请求 response = client.do_action_with_exception(request) instance = json.loads(response)["Instances"]["KVStoreInstance"] for ins in instance: # 查询实例详情的默认参数设置 request = CommonRequest() request.set_accept_format('json') request.set_domain('r-kvstore.aliyuncs.com') request.set_method('POST') request.set_version('2015-01-01') request.set_action_name('DescribeInstanceAttribute') # 自定义添加查询参数 request.add_query_param('RegionId', reg) request.add_query_param('InstanceId', ins["InstanceId"]) # 发送请求 response = client.do_action_with_exception(request) try: rds_time = json.loads( response)["Instances"]["DBInstanceAttribute"][0]["EndTime"] ali_time = rds_time.split("-") #ali_time = ins["ExpiredTime"].split("-") year_ali, month_ali, day_ali = ali_time[0], ali_time[ 1], ali_time[2][:2] # 如果系统时间与获取到的阿里云rds过期时间相差小于或等于3天则告警 if int(day_ali) <= ( int(day_sys) + 3) and int(month_ali) <= int( month_sys) and int(year_ali) <= int(year_sys): rds_id = ins["InstanceId"] expire_time = rds_time[:10] rds_list.append([rds_id, expire_time]) except Exception as e: print(response) print("按量付费实例无到期时间", ins, e) # 如果有要过期的rds实例则打印列表,没有则不打印 #print(rds_list) if rds_list != []: return "redis rds would expired: ", rds_list else: return "no redis rds expired"
def test_trans_to_acs_request_to_roa(self): r = CommonRequest() # signed_header with self.assertRaises(ClientException) as ex: r.trans_to_acs_request() self.assertEqual(ex.exception.error_code, "SDK.InvalidParams") self.assertEqual( ex.exception.message, "common params [version] is required, cannot be empty") r.set_version("version") with self.assertRaises(ClientException) as ex: r.trans_to_acs_request() self.assertEqual(ex.exception.error_code, "SDK.InvalidParams") self.assertEqual( ex.exception.message, "At least one of [action] and [uri_pattern] has a value") r.set_uri_pattern("/users/:userid") with self.assertRaises(ClientException) as ex: r.trans_to_acs_request() self.assertEqual(ex.exception.error_code, "SDK.InvalidParams") self.assertEqual( ex.exception.message, "At least one of [domain] and [product_name] has a value") r.set_product('product') r.trans_to_acs_request() self.assertEqual(r.get_style(), "ROA")
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)
def UpdateDomainRecord(accessKeyId,accessSecret,NewIP): client = AcsClient(accessKeyId,accessSecret, 'default') request = CommonRequest() request.set_accept_format('json') request.set_domain('alidns.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2015-01-09') request.set_action_name('UpdateDomainRecord') request.add_query_param('RR', 'WWW') request.add_query_param('Value', NewIP) request.add_query_param('Type', 'A') request.add_query_param('RecordId', '') response = str(client.do_action(request), encoding = 'utf-8') msg=json.loads(response) if 'Message' in msg: msg = msg['Message'] content = stamp_to_time() + ' ' + msg + '\n' WriteContent('log.conf', content) else : content = stamp_to_time() + ' ' + 'the ip of demain liuyaoze.cn has change to :'+NewIP + '\n' WriteContent('log.conf', content)
def getInformation(self, Metric): if Metric == 'help': print u""" 更多监控项请查看:https://help.aliyun.com/document_detail/28619.html?spm=a2c4g.11186623.6.676.ddaefx#h2--memcache-6 """ return try: _domian = "metrics.%s.aliyuncs.com" % self.region_id request = CommonRequest(domain=_domian, version='2018-03-08', action_name='QueryMetricList') request.add_query_param('Project', 'acs_memcache') request.add_query_param('Metric', Metric) request.add_query_param('Dimensions', "{'instanceId':'" + self.instanceId + "'}") response = json.loads(self.clt.do_action_with_exception(request)) #print response # 查看返回的结果 if response['Datapoints'] != u'[]': restr = "\"Average\":(\\d+(\\.\\d+)?)" regex = re.compile(restr, re.IGNORECASE) mylist = regex.findall(response['Datapoints']) # print mylist 查看正则匹配的数值和小数 if Metric == 'UsedMemory': print mylist[-1][0] + "E7" else: print mylist[-1][0] else: print u'暂无返回结果' except Exception as e: print u""" 无法获取:%s 更多Metric监控项请查看: https://help.aliyun.com/document_detail/28619.html?spm=a2c4g.11186623.6.676.ddaefx#h2--memcache-6""" % str(e)
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 change_record_ip(RecordId, ip, hierarchy=2): record=get_domain_record_by_RecordId(RecordId) if record==None or not isinstance(record,dict) or not record.__contains__('RR') or not record.__contains__('Type') or ip==None: print('Something went wrong when tyring update domain record(record=\''+str(record)+'\') from \'change_record_ip(\'' + RecordId + '\',\'' + ip + '\')\'') appendline_error('change_record_ip(\'' + str(RecordId) + '\',\'' + str(ip) + '\') - record = \'' + str(record) + '\')', 'CHANGE RECORD IP', hierarchy) return None request = CommonRequest() request.set_domain('alidns.aliyuncs.com') request.set_version('2015-01-09') request.set_action_name('UpdateDomainRecord') request.add_query_param('RecordId', RecordId) request.add_query_param('RR', record['RR']) request.add_query_param('Type', record['Type']) request.add_query_param('Value', ip) try: response = client.do_action_with_exception(request) results = json.loads(response.decode()) except: print('Something went wrong when tyring update domain record(\''+record['RR']+'.'+DOMAIN_NAME+'\') from \'change_record_ip(\''+RecordId+'\',\''+ip+'\')\'') appendline_error('change_record_ip(\'' + str(RecordId) + '\',\'' + str(ip) + '\') - record(\'' + str(record['RR']) + '.' + str(DOMAIN_NAME) + '\')', 'CHANGE RECORD IP', hierarchy) return False if results['RecordId'] == RecordId: appendline_log('Domain(\''+str(record['RR'])+'.'+str(DOMAIN_NAME)+'\') record('+str(RecordId)+')\'s value changed to '+str(ip), 'CHANGE RECORD IP', hierarchy) print('Domain record change successfully!') return True else: appendline_error('change_record_ip(\'' + str(RecordId) + '\',\'' + str(ip) + '\') - record(\'' + str(record['RR']) + '.' + str(DOMAIN_NAME) + '\')', 'CHANGE RECORD IP', hierarchy) print('Failed to change domain record!') return False
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 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 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 message_api(telephone, verification_code): """ 调用阿里云短信服务 """ # 服务器的AccessKeyId和AccessKeySecret client = AcsClient(SEND_SMS_CONFIG['AccessKeyId'], SEND_SMS_CONFIG['AccessKeySecret'], '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', str(telephone)) request.add_query_param('SignName', "三螺旋大数据") request.add_query_param('TemplateCode', SEND_SMS_CONFIG['TemplateCode']) request.add_query_param('TemplateParam', "{'code':" + verification_code + "}") response = client.do_action_with_exception(request) return_message = eval(str(response, encoding='utf-8')) # print(return_message) return return_message["Code"] is "OK"
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 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 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 test_rpc_common_request_with_sts_token(self): sub_client = self.init_sub_client() self._create_default_ram_role() self._attach_default_policy() request = AssumeRoleRequest() request.set_RoleArn(self.ram_role_arn) request.set_RoleSessionName(self.default_role_session_name) response = sub_client.do_action_with_exception(request) response = self.get_dict_response(response) credentials = response.get("Credentials") # Using temporary AK + STS for authentication sts_token_credential = StsTokenCredential( credentials.get("AccessKeyId"), credentials.get("AccessKeySecret"), credentials.get("SecurityToken")) acs_client = AcsClient(region_id="me-east-1", credential=sts_token_credential) # the common request request = CommonRequest(domain="ecs.aliyuncs.com", version="2014-05-26", action_name="DescribeRegions") response = acs_client.do_action_with_exception(request) ret = self.get_dict_response(response) self.assertTrue(ret.get("Regions")) self.assertTrue(ret.get("RequestId"))
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 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(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_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(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): # !/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 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 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
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 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(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 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_common_request_get_signed_header(self, mock_get_rfc_2616_date): r = CommonRequest() r.set_version("version") r.set_uri_pattern('/users/[userid]') r.set_path_params({"userid": "jacksontian"}) r.set_product('product') r.trans_to_acs_request() self.assertEqual(r.get_url("regionid", "accesskeyid", "secret"), "/users/jacksontian") self.assertEqual(r.get_style(), "ROA") mock_get_rfc_2616_date.return_value = "2018-12-04T03:25:29Z" headers = r.get_signed_header("regionid", "accesskeyid", "secret") mock_get_rfc_2616_date.assert_called_once_with() self.assertDictEqual( headers, { 'Accept': 'application/octet-stream', 'Authorization': 'acs accesskeyid:Lq1u0OzLW/uqLQswxwhne97Umlw=', 'Date': '2018-12-04T03:25:29Z', 'x-acs-region-id': 'regionid', 'x-acs-signature-method': 'HMAC-SHA1', 'x-acs-signature-version': '1.0', 'x-acs-version': 'version', 'x-sdk-invoke-type': 'common' })
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