如何发送语音验证码

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

一、注册、报备及设置

1、注册云片,在控制台首页获取APIKEY。 2、为避免流量充值业务被盗用,需要开启 IP白名单, 才可以正常使用。

二、调通短信接口

语言验证码接口

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

访问方式:POST,接口支持https及http

参数:

参数名 类型 是否必须 描述 示例
apikey String 用户唯一标识 9b11127a9701975c734b8aee81ee3526
mobile String 接收的手机号、固话(需加区号) 15205201314
01088880000
code String 验证码,支持4~6位阿拉伯数字 1234
callback_url String 本条语音验证码状态报告推送地址 http://yourreceiveurl_address
display_num String 透传号码,为保证全国范围的呼通率,云片会自动选择最佳的线路,透传的主叫号码也会相应变化。此功能可能因运营商政策随时调整 400-089-2617

请求示例

  • Java
  • php
  • python
  • C#

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

// 以下为核心代码部分

$ch = curl_init();
// 必要参数
$apikey = "xxxxxxxxxxx"; //修改为您的apikey(https://www.yunpian.com)登录官网后获取
$mobile = "xxxxxxxxxxx"; //请用手机号代替
$code="1234"; //验证码,支持4~6位阿拉伯数字
// 发送短信
$data=array('code'=>$code,'apikey'=>$apikey,'mobile'=>$mobile);
curl_setopt ($ch, CURLOPT_URL, 'http://voice.yunpian.com/v2/voice/send.json');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$json_data = curl_exec($ch);
//解析返回结果(json格式字符串)
$array = json_decode($json_data,true);
echo '<pre>';print_r($array);

# apikey:成功注册后登录云片官网,进入后台可查看
# code:验证码,支持4~6位阿拉伯数字
# mobile:接收的手机号、固话(需加区号)
def send_voice(apikey, code, mobile):
# 服务地址
voice_host = "voice.yunpian.com"
# 端口号
port = 443
# 版本号
version = "v2"
# 语音短信接口的URI
voice_send_uri = "/" + version + "/voice/send.json"
params = urllib.urlencode({'apikey': apikey, 'code': code, 'mobile':mobile})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn = httplib.HTTPSConnection(voice_host, port=port, timeout=30)
conn.request("POST", voice_send_uri, params, headers)
response = conn.getresponse()
response_str = response.read()
conn.close()
return response_str

static string SendVoice()
{
    // 设置为您的apikey(https://www.yunpian.com可查)
    string apikey = "xxxxxxxxxxxxxxxxxxxxxxx";
    // 接收的手机号、固话(需加区号)
    string mobile = "xxxxxxxxxxxxxxxxxxxxxxx";
    // 验证码,支持4~6位阿拉伯数字
    string code = "1234";
    // 发送语音短信url
    string url_send_voice = "https://voice.yunpian.com/v2/voice/send.json";
    string data_send_voice = "apikey=" + apikey + "&mobile=" + mobile + "&code=" + code;
    // 请自行使用post方式请求
    return HttpPost(url_send_voice, data_send_voice);
}

调用成功的返回值示例

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

2、下载、导入SDK,并配置。

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

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

SDK示例

  • Java
  • php
  • python
  • C#

jar包
yunpian-java-sdk.jar
log4j.jar
gson.jar
commons-logging.jar
httpclient.jar (必须4.4以上)
httpcore.jar (必须4.4以上)

代码示例

/**
 * 发送语音验证码
 * @param apikey 成功注册后登录云片官网,进入后台可查看
 * @param mobile 接收的手机号、固话(需加区号)
 * @param code 验证码,支持4~6位阿拉伯数字
 */
public static void testVoice(String apikey, String mobile, String code) {
    YunpianRestClient client = new YunpianRestClient(apikey);//用apikey生成client,可作为全局静态变量
    VoiceOperator voiceOperator = client.getVoiceOperator();//获取语音操作类
    ResultDO<SendVoiceInfo> resultDO = voiceOperator.send(mobile, code);// 发送语音验证码
    System.out.println(resultDO);
    //ResultDO<List<VoiceStatusInfo>> result = voiceOperator.pullStatus();// 拉取语音状态报告
    //System.out.println(result);
}

1、下载依赖包:https://www.yunpian.com/api2.0/document-downloadSdk.html
2、在config.php 文件内填写你的 APIKEY
3、在使用处添加以下引用: require_once('path/to/YunpianAutoload.php')
4、获取相应操作类调用api

require_once '../YunpianAutoload.php';
// 发送语音验证码
$voiceOperator = new VoiceOperator();
$result = $voiceOperator->send(array("mobile"=>"18700000000","code"=>"1234"));
print_r($result);

本SDK适用于Python2,Python3版本在开发中,敬请期待。
使用pip安装依赖:pip install yunpian-sdk-python
或者下载包进行安装:pip install yunpian-sdk-python-1.0.0.tar.gz

from yunpian.VoiceOperator import VoiceOperator
import sys
import json
reload(sys)
sys.setdefaultencoding('utf-8')
APIKEY = 'your apikey'
voiceOperator = VoiceOperator(APIKEY)
result = voiceOperator.send({'mobile': '18700000000', 'code': '1234'})
print json.dumps(result.content, ensure_ascii=False)

依赖包
Newtonsoft.Json.dll
Yunpian.dll

static void Main(string[] args)
{
    //设置apikey
    Config config = new Config("your apikey");
    Dictionary<string, string> data = new Dictionary<string, string>();
    Result result = null;
    // 发送语音
    VoiceOperator voice = new VoiceOperator(config);
    data.Clear();
    data.Add("code", "1234");
    data.Add("mobile", "18700000000");
    result = voice.send(data);
    Console.WriteLine(result);
}

三、实现业务逻辑

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

四、按需开发功能

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