【问题标题】:How to set up twilio taskrouter outbound call?如何设置 twilio taskrouter 呼出电话?
【发布时间】:2019-12-09 07:26:24
【问题描述】:

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

根据这个线程:Can outbound calls be made through Twilio TaskRouter,我尝试使用指令调用。我还阅读了有关赋值回调 URL 的文档和另一篇堆栈溢出帖子,但不清楚并且不确定我可能做错了什么。

错误信息: dequeue 指令只能在使用 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> 

【问题讨论】:

  • 您是否将TaskRouter JS 用于您的代理视图?或者您是否设置了分配回调 URL?
  • @philnash 我有一个分配回调 URL。我可以使用下面的代码创建一个任务,并且我的回调 URL 将对我的浏览器客户端的调用进行排队。但是,我缺少的部分是如何将此浏览器呼叫桥接到外部号码? $twilioClient = 新客户端($sid, $token); $task = $twilioClient->taskrouter->v1->workspaces("WSbxxxxxxx") ->tasks ->create(array(.... 回调 URL 'call' ,'to'=> 'client:Bob', 'from' => 'xxTwilioNumberxx','url'=>'https://' ];
  • 能否编辑您的问题并包含您用于响应您的作业回调网络挂钩的代码?
  • @philnash 我现在更新了原始问题中的代码。期待您的 cmets,提前致谢。

标签: php twilio twilio-api outbound


【解决方案1】:

这里是 Twilio 开发者宣传员。

TaskRouter 只会在&lt;Enqueue&gt; TwiML 动词创建任务时生成对您的工作人员的调用。使用 REST API 创建任务,即使添加调用属性,使用dequeue 或call 指令时也不会生成调用。

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

【讨论】:

  • 非常感谢!!解决方案奏效了。虽然,在代码中管理预订、调用和结束调用的各个方面有点麻烦,但一切都很顺利。
  • @susmitkoirala 你能和我分享你的电子邮件吗?我可能需要雇用你。请通过 Skype umair.hamid91 联系我
  • 嗨@Umair Hamid,您可以通过susmit.koirala@gmail.com 与我联系
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多