如何设置twilio taskrouter出站呼叫?

时间:2019-07-31 17:53:59

标签: php twilio twilio-api outbound

我正在尝试通过Twilio任务路由器建立拨出电话。我正在通过具有所有必要属性的PHP创建任务(指令,to,from,post_work_activity_sid),但是创建的任务并未在twilio客户端与外部电话号码之间建立呼叫。我希望程序创建的任务将在worker(浏览器)和外部客户端之间建立电话会议。我不断收到如下所示的错误。我在我的应用程序服务器上有一个分配php,该队列使对我的工作程序(浏览器客户端)的调用出队。当前,通过任务路由器从外部号码到浏览器客户端的传入呼叫按预期工作。但是,出站呼叫会生成任务并分配了保留,但Twilio无法将呼叫出队给工作人员。 有没有一种方法可以创建语音呼叫任务,以便使用Twiml Enqueue动词创建任务?还是有使用Twilio任务路由器处理呼出电话的更好方法,以便使用浏览器客户端将呼叫成功分配给工作人员?

根据以下线程:Can outbound calls be made through 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> 

1 个答案:

答案 0 :(得分:0)

这里是Twilio开发人员的传播者。

仅当<Enqueue> TwiML动词创建任务时,TaskRouter才会生成对您的工作程序的调用。即使您添加了调用属性,使用REST API创建任务也不会在使用dequeuecall指令时生成调用。

相反,您将需要管理任务并给自己打电话。当您的工作人员收到预定并接受之后,您应该use the REST API to create the call,将其连接到浏览器客户端,然后拨出到最终用户。