qiancj
9 months ago
1 changed files with 64 additions and 0 deletions
@ -0,0 +1,64 @@ |
|||
# encoding: utf-8 |
|||
""" |
|||
@author: Qiancj |
|||
@contact: qiancj@risenenergy.com |
|||
@file: main |
|||
@create-time: 2023-08-21 13:52 |
|||
@description: The new python script |
|||
""" |
|||
import random |
|||
import uuid |
|||
|
|||
import uvicorn |
|||
from fastapi import FastAPI |
|||
from pydantic import BaseModel |
|||
from aliyunsdkcore.request import RpcRequest |
|||
from aliyunsdkcore.client import AcsClient |
|||
|
|||
# 注意:不要更改 |
|||
REGION = "cn-hangzhou" |
|||
ACCESS_KEY_ID = "" |
|||
ACCESS_KEY_SECRET = "" |
|||
|
|||
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION) |
|||
|
|||
app = FastAPI() |
|||
|
|||
|
|||
class PhoneCode(BaseModel): |
|||
phone: str |
|||
|
|||
|
|||
class SendPhoneCode: |
|||
@classmethod |
|||
def gen_phone_code(cls, out=""): |
|||
out += str(random.randint(0, 9)) |
|||
return out if len(out) == 6 else cls.gen_phone_code(out) |
|||
|
|||
@classmethod |
|||
def send_sms(cls, phone_numbers, sign_name, template_code, business_id=uuid.uuid1()): |
|||
sms_request = RpcRequest('Dysmsapi', '2017-05-25', 'SendSms') |
|||
# 申请的短信模板编码,必填 |
|||
sms_request.add_query_param('TemplateCode', template_code) |
|||
# 短信模板变量参数 |
|||
template_param = {"code": cls.gen_phone_code()} |
|||
sms_request.add_query_param('TemplateParam', template_param) |
|||
# 设置业务请求流水号,必填。 |
|||
sms_request.add_query_param('OutId', business_id) |
|||
# 短信签名 |
|||
sms_request.add_query_param('SignName', sign_name) |
|||
# 短信发送的号码列表,必填。 |
|||
sms_request.add_query_param('PhoneNumbers', phone_numbers) |
|||
# 调用短信发送接口,返回json |
|||
sms_response = acs_client.do_action_with_exception(sms_request).decode(encoding="utf-8") |
|||
return sms_response |
|||
|
|||
|
|||
@app.post('/get_phone_code/') |
|||
async def hello(phone: PhoneCode): |
|||
ph_num = phone.phone |
|||
return {'message': SendPhoneCode.send_sms(ph_num, "秋城夜话", "SMS_462680310")} |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
uvicorn.run("main:app", host="0.0.0.0", port=8080, log_level="info", reload=True) |
Loading…
Reference in new issue