防止客户端未连接时呼叫断开
Prevent call from disconnected when client is not connected
我正在尝试在 Twilio 中设置一些 phone 数字。当连接特定客户端时,我可以很好地调用它们并正常连接(我使用唯一的 URL 来定义在调用特定号码时应拨打哪个客户端...像这样:https://example.io/my/path/to/the/twiml/?attribute=CLIENT_IDENTIFIER)
当特定客户端未连接到我的应用程序时,就会出现问题。发生这种情况时,会说出自动消息,但随后电话会断开。我希望它像普通的 phone 一样响起,直到它到达语音信箱。这就是我遇到的问题。这是我的 PHP:
<?php
declare(strict_types=1);
use Twilio\TwiML\VoiceResponse;
require_once '../../../vendor/autoload.php';
$response = new VoiceResponse();
$response->say('This call may be monitored for quality assurance',
['voice' => 'woman', 'language' => 'us-EN']);
$dial = $response->dial('', [
'record' => 'record-from-ringing-dual',
'recordingStatusCallback' => 'https://example.com/my/callback/'
]);
$dial->client($_GET['CLIENT_IDENTIFIER'], [
'statusCallbackEvent' => 'completed',
'statusCallback' => 'https://example.com/my/callback/'
]);
echo $response;
我的状态回调没有被调用,所以我知道调用没有完成。所以我的问题真的是这样的:
如何让 Twilio 在无法连接到我传递给它的客户端时不立即断开连接?
twilio 的自动驾驶仪中的 listen action 似乎解决了您正在寻找的等待时间。
这里是 Twilio 开发人员布道者。
如果 <Dial>
无法连接,那么它将对其 action
attribute 创建一个 webhook,并将 DialCallStatus
作为参数传递。您可以使用更多 TwiML 响应 webhook 以继续调用。
因此,您的初始 PHP 应该如下所示,向 <Dial>
添加了 action 属性:
<?php
declare(strict_types=1);
use Twilio\TwiML\VoiceResponse;
require_once '../../../vendor/autoload.php';
$response = new VoiceResponse();
$response->say('This call may be monitored for quality assurance',
['voice' => 'woman', 'language' => 'us-EN']);
$dial = $response->dial('', [
'record' => 'record-from-ringing-dual',
'recordingStatusCallback' => 'https://example.com/my/callback/',
'action' => 'https://example.com/my/action/'
]);
$dial->client($_GET['CLIENT_IDENTIFIER'], [
'statusCallbackEvent' => 'completed',
'statusCallback' => 'https://example.com/my/callback/'
]);
echo $response;
然后 /my/action/
可以做这样的事情:
<?php
declare(strict_types=1);
use Twilio\TwiML\VoiceResponse;
require_once '../../../vendor/autoload.php';
$response = new VoiceResponse();
if ($_POST['DialCallStatus'] == 'completed') {
// the call succeeded, just end it
$response->hangup();
} else {
$response->say('The person you are calling cannot be reached right now. Please leave a message',
['voice' => 'woman', 'language' => 'us-EN']);
$response->record([
'action' => 'https://example.com/my/callback/'
]);
}
echo $response;
如果有帮助请告诉我。
我正在尝试在 Twilio 中设置一些 phone 数字。当连接特定客户端时,我可以很好地调用它们并正常连接(我使用唯一的 URL 来定义在调用特定号码时应拨打哪个客户端...像这样:https://example.io/my/path/to/the/twiml/?attribute=CLIENT_IDENTIFIER)
当特定客户端未连接到我的应用程序时,就会出现问题。发生这种情况时,会说出自动消息,但随后电话会断开。我希望它像普通的 phone 一样响起,直到它到达语音信箱。这就是我遇到的问题。这是我的 PHP:
<?php
declare(strict_types=1);
use Twilio\TwiML\VoiceResponse;
require_once '../../../vendor/autoload.php';
$response = new VoiceResponse();
$response->say('This call may be monitored for quality assurance',
['voice' => 'woman', 'language' => 'us-EN']);
$dial = $response->dial('', [
'record' => 'record-from-ringing-dual',
'recordingStatusCallback' => 'https://example.com/my/callback/'
]);
$dial->client($_GET['CLIENT_IDENTIFIER'], [
'statusCallbackEvent' => 'completed',
'statusCallback' => 'https://example.com/my/callback/'
]);
echo $response;
我的状态回调没有被调用,所以我知道调用没有完成。所以我的问题真的是这样的:
如何让 Twilio 在无法连接到我传递给它的客户端时不立即断开连接?
twilio 的自动驾驶仪中的 listen action 似乎解决了您正在寻找的等待时间。
这里是 Twilio 开发人员布道者。
如果 <Dial>
无法连接,那么它将对其 action
attribute 创建一个 webhook,并将 DialCallStatus
作为参数传递。您可以使用更多 TwiML 响应 webhook 以继续调用。
因此,您的初始 PHP 应该如下所示,向 <Dial>
添加了 action 属性:
<?php
declare(strict_types=1);
use Twilio\TwiML\VoiceResponse;
require_once '../../../vendor/autoload.php';
$response = new VoiceResponse();
$response->say('This call may be monitored for quality assurance',
['voice' => 'woman', 'language' => 'us-EN']);
$dial = $response->dial('', [
'record' => 'record-from-ringing-dual',
'recordingStatusCallback' => 'https://example.com/my/callback/',
'action' => 'https://example.com/my/action/'
]);
$dial->client($_GET['CLIENT_IDENTIFIER'], [
'statusCallbackEvent' => 'completed',
'statusCallback' => 'https://example.com/my/callback/'
]);
echo $response;
然后 /my/action/
可以做这样的事情:
<?php
declare(strict_types=1);
use Twilio\TwiML\VoiceResponse;
require_once '../../../vendor/autoload.php';
$response = new VoiceResponse();
if ($_POST['DialCallStatus'] == 'completed') {
// the call succeeded, just end it
$response->hangup();
} else {
$response->say('The person you are calling cannot be reached right now. Please leave a message',
['voice' => 'woman', 'language' => 'us-EN']);
$response->record([
'action' => 'https://example.com/my/callback/'
]);
}
echo $response;
如果有帮助请告诉我。