步驟 1 創建阿里雲賬號,包括語音服務里的企業實名
為了訪問語音服務,您需要有一個阿里雲賬號。如果沒有,可首先按照如下步驟創建阿里雲賬號:
- 訪問阿里雲 官方網站,單擊頁面上的 免費注冊 按鈕。
- 按照屏幕提示完成注冊流程並進行企業實名認證語音服務只支持企業實名認證用戶使用。為了更好地使用阿里雲服務,建議盡快完成實名認證,否則部分阿里雲服務將無法使用。具體實名認證流程,請參考 這里
步驟 2 獲取阿里雲訪問密鑰
需要設置為AliyunDyvmsFullAccess,管理語音服務(VMS)的權限。
步驟 3 在控制台完成號碼與模板的申請,獲得調用接口必備的參數
在“語音號碼”頁面完成資質的申請,號碼的購買
在“文本轉語音模板”頁面完成模板申請,或,在“語音通知文件”頁面完成文件上傳
入參列表
參數名稱 | 參數類型 | 必填與否 | 樣例取值 | 參數說明 |
---|---|---|---|---|
CalledShowNumber | String | 必須 | 4001112222 | 被叫顯號 |
CalledNumber | String | 必須 | 13700000000 | 被叫號碼 |
TtsCode | String | 必須 | TTS_10001 | TTS文本模板Code |
TtsParam | String | 可選 | {“AckNum”:”123456”} | 替換TTS模板中變量的JSON串 |
OutId | String | 可選 | abcdefgh | 預留給調用方使用的ID, 最終會通過在回執消息中將此ID帶回給調用方 |
出參列表
出參名稱 | 出參類型 | 樣例取值 | 參數說明 |
---|---|---|---|
RequestId | String | 8906582E-6722 | 請求ID |
Code | String | OK | 狀態碼-返回OK代表請求成功,其他錯誤碼詳見錯誤碼列表 |
Message | String | 請求成功 | 狀態碼的描述 |
CallId | String | 134523^4351232 | 調用的回執ID |
下載的SDK和DEMO包里,
語音產品相關的SDK及DEMO程序
文件清單:
- api_demo(語音服務API接口調用DEMO工程)
- api_sdk(語音服務API接口依賴的SDK)
- msg_demo(語音回執消息的DEMO)
- msg_sdk(語音回執消息的SDK)
對於我們來說,只要用到api_demo文件夾即可。里面的aliyun-python-sdk-core也沒用,這個是給python2安裝sdk用的;
對於我們python3來說,直接安裝核心庫pip install aliyun-python-sdk-core-v3即可
我們實際只使用到
文本轉語音外呼API(SingleCallByTts)----TTS方式
代碼如下:
#!/usr/bin/env python #-*- coding:utf-8 -*- #Author:lzd # import sys import importlib,sys from aliyunsdkdyvmsapi.request.v20170525 import SingleCallByTtsRequest # from aliyunsdkdyvmsapi.request.v20170525 import SingleCallByVoiceRequest from aliyunsdkcore.client import AcsClient import uuid from aliyunsdkcore.profile import region_provider """ 語音業務調用接口示例,版本號:v20170525 Created on 2017-06-12 @author: seven """ # reload(sys) importlib.reload(sys) # sys.setdefaultencoding('utf8') # 注意:不要更改 REGION = "cn-hangzhou" PRODUCT_NAME = "Dyvmsapi" DOMAIN = "dyvmsapi.aliyuncs.com" # ACCESS_KEY_ID/ACCESS_KEY_SECRET 根據實際申請的賬號信息進行替換 ACCESS_KEY_ID = "xxxxxxxxxxxxxx" ACCESS_KEY_SECRET = "xxxxxxxxxxxxxxxx" acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION) region_provider.add_endpoint(PRODUCT_NAME,REGION,DOMAIN) def tts_call(business_id, called_number, called_show_number, tts_code, tts_param=None): ttsRequest = SingleCallByTtsRequest.SingleCallByTtsRequest() # 申請的語音通知tts模板編碼,必填 ttsRequest.set_TtsCode(tts_code) # 設置業務請求流水號,必填。后端服務基於此標識區分是否重復請求的判斷 ttsRequest.set_OutId(business_id) # 語音通知的被叫號碼,必填。 ttsRequest.set_CalledNumber(called_number) # 語音通知顯示號碼,必填。 ttsRequest.set_CalledShowNumber(called_show_number) # tts模板變量參數 if tts_param is not None: ttsRequest.set_TtsParam(tts_param) # 調用tts文本呼叫接口,返回json ttsResponse = acs_client.do_action_with_exception(ttsRequest) # TODO 業務處理 return ttsResponse __name__ = 'tts' if __name__ == 'tts': __business_id = uuid.uuid1() print(__business_id) params = "{\"weizhi\":\"杭州機房\",\"name\":\"測試服務器\",\"title\":\"測試\"}" print((tts_call(__business_id, "13900000000", "0125456655", "TTS_4564654", params)).decode(encoding='utf-8'))