Python實現阿里雲短信推送


本篇文章是使用Python的Web框架Django提供發送短信接口供前端調用,Python版本2.7

阿里雲入駐、申請短信服務、創建應用和模板等步驟請參考:阿里雲短信服務入門

1、下載sdk

阿里雲短信服務Python SDK

SDK工具包中一共包含了2個目錄:

aliyun-python-sdk-core:阿里雲api調用的核心代碼庫,python版本。

alicom-python-sdk-dysmsapi:流量直沖相關接口調用的客戶端以及示例代碼。

確定本機已經安裝了python,版本要求:2.6.5 或以上版本。

進入aliyun-python-sdk-core 執行:python setup.py install。

運行demo示例。進入alicom-python-sdk- dysmsapi目錄執行:python demo.py 。

2、編寫發送短信 utils.py:

 1 # coding=utf-8
 2 import sys
 3 
 4 from aliyunsdkcore.client import AcsClient
 5 from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest, QuerySendDetailsRequest
 6 
 7 reload(sys)
 8 sys.setdefaultencoding('utf8')
 9 
10 REGION = "cn-hangzhou"
11 ACCESS_KEY_ID = "yourAccessKeyId"
12 ACCESS_KEY_SECRET = "yourAccessKeySecret"
13 
14 acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
15 
16 
17 def send_sms(business_id, phone_numbers, sign_name, template_code, template_param=None):
18     smsRequest = SendSmsRequest.SendSmsRequest()
19     # 申請的短信模板編碼,必填
20     smsRequest.set_TemplateCode(template_code)
21 
22     # 短信模板變量參數
23     if template_param is not None:
24         smsRequest.set_TemplateParam(template_param)
25 
26     # 設置業務請求流水號,必填。
27     smsRequest.set_OutId(business_id)
28 
29     # 短信簽名
30     smsRequest.set_SignName(sign_name);
31 
32     # 短信發送的號碼列表,必填。
33     smsRequest.set_PhoneNumbers(phone_numbers)
34 
35     # 調用短信發送接口,返回json
36     smsResponse = acs_client.do_action_with_exception(smsRequest)
37 
38     return smsResponse
39 
40 def query_send_detail(biz_id, phone_number, page_size, current_page, send_date):
41     queryRequest = QuerySendDetailsRequest.QuerySendDetailsRequest()
42     # 查詢的手機號碼
43     queryRequest.set_PhoneNumber(phone_number)
44     # 可選 - 流水號
45     queryRequest.set_BizId(biz_id)
46     # 必填 - 發送日期 支持30天內記錄查詢,格式yyyyMMdd
47     queryRequest.set_SendDate(send_date)
48     # 必填-當前頁碼從1開始計數
49     queryRequest.set_CurrentPage(current_page)
50     # 必填-頁大小
51     queryRequest.set_PageSize(page_size)
52 
53     # 調用短信記錄查詢接口,返回json
54     queryResponse = acs_client.do_action_with_exception(queryRequest)
55 
56     return queryResponse

3、編寫發送短信驗證碼(也可以是其他的)api接口,驗證碼需要放入緩存,安裝redis,pip install django-redis

 1 import uuid
 2 
 3 from django.http import JsonResponse
 4 from django.utils.crypto import get_random_string
 5 from jsonrpc import jsonrpc_method
 6 
 7 from sms.utils import send_sms
 8 from django.core.cache import cache
 9 
10 
11 def send_sms_view(request):
12     """ 
13     發送驗證碼
14     :param request:
15     :return:
16     """
17     business_id = uuid.uuid1()
18     code = get_random_string(length=4, allowed_chars='0123456789')
19     params = "{\"code\":\"" + code + "\"}"
20     send_sms(business_id, request.GET.get('telephone'), "發送方名稱", "自定義模板名稱", params)
21     cache.set(request.GET.get('telephone'), code, timeout=600)
22     return JsonResponse({'success': True})

前端通過調用send_sms_view接口發送短信


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM