步骤 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'))