开发者社区 问答 正文

阿里云OpenAPI入参好像无法指定模板对应的短信签名,即使审核通过,该模板的签名也是空的,正常吗?

阿里云OpenAPI入参好像无法指定模板对应的短信签名,即使审核通过,该模板的签名也是空的,这个是正常的吗?如何通过API关联模板和签名呢?https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/AddSmsTemplate-
86bb0f5b9b00b277c53119ce8d163633.png
013995a653d52d68d719bef6c7da80c4.png

展开
收起
三分钟热度的鱼 2023-11-15 19:04:43 153 分享 版权
2 条回答
写回答
取消 提交回答
  • 阿里云的短信服务(Short Message Service,SMS)API中,模板和签名是分开管理的。在创建短信模板时,需要指定模板的内容、变量等信息,但不需要指定签名。签名是在发送短信时指定的,而不是在创建模板时指定的。

    在使用短信API发送短信时,需要指定要使用的模板ID和签名名称。例如,如果您已经创建了一个名为"template_code"的模板,并且已经创建了一个名为"sign_name"的签名,那么您可以使用以下代码来发送短信:

    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkcore.acs_exception.exceptions import RequestIdRequiredException
    from aliyunsdkcore.acs_exception.exceptions import InvalidActionException
    from aliyunsdkcore.acs_exception.exceptions import InternalErrorException
    from aliyunsdkcore.acs_exception.exceptions import InvalidParameterException
    from aliyunsdkcore.acs_exception.exceptions import MethodNotSupportedException
    from aliyunsdkcore.acs_exception.exceptions import ConnectionTimeoutException
    from aliyunsdkcore.acs_exception.exceptions import ThrottlingException
    from aliyunsdkcore.acs_exception.exceptions import HttpResponseError
    from aliyunsdkdysmsapi.request.v20170525 import AddSmsTemplateRequest
    from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
    
    # 创建AcsClient实例
    client = AcsClient('<accessKeyId>', '<accessSecret>', '<regionId>')
    
    # 创建短信模板请求并设置参数
    template_request = AddSmsTemplateRequest.AddSmsTemplateRequest()
    template_request.set_TemplateCode("template_code")
    template_request.set_TemplateContent("您的验证码为:{code}")
    
    # 发送短信模板创建请求并获取响应结果
    try:
        add_template_response = client.do_action(template_request)
        print(add_template_response)
    except ClientException as e:
        print(e)
    except ServerException as e:
        print(e)
    except RequestIdRequiredException as e:
        print(e)
    except InvalidActionException as e:
        print(e)
    except InternalErrorException as e:
        print(e)
    except InvalidParameterException as e:
        print(e)
    except MethodNotSupportedException as e:
        print(e)
    except ConnectionTimeoutException as e:
        print(e)
    except ThrottlingException as e:
        print(e)
    except HttpResponseError as e:
        print(e)
    
    # 创建发送短信请求并设置参数
    sms_request = SendSmsRequest.SendSmsRequest()
    sms_request.set_PhoneNumbers("手机号码")
    sms_request.set_SignName("sign_name")
    sms_request.set_TemplateCode("template_code")
    sms_request.set_TemplateParam("{\"code\":\"123456\"}") # 设置模板变量值,例如验证码为123456
    
    # 发送短信请求并获取响应结果
    try:
        send_sms_response = client.do_action(sms_request)
        print(send_sms_response)
    except ClientException as e:
        print(e)
    except ServerException as e:
        print(e)
    except RequestIdRequiredException as e:
        print(e)
    except InvalidActionException as e:
        print(e)
    except InternalErrorException as e:
        print(e)
    except InvalidParameterException as e:
        print(e)
    except MethodNotSupportedException as e:
        print(e)
    except ConnectionTimeoutException as e:
        print(e)
    except ThrottlingException as e:
        print(e)
    except HttpResponseError as e:
        print(e)
    
    2023-11-30 10:10:26
    赞同 展开评论
  • 正常的 模板和签名并非1对1的关系。多个签名创建短信模板时如何确认使用哪个?
    您创建的模板和签名审核通过后,可以根据自己的需求随意搭配。适用场景为验证码的签名,请选择验证码模板;适用场景为通用的签名,请选择验证码、短信通知、推广短信、国际/港澳台短信模板。此回答整理自钉群“阿里云 OpenAPI SDK 自签名服务群”

    2023-11-15 20:14:14
    赞同 展开评论