本文為您介紹文本轉語音外呼API使用流程。
前提條件
開通語音服務。具體操作。請參見開通服務。
獲取AccessKey。具體操作,請參見獲取AccessKey。
購買號碼。具體操作,請參見真實號管理。
創建文本轉語音模板或上傳語音文件。具體操作,請參見創建文本轉語音模板和通過控制臺上傳語音文件。
入參列表
參數名稱 | 參數類型 | 必填與否 | 樣例取值 | 參數說明 |
CalledShowNumber | String | 必須 | 400111**** | 被叫顯號。 |
CalledNumber | String | 必須 | 1390000**** | 被叫號碼。 |
TtsCode | String | 必須 | TTS_10001 | TTS文本模板Code。 |
TtsParam | String | 可選 | {"AckNum":"123456"} | 替換TTS模板中變量的JSON串。 |
Volume | Integer | 可選 | 100 | 音量。 |
PlayTimes | Integer | 可選 | 3 | 播放次數(最多3次)。 |
OutId | String | 可選 | abcdefgh | 預留給調用方使用的ID。最終會通過在回執消息中將此ID帶回給調用方。 |
出參列表
出參名稱 | 出參類型 | 樣例取值 | 參數說明 |
RequestId | String | 8906582E-6722 | 請求ID。 |
Code | String | OK | 狀態碼。返回OK代表請求成功,其他錯誤碼詳見錯誤碼列表。 |
Message | String | 請求成功 | 狀態碼的描述。 |
CallId | String | 134523^4351232 | 調用的回執ID。 |
技術對接步驟
下載SDK工具包
SDK工具包中一共包含了2個類庫,一個aliyun-java-sdk-core包,另外一個是alicom-dyvms-api包,將這兩個包執行mvn package命令或者mvn deploy命令打包出相應的jar包,添加到工程類庫中依賴使用。
SDK&DEMO下載地址,請參見SDK&DEMO下載。
編寫樣例程序
說明調用接口前,需配置環境變量,通過環境變量讀取訪問憑證。AccessKey ID和AccessKey Secret的環境變量名:VMS_AK_ENV 、VMS_SK_ENV。配置詳情請參見配置訪問憑證。
//設置訪問超時時間 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); //云通信產品-語音API服務產品名稱(產品名固定,無需修改) final String product = "Dyvmsapi"; //產品域名(接口地址固定,無需修改) final String domain = "dyvmsapi.aliyuncs.com"; // 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。 // 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。 // 本示例以將AccessKey ID和AccessKey Secret保存在環境變量為例說明。您也可以根據業務需要,保存到配置文件里。 String accessKeyId = System.getenv("VMS_AK_ENV"); String accessKeySecret = System.getenv("VMS_SK_ENV"); //初始化acsClient 暫時不支持多region IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); SingleCallByTtsRequest request = new SingleCallByTtsRequest(); //必填-被叫顯號,可在語音控制臺中找到所購買的顯號 request.setCalledShowNumber("0256000****"); //必填-被叫號碼 request.setCalledNumber("150000****"); //必填-Tts模板ID request.setTtsCode("TTS_000000"); //可選-當模板中存在變量時需要設置此值 request.setTtsParam("{\"code\":\"123456\"}"); //可選-音量取值范圍 0--200 request.setVolume(100); //可選-播放次數 request.setPlayTimes(3); //可選-外部擴展字段,此ID將在回執消息中帶回給調用方 request.setOutId("yourOutId"); //hint 此處可能會拋出異常,注意catch SingleCallByTtsResponse singleCallByTtsResponse = acsClient.getAcsResponse(request); if(singleCallByTtsResponse.getCode() != null && singleCallByTtsResponse.getCode().equals("OK")) { //請求成功 System.out.println("語音文本外呼---------------"); System.out.println("RequestId=" + singleCallByTtsResponse.getRequestId()); System.out.println("Code=" + singleCallByTtsResponse.getCode()); System.out.println("Message=" + singleCallByTtsResponse.getMessage()); System.out.println("CallId=" + singleCallByTtsResponse.getCallId()); }
錯誤碼列表
Code | 描述 |
OK | 請求成功 |
isp.RAM_PERMISSION_DENY | RAM權限DENY |
isv.OUT_OF_SERVICE | 業務停機 |
isv.PRODUCT_UN_SUBSCRIPT | 未開通云通信產品的阿里云客戶 |
isv.OUT_OF_SERVICE | 業務停機 |
isv.PRODUCT_UNSUBSCRIBE | 產品未開通 |
isv.ACCOUNT_NOT_EXISTS | 賬戶不存在 |
isv.ACCOUNT_ABNORMAL | 賬戶異常 |
isv.TTS_TEMPLATE_ILLEGAL | TTS模板不合法 |
isv.DISPLAY_NUMBER_ILLEGAL | 號顯不合法 |
isv.TEMPLATE_MISSING_PARAMETERS | 文本轉語音模板參數缺失 |
isv.BLACK_KEY_CONTROL_LIMIT | 模板變量中存在黑名單關鍵字 |
isv.INVALID_PARAMETERS | 參數異常 |
isv.PARAM_NOT_SUPPORT_URL | 變量不支持URL參數 |
isp.SYSTEM_ERROR | 系統錯誤 |
isv.MOBILE_NUMBER_ILLEGAL | 號碼格式非法 |
isv.BUSINESS_LIMIT_CONTROL | 觸發流控 |
isv.PARAM_LENGTH_LIMIT | 參數長度受限 |