短信接入指引

接口限制规则

  1. 短信服务属于收费功能,如有疑问请联系客户顾问;
  2. 验证码支持中英文模板,模板的定制可联系客户顾问;
  3. 对接收方手机号码限制1天最多10条短信验证码;
  4. 提供验证码发送方deviceId参数,调用方选填。填写效果如下:一个deviceId默认一天发送10条验证码,如需修改可在短信配置中修改,最多不超过25条;
  5. 对同一个接收方手机号码,一分钟最多接受3条相同的短信;
  6. 对同一个接收方手机号码,一天最多接受5条相同的短信;
  7. 验证码有效时间默认为10分钟,如需修改可在短信配置中修改,单位秒,最长不超过120分钟;
  8. 对一个手机号码的验证调用,连续校验错误10次以后,该验证码立即失效,校验错误接口返回中需告知开发者当前错误次数;
  9. 对未发送短信验证码的手机号码验证调用,一天累计超过1万次会视为恶意攻击,将暂停该appkey的短信验证码服务,一旦发生此情况请联系客户顾问;
  10. 云信短信分为验证码短信、通知类短信和运营类短信,在调用短信验证码接口时可以同时调用校验验证码接口进行验证码校验。用户使用短信模版来发送短信则只需调用发送模版短信接口即可。

发送短信验证码

请求说明

POST https://api.netease.im/sms/sendcode.action HTTP/1.1
Content-Type:application/x-www-form-urlencoded;charset=utf-8

请求中Headers的设置请参考接口概述

接口描述

向指定的手机号码发送短信验证码。

参数说明

参数类型必须说明
mobileString目标手机号
deviceIdString目标设备号,可选参数
templateid int 模板编号(如不指定则使用配置的默认模版)
codeLen int 验证码长度,范围4~10,默认为4

curl请求示例

curl -X POST -H "AppKey: go9dnk49bkd9jd9vmel1kglw0803mgq3" -H "CurTime: 1443592222" -H "CheckSum: 9e9db3b6c9abb2e1962cf3e6f7316fcc55583f86" -H "Nonce: 4tgggergigwow323t23t" -H "Content-Type: application/x-www-form-urlencoded" -d 'mobile=13812345678' 'https://api.netease.im/sms/sendcode.action'

返回说明

http 响应:json

发送成功则返回相关信息。msg字段表示此次发送的sendid;obj字段表示此次发送的验证码,为4位数字。

"Content-Type": "application/json; charset=utf-8"
{
  "code": 200,
  "msg": "88",
  "obj": "1908"
}

主要的返回码

200、315、403、414、416、500

具体请参考code状态表


校验验证码

请求说明

POST https://api.netease.im/sms/verifycode.action HTTP/1.1
Content-Type:application/x-www-form-urlencoded;charset=utf-8

请求中Headers的设置请参考接口概述

接口描述

校验指定手机号的验证码是否合法。

参数说明

参数类型必须说明
mobileString目标手机号
codeString验证码

curl请求示例

curl -X POST -H "AppKey: go9dnk49bkd9jd9vmel1kglw0803mgq3" -H "CurTime: 1443592222" -H "CheckSum: 9e9db3b6c9abb2e1962cf3e6f7316fcc55583f86" -H "Nonce: 4tgggergigwow323t23t" -H "Content-Type: application/x-www-form-urlencoded" -d 'mobile=13812345678&code=1234' 'https://api.netease.im/sms/verifycode.action'

返回说明

http 响应:json

"Content-Type": "application/json; charset=utf-8"
{
  "code":200
}

主要的返回码

200、301、315、403、404、413、414、500

具体请参考code状态表


发送模板短信

请求说明

POST https://api.netease.im/sms/sendtemplate.action HTTP/1.1
Content-Type:application/x-www-form-urlencoded;charset=utf-8

请求中Headers的设置请参考接口概述

接口描述

向手机号发送内容格式预定义的短信,整个短信的内容由模板和变量组成。

参数说明

参数类型必须说明
templateidint模板编号(由客户顾问配置之后告知开发者)
mobilesString接收者号码列表,JSONArray格式,如["186xxxxxxxx","186xxxxxxxx"],限制接收者号码个数最多为100个
paramsString模板中若含变量则必须包含此参数短信参数列表,用于依次填充模板,JSONArray格式,如["xxx","yyy"];对于不包含变量的模板,不填此参数表示模板即短信全文内容

curl请求示例

curl -X POST -H "AppKey: go9dnk49bkd9jd9vmel1kglw0803mgq3" -H "CurTime: 1443592222" -H "CheckSum: 9e9db3b6c9abb2e1962cf3e6f7316fcc55583f86" -H "Nonce: 4tgggergigwow323t23t" -H "charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" -d 'templateid=1007&mobiles=["13812345678"]&params=["hello"]' 'https://api.netease.im/sms/sendtemplate.action'

返回说明

http 响应:json

成功则在obj中返回此次发送的sendid(long),用于查询发送结果

"Content-Type": "application/json; charset=utf-8"
{
  "code":200,
  "msg":"sendid", 
  "obj":123
}

主要的返回码

200、315、403、413、414、500

具体请参考code状态表


查询模板短信发送状态

请求说明

POST https://api.netease.im/sms/querystatus.action HTTP/1.1
Content-Type:application/x-www-form-urlencoded;charset=utf-8

请求中Headers的设置请参考接口概述

接口描述

根据短信的sendid(sendtemplate.action接口中的返回值),查询短信发送结果。

参数说明

参数类型必须说明
sendidlong发送短信的编号sendid

curl请求示例

curl -X POST -H "AppKey: go9dnk49bkd9jd9vmel1kglw0803mgq3" -H "CurTime: 1443592222" -H "CheckSum: 9e9db3b6c9abb2e1962cf3e6f7316fcc55583f86" -H "Nonce: 4tgggergigwow323t23t" -H "charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" -d 'sendid=1' 'https://api.netease.im/sms/querystatus.action'

返回说明

http 响应:json

obj中返回JSONArray,格式如下(其中status取值:0-未发送,1-发送成功,2-发送失败,3-反垃圾):

"Content-Type": "application/json; charset=utf-8"
{
  "code": 200,
  "obj": [
    {
      "status": 1,
      "mobile": "13812341234",
      "updatetime": 1471234567812
    }
  ]
}

主要的返回码

200、315、403、404、413、414、500

具体请参考code状态表


短信常见问题

短信计价方式

1、短信内容计算规则?

云信短信计费包括短信签名,70字计1条短信费,超过70字则以67字每条计费,当短信中出现中文字符,则单个汉字、英文、标点和空格等都算一个字。

2、短信的计费模式?

云信短信按照用户实际使用情况进行实时计费,出月账单时会统计用户上个月的短信发送状态,对运营商返回短信发送成功状态的短信和未返回发送状态的短信进行扣费,对返回状态为发送失败的短信根据失败条数进行短信量反充。

3、短信发送失败,还是会扣费吗?

接口调用失败及运营商返回失败状态,都不会扣费。

短信使用规则咨询

1、短信发送频率上有什么样的限制?

1)验证码模版:系统默认的配置为对接收方手机号码限制1天最多10条短信验证码,用户可以在短信配置修改。

2)系统默认验证码有效时间默认为10分钟,用户可以在短信配置修改短信显示号码及显号规则。

3)手机端接收显示的号码是106开头的正规号码 显号规则:
a.号码=通道号+扩展码;
b.在通道不稳定、网络抖动及机房断电等不可抗拒的因素下,为确保到达率及到达时间,会自动切换通道,通道号会发生变化。

2、短信提供哪些功能?

目前支持短信下行发送、短信状态报告回执、帐单查询等;暂不支持短信上行发送。

3、短信发送成功,但实际未能收到短信是什么原因?

a.手机是不是长时间不关机,可以关机重启下;
b.手机收件箱是不是已满,删除一些看是否可以正常接收;
c.手机是不是双卡双待的手机,把卡拿出来换一下卡槽;
d.手机是不是安装了安全软件,安全软件有可能会进行拦截到垃圾信箱里;
e.如若不行,请您将SIM卡换到其他手机上进行测试。

4、短信发送状态回执哪里查看?

云信将主动发送回执信息给用户,用户可调用查询模板短信发送状态接口查询; 用户也可以在云信用户管理后台的数据统计模块中查询短信发送状态。

5、短信三网都可发送吗,能发送海外/港澳台吗?

支持三网发送,目前海外/港澳台暂不支持,敬请期待。

6、短信字数最多能发多少个字?

最大支持发送300个字以内的短信。

7、变量可传字符长度为多少个字?

网易云信提供的模板短信由固定内容与多个变量构成,其中 " %s " 为需要接口替换的变量,变量内容可以是汉字、字母、数字或者特殊字符组合,但单个变量内容长度不得超过30个字。

8、变量中可直接写链接吗?

变量中不允许传链接,包含短链接;建议将已ICP备案的网址写于短信模板非变量内容中,审核通过后可发送。

9、为什么传进来的验证码首位不支持0?

云信模版短信参数仅支持string类型,如果使用int类型则首位的0会被省去。

技术咨询

1、如何有效防止短信轰炸?

短信轰炸指在短时间内通过恶意程序,批量.循环给一批手机号码无限发送各种无效短信的行为,导致接收短信的手机用户被骚扰,给业务方造成品牌及业务不良影响。

设置有效业务流控,以下为云信业务流控:
a.短信验证码:使用同一个签名,对接收方手机号码限制1天最多10条短信验证码;
b.加上图形验证码:加上图形验证码可有效防止恶意工具的自动化调用,即当用户进行“动态验证码短信发送” 操作前, 弹出图形验证码,要求用户输入验证码后,服务器端再发送动态短信到用户手机上,该方法可有效解决被利用实施短信轰炸攻击的问题;
c.对验证码获取做限制(一般限制在60秒以内,超出60秒验证码作废,重新获取);
d.对验证码输入做时间限制(一般限制在30秒以内,超出30秒没有输入的验证码作废,重新获取)。

2、发送短信验证码为什么数字后面会出现“.0”?

json格式请使用string类型。

3、支持同时发多个手机吗?

支持,建议一次最多可提交100个手机号码,以防发送失败。

4、API调用次数有没有限制?

创建应用即可获得100万次的每日调用。