自定义语音接口

1 自定义电话语音验证码接口请求方式
  • 个性化语音内容,由您提供语音文件。语音验证码API访问的地址见Base URL。
1.1 Base URL
  • 生产环境的Base URL:https://app.cloopen.com:8883
  • 注意:为了确保数据隐私,云通讯平台的REST API是通过HTTPS方式请求。
1.2 业务流程说明
1.3 统一请求包头

  • URL格式:/2013-12-26/Accounts/{accountSid}/Calls/VoiceVerify?sig={SigParameter}

  • 在URL格式中 {}内的内容表示为参数,非{}的内容固定不变。

  • 属性说明:

属性类型约束说明
accountSid
String必选
开发者主账户ACCOUNT SID。(登陆官网在管理控制台获取)
SigParameter
String必选

REST API 验证参数,生成规则如下

1.使用MD5加密(账户Id + 账户授权令牌 + 时间戳)。其中账户Id和账户授权令牌根据url的验证级别对应主账户。

时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳有效时间为24小时,如:20140416142030

2.SigParameter参数需要大写,如不能写成sig=abcdefg而应该写成sig=ABCDEFG

1.4 HTTP标准包头字段(必填)
  • Accept:application/xml;
  • Content-Type:application/xml;charset=utf-8;
  • Content-Length:256; 
  • Authorization:

  • 属性说明:

属性类型约束说明
Accept
String必选客户端响应接收数据格式:application/xml、application/json
Content-Type
String必选类型:application/xml;charset=utf-8、application/json;charset=utf-8
Content-Length
String必选Content-Length
AuthorizationString必选

验证信息,生成规则详见下方说明

1.使用Base64编码(账户Id + 冒号 + 时间戳)其中账户Id根据url的验证级别对应主账户

2.冒号为英文冒号

3.时间戳是当前系统时间,格式"yyyyMMddHHmmss",需与SigParameter中时间戳相同。

1.5 请求包体
属性类型约束说明
appIdString必选应用Id
verifyCodeString可选验证码内容,为数字和英文字母,不区分大小写,长度4-8位
toString必选

接收号码,被叫为座机时需要添加区号,如:01052823298;被叫为分机时分机号由'-'隔开,如:

01052823298-3627

displayNumString可选显示主叫号码,显示权限由服务侧控制。
playTimesString可选循环播放次数,1-3次,默认播放1次。
respUrlString可选语音验证码状态通知回调地址(必须符合URL规范),云通讯平台将向该Url地址发送呼叫结果通知。
langString可选播放的语言类型(暂不支持设置en,默认zh)。取值en(英文)、zh(中文),默认值zh。
userDataString可选第三方私有数据,可在语音验证码状态通知中获取此参数。
playVerifyCodeString必选

内容由多个wav格式文件组成,用";"分隔,云通讯会顺序播放文件内容。

语音文件在管理控制台上传,审核通过之后才可以使用。

放音文件的格式样本如下:位速 128kbps,音频采样大小16位,频道 1(单声道), 音频采样级别

8kHz,音频格式PCM,这样能保证放音的清晰度。

maxCallTimeString可选该通通话最大通话时长,到时间自动挂机
1.6 自定义语音模板的XML请求示例
  •  POST /2013-12-26/Accounts/abcdefghijklmnopqrstuvwxyz012345/Calls/VoiceVerify?sig=C1F20E7A9733CE94F680C70A1DBABCDE
  •  HTTP/1.1
  •  Host:192.168.0.1:8883
  •  content-length: 139
  •  Accept:application/xml;
  •  Content-Type:application/xml;charset=utf-8;
  •  Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE=
  •  
  •   <?xml version='1.0' encoding='utf-8'?>
  •    <VoiceVerify>         
  •     <appId>abcdefghijklmnopqrstuvwxyz123456</appId>
  •     <verifyCode>1a8d9u</verifyCode>
  •     <playTimes>2</playTimes>
  •           <to>13811234567</to>
  •     <displayNum>01052821234</displayNum>
  •     <welcomePrompt>huanying.wav</welcomePrompt>
  •     <maxCallTime>60</maxCallTime>
  •     <playVerifyCode>yanzhengma.wav;1.wav;3.wav;5.wav;9.wav</playVerifyCode>
  •   </VoiceVerify>
  •             

  • 用户收听的效果是:"huanying.wav+yanzhengma.wav+1.wav+3.wav+5.wav+9.wav"
1.7 自定义语音模板的JSON请求示例
  •  POST /2013-12-26/Accounts/abcdefghijklmnopqrstuvwxyz012345/Calls/VoiceVerify?sig=
  •  C1F20E7A9733CE94F680C70A1DBABCDE 
  •  HTTP/1.1
  •  Host:192.168.0.1:8883
  •  content-length: 139
  •  Accept:application/json;
  •  Content-Type:application/json;charset=utf-8;
  •  Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE=
  •  
  •  {"appId":"abcdefghijklmnopqrstuvwxyz123456","verifyCode":"1a8d9u","playTimes":"2",
  •  "to":"01052821234","displayNum":"01052821234","welcomePrompt":"huanying.wav","maxCallTime":"60",
  •  "playVerifyCode":"yanzhengma.wav;1.wav;3.wav;5.wav;9.wav"}
  •             

  • 用户收听的效果是:"huanying.wav+yanzhengma.wav+1.wav+3.wav+5.wav+9.wav"
2 响应

  • 此步响应只表明客户的语音验证码请求发送成功,不表明运营商已经呼叫发送验证码成功。
2.1 响应包体
属性类型约束说明
statusCodeString必选请求状态码,取值000000(成功),可参考错误代码。
callSidString必选一个由32个字符组成的唯一电话标识符
dateCreatedString必选电话的创建时间
2.2 XML响应示例
  •   HTTP/1.1 200 OK 
  •  Content-Length: 641 

  •  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  •  <Response>
  •    <statusCode>000000</statusCode>
  •    <VoiceVerify>
  •      <callSid>a346467ca321c71dbd5e12f627123456</callSid>
  •      <dateCreated>2013-02-01 15:38:09</dateCreated>
  •    </VoiceVerify>
  •  </Response>
  •             
2.3 JSON响应示例
  •  HTTP/1.1 200 OK 
  •  Content-Length: 641 

  •  {"statusCode":"000000","VoiceVerify":{"dateCreated":"2013-02-01 15:53:06",
  •   "callSid":" ff8080813c373cab013c94be9fe300c5"}}
  •