Как настроить исходящий вызов twilio taskrouter?

Я пытаюсь настроить исходящие вызовы через маршрутизатор задач Twilio. Я создаю задачи через PHP со всеми необходимыми атрибутами (инструкция, to, from, post_work_activity_sid), но созданная задача не устанавливает звонок между клиентом twilio и внешним номером телефона. Я надеялся, что задачи, созданные программой, создадут конференц-связь между работником (браузером) и внешним клиентом. Я все время получаю сообщение об ошибке, показанное ниже. У меня есть php назначения на моем сервере приложений, который отменяет очередь вызовов моим рабочим (клиентам браузера). В настоящее время входящие вызовы с внешнего номера на клиентов браузера через маршрутизатор задач работают должным образом. Однако исходящие вызовы создают задачу, и назначается резервирование, но Twilio не может удалить вызов из очереди работнику. Есть ли способ создать задачу для голосового вызова, чтобы задача создавалась с помощью команды Twiml Enqueue? Или есть лучший способ обработки исходящих вызовов с помощью Twilio taskrouter, чтобы вызовы успешно назначались рабочим с помощью клиента браузера?

Согласно этой теме: Могут ли исходящие вызовы выполняться через Twilio TaskRouter, Я попытался использовать вызов инструкции. Я также просмотрел документацию и еще одно сообщение о переполнении стека о URL-адресе обратного вызова назначения, но оно не ясно и не уверен, что я потенциально могу делать неправильно.

Сообщение об ошибке: инструкция удаления из очереди может быть выполнена только для задачи, созданной с помощью команды TwiML.

<?php
require_once('TwilioVendor/autoload.php'); // Loads the library
use Twilio\Rest\Client;
$sid    = "ACxxxxxxxxxxxxxxxxxxxxxxx";
$token  = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";
try{
$twilio = new Client($sid, $token);
$task = $twilio->taskrouter->v1- 
>workspaces("WSxxxxxxxxxxxxxxxxxxxxxxxxxxxx")->tasks- 
>create(array("attributes" => json_encode(array(
//"instruction"=>"accept",
//"instruction"=>"conference",
"instruction"=>"call",
"to"=> "client:Bob",
"from"=> "+61123456789",
"post_work_activity_sid"=> "WAxxxxxxxxxxxxxxxxxxxx"
)),
"workflowSid" => "WWxxxxxxxxxxxxxxxxxx"
)
);
}catch(Exception $e)
{
echo 'Caught exception: ',  $e->getMessage(), "\n";
}
print($task->sid);

**Assignment Callback code**   

<?php
$assignment_instruction = [
'instruction' => 'call','to'=> 'client:Bob',
'from' => '+61xxxxx','url'=>'CRM REST END POINT'
];

header('Content-Type: application/json');
echo json_encode($assignment_instruction);

**CRM REST END POINT TWIML**
<?php
require __DIR__ . '/vendor/autoload.php';
require_once 'TwilioVendor/autoload.php'; 
use Twilio\Twiml;
$reservationSid= $_REQUEST['rsid']
header('Content-Type: text/xml');
?>
<?xml version="1.0" encoding="UTF-8"?>

<Response>
<Say voice="woman">You will now be connected to the customer</Say>
<Dial>
<Queue reservationSid="<?$reservationSid?>"/>
</Dial>
</Response> 

person susmit koirala    schedule 31.07.2019    source источник
comment
Вы используете TaskRouter JS для представления агента? Или у вас настроен URL-адрес обратного вызова назначения?   -  person philnash    schedule 02.08.2019
comment
@philnash У меня есть URL обратного вызова назначения. Я могу создать задачу, используя приведенный ниже код, и мой URL-адрес обратного вызова ставит в очередь вызов моего клиента браузера. Однако мне не хватает того, как связать этот вызов браузера с внешним номером? $ twilioClient = новый клиент ($ sid, $ token); $ task = $ twilioClient- ›taskrouter-› v1- ›рабочие области (WSbxxxxxxx) -› tasks - ›create (array (.... URL обратного вызова‹? php $ assignment_instruction = ['command' = ›'call', ' to '= ›' client: Bob ',' from '=›' xxTwilioNumberxx ',' url '= ›' https: // '];   -  person susmit koirala    schedule 02.08.2019
comment
Не могли бы вы отредактировать свой вопрос и включить код, который вы используете для ответа на веб-перехватчик обратного вызова назначения, пожалуйста?   -  person philnash    schedule 02.08.2019
comment
@philnash Я обновил код в исходном вопросе. Жду ваших комментариев, заранее спасибо.   -  person susmit koirala    schedule 05.08.2019


Ответы (1)


Проповедник разработчиков Twilio здесь.

TaskRouter будет генерировать вызовы вашим работникам только тогда, когда задача создается <Enqueue> TwiML глагол. Создание задачи с помощью REST API, даже если вы добавляете атрибуты вызова, не будет генерировать вызов при использовании инструкции dequeue или call.

Вместо этого вам нужно будет управлять задачей и звонить самому себе. Когда ваш работник отправляет бронирование и принимает его, вам следует использовать REST API для создания позвоните, подключите его к клиенту вашего браузера, а затем позвоните конечному пользователю.

person philnash    schedule 09.08.2019
comment
Огромное спасибо!! Решение сработало. Хотя управлять всеми аспектами резервирования, вызова и завершения вызовов в коде немного громоздко, все работает плавно. - person susmit koirala; 13.08.2019
comment
@susmitkoirala Не могли бы вы поделиться со мной своим адресом электронной почты? Возможно, мне придется нанять тебя. Пожалуйста, подойди ко мне в скайпе umair.hamid91 - person Umair Hamid; 29.05.2021
comment
Привет, @Umair Hamid, ты можешь написать мне на [email protected] - person susmit koirala; 31.05.2021