如何发送语音验证码

本功能可以实现电话呼叫用户手机并播放验证码,默认播放2次。如:您的验证码是1234

一、注册、报备及设置

1、注册云片,在控制台首页获取APIKEY。2、开发阶段,建议先关闭IP白名单, 或将服务器IP及本地IP均设置在IP白名单内。

二、调通语音接口

方法一:直接使用API

HTTP头信息:

  1. Accept:application/json;charset=utf-8;
  2. Content-Type:application/x-www-form-urlencoded;charset=utf-8;

请求

URL: https://voice.yunpian.com/v2/voice/send.json

注意:海外服务器地址 us.yunpian.com

访问方式:POST

http支持:支持https 与 http 两种访问,建议使用https

请求参数:

参数名类型是否必须描述示例
apikeyString用户唯一标识9b11127a9701975c734b8aee81ee3526
mobileString接收的手机号、固话(需加区号)15205201314 01088880000
codeString验证码,支持4~6位阿拉伯数字1234
callback_urlString本条语音验证码状态报告推送地址。 如推送地址固定,建议在"数据推送与获取”做批量设置。http://your_receive_url_address
display_numString透传号码,为保证全国范围的呼通率,云片会自动选择最佳的线路,透传的主叫号码也会相应变化。此功能可能因运营商政策随时调整400-089-2617

请求示例

  1. /**
  2. * 发送语音验证码
  3. * @param apikey 成功注册后登录云片官网,进入后台可查看
  4. * @param code 验证码,支持4~6位阿拉伯数字
  5. * @param mobile 接收的手机号、固话(需加区号)
  6. * @return json格式字符串
  7. */
  8. public static String sendVoice(String apikey, String code, String mobile) {
  9. Map<String, String> params = new HashMap<String, String>();//请求参数集合
  10. params.put("apikey", apikey);
  11. params.put("code", code);
  12. params.put("mobile", mobile);
  13. return post("https://voice.yunpian.com/v2/voice/send.json", params);//请自行使用post方式请求,可使用Apache HttpClient
  14. }

响应

名称类型描述
countinteger成功发送的语音呼叫次数
feedouble扣费金额,单位:元,类型:双精度浮点型/double
sidstring记录id,32位的唯一字符串

Json返回示例

  1. {
  2. "count": 1,//成功发送的语音呼叫次数
  3. "fee": 0.05,//扣费金额,一次语音验证码呼叫扣一条
  4. "sid": "931ee0bac7494aab8a422fff5c6be3ea"//记录id,32位的唯一字符串
  5. }

方法二:下载、导入SDK,并配置。

目前云片提供JAVA/PHP/Python/C#/Golang 5种语言SDK、如果您的编程语言云片未提供SDK,您可以根据文档自行对接。

SDK下载地址(JAVA/PHP/Python/C#/GOLANG):去下载

SDK示例

  1. //初始化clnt,使用单例方式
  2. YunpianClient clnt = new YunpianClient("apikey").init();
  3. //发送语音验证码API
  4. Map<String, String> param = clnt.newParam(2);
  5. param.put(YunpianClient.MOBILE, "1390********");
  6. param.put(YunpianClient.CODE, "1234");
  7. Result<VoiceSend> r = clnt.voice().send(param);
  8. //获取返回结果,返回码:r.getCode(),返回码描述:r.getMsg(),API结果:r.getData(),其他说明:r.getDetail(),调用异常:r.getThrowable()
  9. //账户:clnt.user().* 签名:clnt.sign().* 模版:clnt.tpl().* 短信:clnt.sms().* 语音:clnt.voice().* 流量:clnt.flow().* 隐私通话:clnt.call().*
  10. //释放clnt
  11. clnt.close()

三、实现业务逻辑

  • 建议和短信验证码配合使用,默认发送短信验证码,如果用户长时间未收到短信验证码,可以建议用户通过语言验证码完成验证。
  • web/手机版注册页需要使用添加图形验证码,避免接口被恶意攻击

四、按需开发功能

  • 对语音发送状态做实时监控如果您需要通过程序对语音的发送状态做实时监控,可以开发“推送/获取状态报告”接口。
  • 国外地区使用海外服务器如海外用户可以调用海外服务器地址us.yunpian.com,获得更快的请求和处理速度。例如使用短信接口时,将sms.yunpian.com替换为us.yunpian.com即可。