Разработчик Twilio здесь.
Если <Dial>
не может подключиться, то он подключится к своему атрибуту action
, передав DialCallStatus
в качестве параметра. Вы можете ответить на веб-крючок с большим количеством TwiML, чтобы продолжить вызов.
Итак, ваш первоначальный PHP должен выглядеть так, с атрибутом действия, добавленным к <Dial>
:
<?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;
Дайте мне знать, поможет ли это вообще.