阿里云OpenAPI入参好像无法指定模板对应的短信签名,即使审核通过,该模板的签名也是空的,这个是正常的吗?如何通过API关联模板和签名呢?https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/AddSmsTemplate-
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云的短信服务(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)
正常的 模板和签名并非1对1的关系。多个签名创建短信模板时如何确认使用哪个?
您创建的模板和签名审核通过后,可以根据自己的需求随意搭配。适用场景为验证码的签名,请选择验证码模板;适用场景为通用的签名,请选择验证码、短信通知、推广短信、国际/港澳台短信模板。此回答整理自钉群“阿里云 OpenAPI SDK 自签名服务群”