成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

阿里云平臺(tái)發(fā)送短信

CODING / 4007人閱讀

摘要:獲取阿里云訪問(wèn)密鑰為了使用短信發(fā)送,您必須申請(qǐng)阿里云的訪問(wèn)密鑰。國(guó)際港澳臺(tái)消息只能使用國(guó)際港澳臺(tái)短信模版發(fā)送短信。

1.獲取阿里云訪問(wèn)密鑰

為了使用短信發(fā)送API-Python SDK,您必須申請(qǐng)阿里云的訪問(wèn)密鑰。

阿里云訪問(wèn)秘鑰是阿里云為用戶(hù)使用 API(非控制臺(tái))來(lái)訪問(wèn)其云資源設(shè)計(jì)的“安全口令”。您可以用它來(lái)簽名 API 請(qǐng)求內(nèi)容以通過(guò)服務(wù)端的安全驗(yàn)證。

該訪問(wèn)秘鑰成對(duì)(AccessKeyId 與 AccessKeySecret)生成和使用。每個(gè)阿里云用戶(hù)可以創(chuàng)建多對(duì)訪問(wèn)秘鑰,且可隨時(shí)啟用(Active)、禁用(Inactive)或者刪除已經(jīng)生成的訪問(wèn)秘鑰對(duì)。

您可以通過(guò)阿里云控制臺(tái)的?秘鑰管理頁(yè)面?創(chuàng)建、管理所有的訪問(wèn)秘鑰對(duì),且保證它處于“啟用”狀態(tài)。由于訪問(wèn)秘鑰是阿里云對(duì) API 請(qǐng)求進(jìn)行安全驗(yàn)證的關(guān)鍵因子,請(qǐng)妥善保管你的訪問(wèn)秘鑰。如果某些秘鑰對(duì)出現(xiàn)泄漏風(fēng)險(xiǎn),建議及時(shí)刪除該秘鑰對(duì)并生成新的替代秘鑰對(duì)。

2.在控制臺(tái)完成模板與簽名的申請(qǐng),獲得調(diào)用接口必備的參數(shù)

短信簽名

根據(jù)用戶(hù)屬性來(lái)創(chuàng)建符合自身屬性的簽名信息。企業(yè)用戶(hù)需要上傳相關(guān)企業(yè)資質(zhì)證明,個(gè)人用戶(hù)需要上傳證明個(gè)人身份的證明。

短信簽名需要審核通過(guò)后才可以使用。

短信模板

短信模板,即具體發(fā)送的短信內(nèi)容。

短信模板可以支持驗(yàn)證碼、短信通知、推廣短信、國(guó)際/港澳臺(tái)消息四種模式。驗(yàn)證碼和短信通知,通過(guò)變量替換實(shí)現(xiàn)個(gè)性短信定制。推廣短信不支持在模板中添加變量。國(guó)際/港澳臺(tái)消息只能使用國(guó)際/港澳臺(tái)短信模版發(fā)送短信。

短信模板需要審核通過(guò)后才可以使用。

3.參數(shù)列表 入?yún)⒘斜?/b>
參數(shù)名稱(chēng) 參數(shù)類(lèi)型 必填與否 樣例取值 參數(shù)說(shuō)明
PhoneNumbers String 必須 15000000000 短信接收號(hào)碼。支持以逗號(hào)分隔的形式進(jìn)行批量調(diào)用,批量上限為1000個(gè)手機(jī)號(hào)碼,批量調(diào)用相對(duì)于單條調(diào)用及時(shí)性稍有延遲,驗(yàn)證碼類(lèi)型的短信推薦使用單條調(diào)用的方式,發(fā)送國(guó)際/港澳臺(tái)消息時(shí),接收號(hào)碼格式為00+國(guó)際區(qū)號(hào)+號(hào)碼,如“0085200000000”
SignName String 必須 云通信 短信簽名
TemplateCode String 必須 SMS_0000 短信模板ID,發(fā)送國(guó)際/港澳臺(tái)消息時(shí),請(qǐng)使用國(guó)際/港澳臺(tái)短信模版
TemplateParam String 可選 {“code”:”1234”,”product”:”ytx”} 短信模板變量替換JSON串,友情提示:如果JSON中需要帶換行符,請(qǐng)參照標(biāo)準(zhǔn)的JSON協(xié)議對(duì)換行符的要求,比如短信內(nèi)容中包含rn的情況在JSON中需要表示成rn,否則會(huì)導(dǎo)致JSON在服務(wù)端解析失敗
OutId String 可選 abcdefgh 外部流水?dāng)U展字段
出參列表
出參名稱(chēng) 出參類(lèi)型 樣例取值 參數(shù)說(shuō)明
RequestId String 8906582E-6722 請(qǐng)求ID
Code String OK 狀態(tài)碼-返回OK代表請(qǐng)求成功,其他錯(cuò)誤碼詳見(jiàn)錯(cuò)誤碼列表
Message String 請(qǐng)求成功 狀態(tài)碼的描述
BizId String 134523^4351232 發(fā)送回執(zhí)ID,可根據(jù)該ID查詢(xún)具體的發(fā)送狀態(tài)
3.接口的下載

SDK下載

執(zhí)行:

安裝依賴(lài):進(jìn)入根目錄執(zhí)行命令: python setup.py install #如果為python3,請(qǐng)執(zhí)行:python3 setup.py install

修改信息:從阿里云控制臺(tái)上獲取ACCESS_KEY_ID與ACCESS_KEY_SECRET,并填入文件const.py中

運(yùn)行程序:python demo_sms_send.py #如果為python3,請(qǐng)執(zhí)行python3 demo_sms_send.py
pip install aliyun-python-sdk-core-v3==2.8.6,2.9版本的region_provider沒(méi)有add_endpoint屬性

注意:您還需要在控制臺(tái)上申請(qǐng)短信模板,并將相關(guān)信息填入至文件demo_sms_send.py中

錯(cuò)誤碼列表
Code 描述
OK 請(qǐng)求成功
isp.RAM_PERMISSION_DENY RAM權(quán)限D(zhuǎn)ENY
isv.OUT_OF_SERVICE 業(yè)務(wù)停機(jī)
isv.PRODUCT_UN_SUBSCRIPT 未開(kāi)通云通信產(chǎn)品的阿里云客戶(hù)
isv.PRODUCT_UNSUBSCRIBE 產(chǎn)品未開(kāi)通
isv.ACCOUNT_NOT_EXISTS 賬戶(hù)不存在
isv.ACCOUNT_ABNORMAL 賬戶(hù)異常
isv.SMS_TEMPLATE_ILLEGAL 短信模板不合法
isv.SMS_SIGNATURE_ILLEGAL 短信簽名不合法
isv.INVALID_PARAMETERS 參數(shù)異常
isp.SYSTEM_ERROR 系統(tǒng)錯(cuò)誤
isv.MOBILE_NUMBER_ILLEGAL 非法手機(jī)號(hào)
isv.MOBILE_COUNT_OVER_LIMIT 手機(jī)號(hào)碼數(shù)量超過(guò)限制
isv.TEMPLATE_MISSING_PARAMETERS 模板缺少變量
isv.BUSINESS_LIMIT_CONTROL 業(yè)務(wù)限流
isv.INVALID_JSON_PARAM JSON參數(shù)不合法,只接受字符串值
isv.BLACK_KEY_CONTROL_LIMIT 黑名單管控
isv.PARAM_LENGTH_LIMIT 參數(shù)超出長(zhǎng)度限制
isv.PARAM_NOT_SUPPORT_URL 不支持URL
isv.AMOUNT_NOT_ENOUGH 賬戶(hù)余額不足

注:查詢(xún)所有錯(cuò)誤碼及解決辦法請(qǐng)點(diǎn)擊短信接口調(diào)用錯(cuò)誤碼

4.短信發(fā)送demo
# -*- coding: utf-8 -*-
# import sys
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import uuid
from aliyunsdkcore.profile import region_provider
from aliyunsdkcore.http import method_type as MT
from aliyunsdkcore.http import format_type as FT
import const

"""
短信業(yè)務(wù)調(diào)用接口示例,版本號(hào):v20170525

Created on 2017-06-12

"""
# 這里setdefaultencoding為utf8設(shè)置默認(rèn)編碼為utf-8,但是現(xiàn)在可能由于版本原因會(huì)出錯(cuò)
# try:
#     reload(sys)
#     sys.setdefaultencoding("utf8")
# except NameError:
#     pass
# except Exception as err:
#     raise err

# 注意:不要更改
REGION = "cn-hangzhou"
PRODUCT_NAME = "Dysmsapi"
DOMAIN = "dysmsapi.aliyuncs.com"

#ACCESS_KEY_ID 和ACCESS_KEY_SECRET要傳入
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)

#這里寫(xiě)入自己的簽名和模板,后面調(diào)用就不用寫(xiě)了
def send_sms(business_id, phone_numbers,template_param=None,sign_name="***",template_code="***"):
    smsRequest = SendSmsRequest.SendSmsRequest()
    # 申請(qǐng)的短信模板編碼,必填
    smsRequest.set_TemplateCode(template_code)

    # 短信模板變量參數(shù)
    if template_param is not None:
        smsRequest.set_TemplateParam(template_param)

    # 設(shè)置業(yè)務(wù)請(qǐng)求流水號(hào),必填。
    smsRequest.set_OutId(business_id)

    # 短信簽名
    smsRequest.set_SignName(sign_name)
    
    # 數(shù)據(jù)提交方式
    # smsRequest.set_method(MT.POST)
    
    # 數(shù)據(jù)提交格式
    # smsRequest.set_accept_format(FT.JSON)
    
    # 短信發(fā)送的號(hào)碼列表,必填。
    smsRequest.set_PhoneNumbers(phone_numbers)

    # 調(diào)用短信發(fā)送接口,返回json
    smsResponse = acs_client.do_action_with_exception(smsRequest)

    # TODO 業(yè)務(wù)處理

    return smsResponse



if __name__ == "__main__":
    __business_id = uuid.uuid1()
    #print(__business_id)
    params = "{"code":"12345","product":"云通信"}"
    #params = u"{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}"
    print(send_sms(__business_id, "13000000000", params))

阿里短信發(fā)送短信時(shí)返回這個(gè)信息,之前是可以發(fā)送的,現(xiàn)在阿里應(yīng)該是做了限制的。如果你的短信模板類(lèi)型為“驗(yàn)證碼”,發(fā)送的短信內(nèi)容只能是包含字母和數(shù)字

所以當(dāng)你的短信內(nèi)容包含特殊符號(hào)和中文時(shí),請(qǐng)把短信模板類(lèi)型修改為“通知”,這里只能新增一個(gè)模板了,因?yàn)槎绦拍0迥壳皼](méi)有修改。
5.接口的調(diào)用
class SmsCodeViewset(mixins.CreateModelMixin,viewsets.GenericViewSet):
    """
        手機(jī)驗(yàn)證碼
    """
    serializer_class = SmsSerializer

    def generate_code(self):
        """
        生成四位數(shù)字的驗(yàn)證碼
        """
        str1 = ""
        for i in range(4):
            str1 += str(random.randint(0,9))
        return str1

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        # 驗(yàn)證合法
        serializer.is_valid(raise_exception=True)

        mobile = serializer.validated_data["mobile"]
        code = self.generate_code()

        params = {"code":code}
        sms_status = demo_sms_send.send_sms(uuid.uuid1(),mobile,params)
        #字節(jié)轉(zhuǎn)字符串
        sms_status = sms_status.decode()
        #字符串轉(zhuǎn)字典
        sms_status = eval(sms_status)

        if sms_status["Code"] != "OK":
            return Response({
                "mobile": sms_status["Message"]
            }, status=status.HTTP_400_BAD_REQUEST)
        else:
            code_record = VerifyCode(code=code, mobile=mobile)
            code_record.save()
            return Response({
                "mobile": mobile
            }, status=status.HTTP_201_CREATED)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42272.html

相關(guān)文章

  • 玩 High API 系列之:實(shí)現(xiàn)釘釘Ding功能

    摘要:了解更多場(chǎng)景如何玩如何將變現(xiàn)請(qǐng)下載阿里云免費(fèi)下載用到的阿里云提供的語(yǔ)音服務(wù)短信服務(wù)郵件服務(wù)等。只需開(kāi)通郵件推送服務(wù),調(diào)用,就可以快速將郵件通知給多達(dá)人。 摘要: 釘釘是企業(yè)IM市場(chǎng)上的領(lǐng)先者,深受中小企業(yè)客戶(hù)的喜歡,就再幾天前剛剛宣布用戶(hù)數(shù)超過(guò)1億!在釘釘里面有個(gè)特別實(shí)用的功能,那就是Ding一下,如果你發(fā)的消息特別緊急,可以直接通過(guò)短信、電話等方式直接通知到接收人的手機(jī)上。 點(diǎn)此查看...

    yhaolpz 評(píng)論0 收藏0
  • Yii 實(shí)現(xiàn)阿里短信發(fā)送

    摘要:一安裝拓展地址二拓展配置阿里云阿里云三實(shí)現(xiàn)短信發(fā)送單條短信發(fā)送單條發(fā)送短信簽名短信簽名短信模板編號(hào)短信接收者模板變量發(fā)送短信流水號(hào),選填多條短信發(fā)送批量發(fā)送簽名手機(jī)號(hào)模板字段數(shù)組長(zhǎng)度必須相等短信簽名短信簽名短信簽名短信模板編號(hào) 一:安裝saviorlv/yii2-dysms拓展 composer地址:https://packagist.org/package... composer r...

    Leo_chen 評(píng)論0 收藏0
  • 【快哥評(píng)測(cè)】一文掌握阿里通信”產(chǎn)品

    摘要:今天快哥帶大家來(lái)看下阿里云的云通信產(chǎn)品,和域名與網(wǎng)站產(chǎn)品一樣,也是老樹(shù)開(kāi)新花。云通信產(chǎn)品主要包括短信服務(wù)語(yǔ)音服務(wù)流量服務(wù)消息服務(wù)郵件推送。手機(jī)對(duì)手機(jī)的模式,在實(shí)時(shí)通訊軟件中已經(jīng)幫我們解決了,并不在阿里云通信產(chǎn)品中。今天快哥帶大家來(lái)看下阿里云的云通信產(chǎn)品,和域名與網(wǎng)站產(chǎn)品一樣,也是老樹(shù)開(kāi)新花??旄缈破胀瓯WC你能了解掌握,也是以后和別人討論的素材。?云通信產(chǎn)品是之前運(yùn)營(yíng)商的產(chǎn)品,現(xiàn)在被阿里、騰訊...

    chinafgj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<