123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import logging
- import simplejson as json
- from aliyunsdkcore.client import AcsClient
- from aliyunsdkcore.request import CommonRequest
- from requests import ConnectionError
- from simplejson import JSONDecodeError
- logger = logging.getLogger(__name__)
- from library.sms import SmsSender
- class Sender(SmsSender):
- def __init__(self, ak, secret, region_id):
- self.ak = ak
- self.secret = secret
- self.region_id = region_id
- def send(self, phoneNumber, templateId, msg, productName, verifyCode = False):
- """
- :param phoneNumber:
- :param templateId:
- :param msg:
- :param productName:
- :return: dict
- """
- try:
- client = AcsClient(ak = self.ak, secret = self.secret, region_id = self.region_id)
- 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')
- request.set_action_name('SendSms')
- request.add_query_param('RegionId', 'cn-hangzhou')
- request.add_query_param('PhoneNumbers', phoneNumber)
- # request.add_query_param('SignName', productName)
- request.add_query_param('SignName', u'微付乐')
- request.add_query_param('TemplateCode', templateId)
- if verifyCode:
- request.add_query_param('TemplateParam', {'code': msg})
- else:
- request.add_query_param('TemplateParam', {'user': productName, 'detail': msg})
- response = client.do_action_with_exception(request)
- result = json.loads(response)
- if result['Code'] == 'OK':
- return {'result': True, 'msg': 'success'}
- else:
- return {'result': False, 'msg': result['Message']}
- except JSONDecodeError as e:
- logger.exception(e)
- return {'result': False, 'msg': u'短信服务器繁忙,请稍后重试'}
- except ConnectionError as e:
- logger.exception(e)
- return {'result': False, 'msg': u'短信服务器不可用,请稍后重试'}
|