验证码饿了么语音验证码回拔。 求解答

来自落地电话、呼叫中心等语音和IVR、短信的SDK文档—云通讯平台
        语音验证码是通过语音电话直接呼到用户手机或者固话,将验证码字符串播报给用户收听,解决了网站用户或会员用户经常因各种问题(被拦截或者短信下发不及时)不能及时接收到网站发出的短信验证码的问题。给网站管理者带来更轻松更高效的运营,也为用户带来更好的使用体验。  
        通过浏览器体验语音验证码:
 WEB、Android、IOS、Windows等能全部平台
   为了让用户在充值之前就能对语音验证码接口进行体验,我们让客户免费开发测试,您觉得可以了,再正式充值使用语音验证码。
 【免费开发测试也需要先注册成为平台用户,但不需要先做认证和充值】
  免费开发测试注意事项:
     1.免费开发测试需要使用“控制台——应用——测试demo”下相关信息,如主账号,应用ID。
     2.免费开发测试需要使用沙盒环境。
     3.免费开发测试需要在“控制台——应用——号码管理——测试号码”绑定测试用号码。
测试没有问题后,你就可以切换到生产环境了【如果您还没有创建自己的应用,需要您在控制台创建应用——点击上线等待审核通过】
  切换到正式环境注意事项:     1.将Base URL 由沙盒环境(替换到生产环境(
     2.将AppId由“测试Demo”的AppId改为自己创建的应用的AppId。
                     
语音验证码API引用的地址有Base URL。
    沙盒环境的Base URL:
    生产环境的Base URL:
   注意:
        1.为了确保数据隐私,云通讯平台的REST API是通过HTTPS方式请求。
URL格式://Accounts/{accountSid}/Calls/VoiceVerify?sig={SigParameter}
在URL格式中 {}内的内容表示为参数,非{}的内容固定不变。
属性说明:
accountSid
开发者主账户ACCOUNT SID。(登陆官网在管理控制台获取)
SigParameter
REST API 验证参数,生成规则如下1.使用MD5加密(账户Id + 账户授权令牌 + 时间戳)。其中账户Id和账户授权令牌根据url的验证级别对应主账户。
时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳有效时间为24小时,如:30
2.SigParameter参数需要大写,如不能写成sig=abcdefg而应该写成sig=ABCDEFG
Accept:application/Content-Type:application/charset=utf-8;Content-Length:256; Authorization:
客户端响应接收数据格式:application/xml、application/json
Content-Type
类型:application/charset=utf-8、application/charset=utf-8
Content-Length
Content-Length
Authorization
验证信息,生成规则详见下方说明1.使用Base64编码(账户Id + 冒号 + 时间戳)其中账户Id根据url的验证级别对应主账户2.冒号为英文冒号3.时间戳是当前系统时间,格式"yyyyMMddHHmmss",需与SigParameter中时间戳相同。
verifyCode
验证码内容,为数字和英文字母,不区分大小写,长度4-8位
接收号码,被叫为座机时需要添加区号,如:;被叫为分机时分机号由‘-’隔开,如:-3627
displayNum
显示主叫号码,显示权限由服务侧控制。
循环播放次数,1-3次,默认播放1次。
回调地址(必须符合URL规范),云通讯平台将向该Url地址发送呼叫结果通知。
播放的语言类型(暂不支持设置en,默认zh)。取值en(英文)、zh(中文),默认值zh。
第三方私有数据,可在中获取此参数。
welcomePrompt
wav格式的文件名,欢迎提示音,在播放验证码语音前播放此内容,配合verifyCode使用,默认值空,当playVerifyCode为空有效。语音文件通过官网上传审核后才可使用,放音文件的格式样本如下:位速 128kbps,音频采样大小16位,频道 1(单声道), 音频采样级别 8 kHz,音频格式 PCM,这样能保证放音的清晰度。
playVerifyCode
wav格式的文件名,语音验证码的内容全部播放此节点下的全部语音文件,也就是实现了语音验证码功能播放用户自己的语音文件,该参数和verifyCode二者不能同时为空,当二者都不为空时优先使用playVerifyCode。可支持多个wav文件,用;分隔。语音文件通过官网上传审核后才可使用,放音文件的格式样本如下:位速 128kbps,音频采样大小16位,频道 1(单声道), 音频采样级别 8 kHz,音频格式 PCM,这样能保证放音的清晰度。
maxCallTime
该通通话最大通话时长,到时间自动挂机
1,显号设置需要云平台开放相关权限,如需开通请联系云通讯商务人员或拨打400-610-1019
2,单个号码每日下发次数上限由云通讯平台控制
POST //Accounts/abcdefghijklmnopqrstuvwxyz012345/Calls/VoiceVerify?sig=C1F20E7AC70A1DBABCDE HTTP/1.1Host:192.168.0.1:8883content-length: 139Accept:application/Content-Type:application/charset=utf-8;Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE= &?xml version='1.0' encoding='utf-8'?&&VoiceVerify&           &appId&abcdefghijklmnopqrstuvwxyz123456&/appId&  &verifyCode&1a8d9u&/verifyCode&  &playTimes&2&/playTimes&  &to&&/to&  &displayNum&&/displayNum&  &welcomePrompt&huanying.wav&/welcomePrompt&  &maxCallTime&60&/maxCallTime&&/VoiceVerify&
用户收听的效果是:”huanying.wav+您的验证码是1a8d9u“
POST //Accounts/abcdefghijklmnopqrstuvwxyz012345/Calls/VoiceVerify?sig=C1F20E7AC70A1DBABCDE HTTP/1.1Host:192.168.0.1:8883content-length: 139Accept:application/Content-Type:application/charset=utf-8;Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE= {"appId":"abcdefghijklmnopqrstuvwxyz123456","verifyCode":"1a8d9u","playTimes":"2","to":"","displayNum":"","welcomePrompt":"huanying.wav","maxCallTime":"60"}
用户收听的效果是:”huanying.wav+您的验证码是1a8d9u“
POST //Accounts/abcdefghijklmnopqrstuvwxyz012345/Calls/VoiceVerify?sig=C1F20E7AC70A1DBABCDE HTTP/1.1Host:192.168.0.1:8883content-length: 139Accept:application/Content-Type:application/charset=utf-8;Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE= &?xml version='1.0' encoding='utf-8'?&&VoiceVerify&           &appId&abcdefghijklmnopqrstuvwxyz123456&/appId&  &verifyCode&1a8d9u&/verifyCode&  &playTimes&2&/playTimes&  &to&&/to&  &displayNum&&/displayNum&  &welcomePrompt&huanying.wav&/welcomePrompt&  &maxCallTime&60&/maxCallTime&  &playVerifyCode&yanzhengma.1.3.5.9.wav&/playVerifyCode&&/VoiceVerify&
用户收听的效果是:”huanying.wav+yanzhengma.wav+1.wav+3.wav+5.wav+9.wav“
POST //Accounts/abcdefghijklmnopqrstuvwxyz012345/Calls/VoiceVerify?sig=C1F20E7AC70A1DBABCDE HTTP/1.1Host:192.168.0.1:8883content-length: 139Accept:application/Content-Type:application/charset=utf-8;Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE= {"appId":"abcdefghijklmnopqrstuvwxyz123456","verifyCode":"1a8d9u","playTimes":"2","to":"","displayNum":"","welcomePrompt":"huanying.wav","maxCallTime":"60","playVerifyCode":"yanzhengma.1.3.5.9.wav"}
用户收听的效果是:”huanying.wav+yanzhengma.wav+1.wav+3.wav+5.wav+9.wav“
  此步响应只表明客户的语音验证码请求发送成功,不表明运营商已经呼叫发送验证码成功。
statusCode
请求状态码,取值000000(成功),可参考。
一个由32个字符组成的唯一电话标识符
dateCreated
电话的创建时间
HTTP/1.1 200 OK Content-Length: 641 &?xml version="1.0" encoding="UTF-8" standalone="yes"?&&Response&  &statusCode&000000&/statusCode&  &VoiceVerify&    &callSid&a1c71dbd5e12f&/callSid&    &dateCreated& 15:38:09&/dateCreated&  &/VoiceVerify&&/Response&
HTTP/1.1 200 OK Content-Length: 641 {"statusCode":"000000","VoiceVerify":{"dateCreated":" 15:53:06","callSid":" ffcab013c94be9fe300c5"}}
呼叫结束之后,云通讯平台将向请求中配置的respUrl地址发送。
语音验证码挂机后给应用侧的通知消息。
服务器地址
&ip&:&port&
Content-Type
text/plain
Content-Length
消息体的长度
表示语音验证码
对应接口返回callSid参数,一路呼叫的唯一标示
 32位字符串
 0正常通话 1被叫通话未应答  2外呼失败
通话时长 
用户私有数据。接口参数
POST /{path} HTTP/1.1 Host: &ip&:&port&Content-Type: text/plainContent-Length: &Len&&?xml version="1.0" encoding="UTF-8"?&&Request&    &action&VoiceCode&/action&    &number&&/number&    &callSid&0000002f&/callSid&    &state&0&/state&    &duration&30&/duration&&/Request& 
statuscode
响应状态码
 取值000000(成功)
HTTP/1.1 200 okDate:Wed Nov 9 16:08:57 2011Content-Length: &len& &?xml version="1.0" encoding="UTF-8"?&&Response&    &statuscode&000000&/statuscode&&/Response&
语音验证码请求的响应中statusCode为“000000”表示请求发送成功。statusCode不是“000000”,表示请求发送失败;请求成功后在配置的respUrl接收返回的语音验证码状态通知,state为0正常通话 1被叫通话未应答 2外呼失败。客户服务端可以根据自己的逻辑进行重发或者其他处理。
我们在网站上提供各种开发语言的,用户要参考语音验证码功能如何实现,可以在“REST Server Demo”部分根据自己的开发语言下载相应的Demo例子。
1.接口声明文件:SDK\CCPRestSDK.php
2.接口函数定义:function voiceVerify($verifyCode,$playTimes,$to,$displayNum,$respUrl,$lang,$userData)
3.参数说明:
$verifyCode: 验证码内容,为数字和英文字母,不区分大小写,长度4-8位。$playTimes: 播放次数,1-3次。$to: 接收号码。$displayNum: 显示的主叫号码。$respUrl: 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知。$lang: 语言类型。取值en(英文)、zh(中文),默认值zh。。$userData: 第三方私有数据。
4.接口调用示例:
include_once("../SDK/CCPRestSDK.php");说明:需要包含接口声明文件,可将该文件拷贝到自己的程序组织目录下。
$accountSid= ; 说明:主账号,登陆云通讯网站后,可在“控制台-应用”中看到开发者主账号ACCOUNT SID。
$accountToken= ; 说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTH TOKEN。
$appId=; 说明:应用Id,如果是在沙盒环境开发,请配置“控制台-应用-测试DEMO”中的APPID。如切换到生产环境,请使用自己创建应用的APPID。
$serverIP=''; 说明:请求地址。沙盒环境配置成,生产环境配置成。
$serverPort='8883'; 说明:请求端口 ,无论生产环境还是沙盒环境都为8883.
$softVersion=''; 说明:REST API版本号保持不变。
  function voiceVerify($verifyCode,$playTimes,$to,$displayNum,$respUrl,$lang,$userData)
{     // 初始化REST SDK     global $accountSid,$accountToken,$appId,$serverIP,$serverPort,$softV      $rest = new REST($serverIP,$serverPort,$softVersion);      $rest-&setAccount($accountSid,$accountToken);      $rest-&setAppId($appId);     
     // 调用语音验证码接口     echo "Try to make a voiceverify,called is $to&br/&";     $result = $rest-&voiceVerify($verifyCode,$playTimes,$to,$displayNum,$respUrl,$lang,$userData);      if($result == NULL ) {         echo "result error!";                }     if($result-&statusCode!=0) {         echo "error code :" . $result-&statusCode . "&br&";         echo "error msg :" . $result-&statusMsg . "&br&";         //下面可以自己添加错误处理逻辑     }else{         echo "voiceverify success!&br/&";         // 获取返回信息         $voiceVerify = $result-&VoiceV         echo "callSid:".$voiceVerify-&callSid."&br/&";                  echo "dateCreated:".$voiceVerify-&dateCreated."&br/&";         //下面可以自己添加成功处理逻辑     }}可参考demo中的接口调用文件:Demo\VoiceVerify.php。
1.接口声明文件:sdk\src\com\cloopen\rest\sdk\CCPRestSDK.java
2.接口函数定义:public HashMap&String, Object& voiceVerify(String verifyCode, String to,String displayNum, String playTimes, String respUrl, String lang,String userData)
3.参数说明:
$verifyCode: 验证码内容,为数字和英文字母,不区分大小写,长度4-8位。$playTimes: 播放次数,1-3次。$to: 接收号码。$displayNum: 显示的主叫号码。$respUrl: 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知。$lang: 语言类型。取值en(英文)、zh(中文),默认值zh。。$userData: 第三方私有数据。
说明:CCPRestSDK.java依赖Jar包:package com.cloopen.rest.sdk,在LIB目录下
4.接口调用示例:
import com.cloopen.rest.sdk.CCPRestSDK; import com.cloopen.rest.sdk.CCPRestSDK.BodyT public class SDKTestVoiceVerifyCode {public static void main(String[] args) {HashMap&String, Object& result =  CCPRestSDK restAPI = new CCPRestSDK();restAPI.init("", "8883");// 初始化服务器地址和端口,沙盒环境配置成,生产环境配置成,端口都是8883. 
restAPI.setAccount("accountSid", "accountToken");// 初始化主账号名称和主账号令牌,登陆云通讯网站后,可在“控制台-应用”中看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN。restAPI.setAppId("AppId");// 初始化应用ID,如果是在沙盒环境开发,请配置“控制台-应用-测试DEMO”中的APPID。如切换到生产环境,请使用自己创建应用的APPIDresult = restAPI.voiceVerify("验证码内容", "号码","显示的号码","3(播放次数)","状态通知回调地址", "语言类型", "第三方私有数据");System.out.println("SDKTestVoiceVerify result=" + result); if("000000".equals(result.get("statusCode"))){//正常返回输出data包体信息(map)HashMap&String,Object& data = (HashMap&String, Object&) result.get("data");Set&String& keySet = data.keySet();for(String key:keySet){ Object object = data.get(key); System.out.println(key +" = "+object); }}else{//异常返回输出错误码和错误信息System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));}}}可参考demo中的接口调用文件:demo\src\com\cloopen\rest\demo\SDKTestVoiceVerify.java。
1.接口声明文件:SDK \CCPRestSDK.py
2.接口函数定义:def voiceVerify(verifyCode,playTimes,to,displayNum,respUrl,lang,userData) 
3.参数说明:
$verifyCode: 验证码内容,为数字和英文字母,不区分大小写,长度4-8位。$playTimes: 播放次数,1-3次。$to: 接收号码。$displayNum: 显示的主叫号码。$respUrl: 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知。$lang: 语言类型。取值en(英文)、zh(中文),默认值zh。。$userData: 第三方私有数据。
4.接口调用示例:
编码说明:coding=utf-8或gbk
from CCPRestSDK import RESTimport ConfigParser
accountSid= '您的主账号'; #说明:主账号,登陆云通讯网站后,可在“控制台-应用”中看到开发者主账号ACCOUNT SID。
accountToken= '您的主账号Token'; #说明:主账号Token,登陆云通讯网站后,可在控制台-应用中看到开发者主账号AUTH TOKEN。
appId='您的应用ID'; #说明:应用Id,如果是在沙盒环境开发,请配置“控制台-应用-测试DEMO”中的APPID。如切换到生产环境,请使用自己创建应用的APPID.
serverIP=''#说明:请求地址。沙盒环境配置成,生产环境配置成。
serverPort='8883'; #说明:请求端口 ,无论生产环境还是沙盒环境都为8883.
softVersion=''; #说明:REST API版本号保持不变。 
def voiceVerify(verifyCode,playTimes,to,displayNum,respUrl,lang,userData):     #初始化REST SDK    rest = REST(serverIP,serverPort,softVersion)     rest.setAccount(accountSid,accountToken)     rest.setAppId(appId)
    result = rest.voiceVerify(verifyCode,playTimes,to,displayNum,respUrl,lang,userData)    for k,v in result.iteritems():        if k=='VoiceVerify' :                 for k,s in v.iteritems():                    print '%s:%s' % (k, s)         else:             print '%s:%s' % (k, v) 可参考demo中的接口调用文件:VoiceVerify.py。
1.接口声明文件:CCPRestSDK.cs
2.接口函数定义: public Dictionary&string, object& VoiceVerify(string to, string verifyCode, string displayNum, string playTimes, string respUrl)
3.参数说明:
$verifyCode: 验证码内容,为数字和英文字母,不区分大小写,长度4-8位。$playTimes: 播放次数,1-3次。$to: 接收号码。$displayNum: 显示的主叫号码。$respUrl: 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知。$lang: 语言类型。取值en(英文)、zh(中文),默认值zh。。$userData: 第三方私有数据。
4.接口调用示例:
using S using System.Collections.G using System.L using System.W using System.Web.UI; using System.Web.UI.WebC 
namespace VoiceVerifyCode{    public partial class _Default : Page    {        protected void Page_Load(object sender, EventArgs e)         {            string ret =              CCPRestSDK.CCPRestSDK api = new CCPRestSDK.CCPRestSDK();
            bool isInit = api.init("", "8883");            api.setAccount(主账号, 主账号令牌);             api.setAppId(应用ID); 
            try            {                if (isInit)                 {                    Dictionary&string, object& retData = api.VoiceVerify(接听号码, 验证码内容, 接听侧显示号码, 播放次数, 语音验证码状态通知回调地址);                     ret = getDictionaryData(retData);                 }                else                {                    ret = "初始化失败";                }            }            catch (Exception exc)             {                ret = exc.M             }            finally            {                Response.Write(ret);             }        }
        private string getDictionaryData(Dictionary&string, object& data)
        {            string ret =              foreach (KeyValuePair&string, object& item in data)             {                if (item.Value != null && item.Value.GetType() == typeof(Dictionary&string, object&))                {                    ret += item.Key.ToString() + "={";                    ret += getDictionaryData((Dictionary&string, object&)item.Value);                     ret += "};";                }                else                {                    ret += item.Key.ToString() + "=" + (item.Value == null ? "null" : item.Value.ToString()) + ";";                }            }            return          }    }}可参考demo中的接口调用文件:
CCPRestDemo\Demo\VoiceVerifyCode\Default.aspx.cs。
【呼叫】语音验证码内容为空
【呼叫】语音验证码内容长度有误
【呼叫】语音验证码被叫电话号码为空
【呼叫】语音验证码被叫电话号码存在非法字符
【呼叫】语音验证码被叫电话号码位数不足
【呼叫】语音验证码被叫电话号码位数超长
【呼叫】应用未上线,语音验证码被叫号码外呼受限
1.语音验证码请求发送成功,但是目标手机却没有收到?
答:A.同一个手机号每天只能发送30条内容语言验证码
     B.未设置显号业务,被叫手机拒接或者屏蔽默认号码
2.测试接口提示:111324【呼叫】应用未上线,语音验证码被叫号码外呼受限。
答:在用未上线应用或者测试DEMO的时候,只能给“控制台-测试号码”里面配置的手机号发送语言验证码。
3.使用自定义语音,目标手机接到电话接听直接挂机无放音。
答:所有平台接口使用的自定义语音文件需要在管理控制台对应应用提交语音审核,审核通过才可以调用。

我要回帖

更多关于 语音验证码平台 的文章

 

随机推荐