如何解决系统发起的 IVR 呼叫以捕获语音响应
我需要在 PHP 中创建一个 IVR 应用程序,其中 syetm 启动出站呼叫并捕获来自用户的语音响应。
我该怎么做?
voice.xml 内容
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/complex_gather.xml -->
<Response>
</Response>
file_put_contents('voice.txt',$_SERVER['QUERY_STRING']);
主代码
<?PHP
require_once 'vendor/autoload.PHP';
use Twilio\Rest\Client;
use Twilio\TwiML\VoiceResponse;
// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
$sid = "xxx";
$token = "xxx";
$twilio = new Client($sid,$token);
$call = $twilio->calls
->create("+1310XXXXXXX",// to
"+15676777774",// from
[
"method" => "GET","statusCallbackMethod" => "POST","url" => "http://xxxx.com/voice.xml"
]
);
$response = new VoiceResponse();
$gather = $response->gather(['action' => '/completed.PHP','method' => 'GET','input'=>'speech','timeout'=>3,''=>'true','speech_model'=>'phone']);
$gather->say('Enter something,or not');
echo $response;
解决方法
这里是 Twilio 开发者布道者。
当您 create a call through the Twilio API 时,正如您所做的那样,您传递了一个 URL 参数。
当呼叫连接时,Twilio 将向该 URL 发出 webhook (HTTP) request 并按照以 TwiML 形式返回的说明进行操作。
目前您的 /voice.xml
端点返回一个空的 <Response/>
,这将导致调用挂断,因为没有 TwiML 可以执行。
您应该返回您在脚本末尾生成的 TwiML,而不是从 <Response/>
返回一个空的 /voice.xml
。
所以,也许 voice.xml
应该是 voice.php
并且看起来有点像这样:
<?php
require_once 'vendor/autoload.php';
use Twilio\Rest\Client;
use Twilio\TwiML\VoiceResponse;
header('Content-Type: application/xml');
$response = new VoiceResponse();
$gather = $response->gather(['action' => '/completed.php','method' => 'GET','input'=>'speech','timeout'=>3,''=>'true','speech_model'=>'phone']);
$gather->say('Enter something,or not');
echo $response;
您还应该从 completed.php
端点返回 TwiML。
<?php
file_put_contents('voice.txt',$_SERVER['QUERY_STRING']);
header('Content-Type: application/xml');
?>
<Response/>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。