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 编写样例程序
/*** 云通信基础能力业务短信发送、查询详情以及消费消息示例,供参考。* Created on 2017-07-31*/const SMSClient = require('@alicloud/sms-sdk')// ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的账号信息进行替换const accessKeyId = 'yourAccessKeyId'const secretAccessKey = 'yourAccessKeySecret'//初始化sms_clientlet smsClient = new SMSClient({accessKeyId, secretAccessKey})//发送短信smsClient.sendSMS({PhoneNumbers: '1500000000',必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为:国际区号+号码,如“85200000000”SignName: '云通信产品',必填:短信签名-可在短信控制台中找到TemplateCode: 'SMS_1000000',必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版TemplateParam: '{"code":"12345"}'可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时。}).then(function (res) {let {Code}=resif (Code === 'OK') {//处理返回参数console.log(res)}}, function (err) {console.log(err)})
发送短信错误码
| 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 样例代码
/*** 云通信基础能力业务短信发送、查询详情以及消费消息示例,供参考。* Created on 2017-07-31*/const SMSClient =require('@alicloud/sms-sdk')// ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的账号信息进行替换const accessKeyId = 'yourAccessKeyId'const secretAccessKey = 'yourAccessKeySecret'//在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName,不用填最后面一段const queueName = 'Alicom-Queue-1092397003988387-'//初始化sms_clientlet smsClient = new SMSClient({accessKeyId, secretAccessKey})//短信回执报告smsClient.receiveMsg(0, queueName).then(function (res) {//消息体需要base64解码let {code, body}=resif (code === 200) {//处理消息体,messagebodyconsole.log(body)}}, function (err) {console.log(err)})//短信上行报告smsClient.receiveMsg(1, queueName).then(function (res) {//消息体需要base64解码let {code, body}=resif (code === 200) {//处理消息体,messagebodyconsole.log(body)}}, function (err) {console.log(err)})
