1 阿里官方参考文档

https://help.aliyun.com/document_detail/57458.html?spm=a2c4g.11186623.6.689.39dc689bSkD8ww

1.1 流程

1.2 阿里短信api列表

安装阿里公共核心库
npm install @alicloud/pop-core -S
接入阿里任何服务,都要用到的核心库

短信发送接口

API 描述
SendSms 发送短信。
SendBatchSms 批量发送短信。

短信查询接口

API 描述
QuerySendDetails 查询短信发送的状态。

签名申请接口,一般后台不调用,直接在控制台伸请签名。

API 描述
AddSmsSign 调用短信AddSmsSign申请短信签名。
DeleteSmsSign 调用接口DeleteSmsSign删除短信签名。
QuerySmsSign 调用接口QuerySmsSign查询短信签名申请状态。
ModifySmsSign 调用接口ModifySmsSign修改未审核通过的短信签名,并重新提交审核。

模板申请接口,一般后台不调用,直接在控制台伸请模板。

API 描述
ModifySmsTemplate 调用接口ModifySmsTemplate修改未通过审核的短信模板。
QuerySmsTemplate 调用接口QuerySmsTemplate查询短信模板的审核状态。
AddSmsTemplate 调用接口AddSmsTemplate申请短信模板。
DeleteSmsTemplate 调用接口DeleteSmsTemplate删除短信模板。

回执消息

API 描述
SmsReport 订阅SmsReport短信状态报告,获取短信发送状态。
SmsUp 订阅SmsUp上行短信消息,获取终端用户回复短信的内容。
SignSmsReport 订阅SignSmsReport签名审核状态消息,获取指定签名的审核状态。
TemplateSmsReport 订阅TemplateSmsReport模板审核状态消息,获取指定模板的审核状态。

2 后台接入阿里API参数说明

2.1 向用户发送验证码

入参列表

参数名称 参数类型 必填与否 样例取值 参数说明
PhoneNumbers String 必须 1500000** 短信接收号码。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式,发送国际/港澳台消息时,接收号码格式为:国际区号+号码,如“8520000**”。
SignName String 必须 云通信 短信签名。
TemplateCode String 必须 SMS_0000 短信模板ID,发送国际/港澳台消息时,请使用国际/港澳台短信模版。
TemplateParam String 可选 {“code”:”1234”,”product”:”ytx”} 短信模板变量替换JSON串,友情提示:如果JSON中需要带换行符,请参照标准的JSON协议要求。
OutId String 可选 abcdefgh 外部流水扩展字段。

出参列表

出参名称 出参类型 样例取值 参数说明
RequestId String 8906582E-6722 请求ID。
Code String OK 状态码。返回OK代表请求成功,其他错误码详见错误码列表。
Message String 请求成功 状态码的描述。
BizId String 134523^4351232 发送回执ID,可根据该ID查询具体的发送状态。

发送短信技术对接步骤

2.1.1 下载SDK工具包

$ npm install @alicloud/sms-sdk —save

SDK&DEMO:下载地址

2.1.2 编写样例程序

  1. /**
  2. * 云通信基础能力业务短信发送、查询详情以及消费消息示例,供参考。
  3. * Created on 2017-07-31
  4. */
  5. const SMSClient = require('@alicloud/sms-sdk')
  6. // ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的账号信息进行替换
  7. const accessKeyId = 'yourAccessKeyId'
  8. const secretAccessKey = 'yourAccessKeySecret'
  9. //初始化sms_client
  10. let smsClient = new SMSClient({accessKeyId, secretAccessKey})
  11. //发送短信
  12. smsClient.sendSMS({
  13. PhoneNumbers: '1500000000',必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为:国际区号+号码,如“85200000000
  14. SignName: '云通信产品',必填:短信签名-可在短信控制台中找到
  15. TemplateCode: 'SMS_1000000',必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
  16. TemplateParam: '{"code":"12345"}'可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时。
  17. }).then(function (res) {
  18. let {Code}=res
  19. if (Code === 'OK') {
  20. //处理返回参数
  21. console.log(res)
  22. }
  23. }, function (err) {
  24. console.log(err)
  25. })

发送短信错误码

Code 描述
OK 请求成功。
isp.RAM_PERMISSION_DENY RAM权限DENY。
isv.OUT_OF_SERVICE 业务停机。
isv.PRODUCT_UN_SUBSCRIPT 未开通云通信产品的阿里云客户。
isv.PRODUCT_UNSUBSCRIBE 产品未开通。
isv.ACCOUNT_NOT_EXISTS 账户不存在。
isv.ACCOUNT_ABNORMAL 账户异常。
isv.SMS_TEMPLATE_ILLEGAL 短信模板不合法。
isv.SMS_SIGNATURE_ILLEGAL 短信签名不合法。
isv.INVALID_PARAMETERS 参数异常。
isp.SYSTEM_ERROR 系统错误。
isv.MOBILE_NUMBER_ILLEGAL 非法手机号。
isv.MOBILE_COUNT_OVER_LIMIT 手机号码数量超过限制。
isv.TEMPLATE_MISSING_PARAMETERS 模板缺少变量。
isv.BUSINESS_LIMIT_CONTROL 业务限流。
isv.INVALID_JSON_PARAM JSON参数不合法,只接受字符串值。
isv.BLACK_KEY_CONTROL_LIMIT 黑名单管控。
isv.PARAM_LENGTH_LIMIT 参数超出长度限制。
isv.PARAM_NOT_SUPPORT_URL 不支持URL。
isv.AMOUNT_NOT_ENOUGH 账户余额不足。

2.2 订阅并接收短信回执消息SmsReport

消息说明:由阿里云通知服务器有关上次的短信发送请求状态,发送成功,发送出错等详细信息。
消息类型码:0

名称 类型 描述 示例 是否必须
phone_number String 短信接收号码。 13000000000 可选
success Boolean 发送是否成功。 true 必须
biz_id String 发送回执ID。 1234^345 必须
out_id String 调用发送短信接口时传的outId。 123456 可选
send_time String 转发给运营商的时间。 2017-06-01 10:00:00 必须
report_time String 收到运营商回执的时间。 2017-06-01 10:00:05 可选
err_code String 错误码。 UNKNOW 可选
err_msg String 错误信息。 未知异常 可选
sms_size String 140字节算一条短信,短信长度超过140字节时会拆分成多条短信发送。 1,2,3 可选

2.3 订阅并接上行短信消息SmsUp

消息说明:由阿里云向服务器发起请求,请求中含有用户回发验证码的短信内容。
消息类型码:1

名称 类型 描述 示例 是否必须
phone_number String 短信接收号码。 13000000000 可选
content String 短信内容。 true 必须
sign_name String 短信签名。 【阿里云】 必须
send_time String 时间。 2017-06-01 10:00:00 必须
dest_code String 扩展码。 123456 必须
sequence_id String 消息序列ID。 123456 必须

2.4 订阅消息技术对接步骤

本步骤示例2.2的2.3接收api应用

2.4 1 :下载SDK工具包

$ npm install @alicloud/sms-sdk —save
SDK&DEMO[下载地址]

2.4.2 样例代码

  1. /**
  2. * 云通信基础能力业务短信发送、查询详情以及消费消息示例,供参考。
  3. * Created on 2017-07-31
  4. */
  5. const SMSClient =require('@alicloud/sms-sdk')
  6. // ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的账号信息进行替换
  7. const accessKeyId = 'yourAccessKeyId'
  8. const secretAccessKey = 'yourAccessKeySecret'
  9. //在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName,不用填最后面一段
  10. const queueName = 'Alicom-Queue-1092397003988387-'
  11. //初始化sms_client
  12. let smsClient = new SMSClient({accessKeyId, secretAccessKey})
  13. //短信回执报告
  14. smsClient.receiveMsg(0, queueName).then(function (res) {
  15. //消息体需要base64解码
  16. let {code, body}=res
  17. if (code === 200) {
  18. //处理消息体,messagebody
  19. console.log(body)
  20. }
  21. }, function (err) {
  22. console.log(err)
  23. })
  24. //短信上行报告
  25. smsClient.receiveMsg(1, queueName).then(function (res) {
  26. //消息体需要base64解码
  27. let {code, body}=res
  28. if (code === 200) {
  29. //处理消息体,messagebody
  30. console.log(body)
  31. }
  32. }, function (err) {
  33. console.log(err)
  34. })