如何使用AWS StartOutboundVoiceContact API实现带TTS的动态文本外呼?
实现AWS带动态TTS内容的外呼API调用(PHP)
我来帮你梳理下用AWS实现带动态文本转语音(TTS)的外呼API调用的具体方案,结合你提到的步骤,把关键细节补充完整:
整体流程概述
核心思路是通过PHP调用AWS Connect的StartOutboundVoiceContact API发起外呼请求,同时传递自定义的动态文本;然后由指定的AWS Connect联系流接收这个动态文本,通过“Play Prompt”模块将文本转为语音播放给接听者。
步骤1:用PHP调用StartOutboundVoiceContact API
首先确保你已经安装了AWS SDK for PHP v3(可以通过Composer安装:composer require aws/aws-sdk-php)。以下是完整的调用示例,重点是通过Attributes参数传递动态文本:
<?php require 'vendor/autoload.php'; use Aws\Connect\ConnectClient; use Aws\Exception\AwsException; // 初始化AWS Connect客户端 $client = new ConnectClient([ 'version' => '2017-08-08', 'region' => '你的AWS区域(比如us-east-1)', // 生产环境推荐用IAM角色/环境变量配置凭证,这里仅作示例 'credentials' => [ 'key' => '你的AWS Access Key', 'secret' => '你的AWS Secret Access Key', ] ]); try { // 动态文本内容,可根据业务逻辑自定义生成 $dynamicMessage = "您好,这是一条自定义语音通知,您的订单编号是12345,请及时处理。"; $result = $client->startOutboundVoiceContact([ 'ContactFlowId' => '你的联系流ID', // 对应步骤2中配置的联系流ID 'DestinationPhoneNumber' => '+8613xxxxxxxxx', // 目标号码需符合E.164标准格式 'InstanceId' => '你的AWS Connect实例ID', // 传递动态文本到联系流,键名可自定义,后续联系流需对应使用 'Attributes' => [ 'custom_tts_message' => $dynamicMessage ] ]); echo "外呼请求已发起,联系ID:" . $result['ContactId']; } catch (AwsException $e) { echo "调用失败:" . $e->getMessage(); } ?>
注意事项:
- 生产环境禁止硬编码凭证,优先使用IAM角色(如在EC2/EKS上运行)或环境变量配置
- 目标号码必须遵循E.164标准格式(带国家代码前缀,如+86开头的国内号码)
- 确保你的IAM实体(用户/角色)拥有
connect:StartOutboundVoiceContact权限
步骤2:配置AWS Connect联系流处理动态TTS播放
接下来需要在AWS Connect控制台中配置联系流,确保它能接收并播放你传递的动态文本:
- 登录AWS Connect控制台,进入你的实例,打开“联系流”页面
- 创建新联系流(或编辑现有联系流),添加Play Prompt模块
- 在Play Prompt模块设置中:
- 选择“Text-to-Speech (TTS)”作为播放源
- 点击“Insert attribute”按钮,选择“User defined”选项
- 输入你在API调用中使用的属性键名(比如
custom_tts_message),此时TTS内容会自动关联你传递的动态文本
- 按需添加其他模块(比如等待接听逻辑、异常处理分支),最后保存并发布联系流
额外优化建议:
- 设置 fallback 文本:如果
custom_tts_message属性未传递,可以配置默认TTS内容作为兜底 - 选择合适的TTS语音:在Play Prompt模块中可选择AWS Polly提供的不同语音类型,提升播放体验
内容的提问来源于stack exchange,提问作者Chitrang
相关产品推荐
相关产品推荐

