我一直在遵循文档,为twilio设置新的taskrouter。 问题是拒绝预订时出现一些奇怪的错误。
无法更新记录:预留未处于预期状态[pending],无法更新为[rejected]
但是在网站上的Taskrouter中,它表示它处于待处理状态。
我这样获取预订,workerAid和ReservationSid都是通过ajax发布的。
$reservation = $client->taskrouter
->workspaces($config['workspaceSid'])
->workers($workerSid)
->reservations($reservationSid)
->fetch();
当我回显$reservation->reservationStatus
时,它表示未决。
我已经尝试了文档中的两个版本来拒绝保留:
$new_reservation = $client->taskrouter
->workspaces($reservation->workspaceSid)
->tasks($reservation->task->sid)
->reservations($reservationSid)
->update(
array('reservationStatus' => 'rejected')
);
$new_reservation = $client->taskrouter
->workspaces($reservation->workspaceSid)
->workers($reservation->workerSid)
->reservations($reservation->sid)
->update(
array('reservationStatus' => 'rejected')
);
我使用它来将Taskrouter的呼叫分配给一个代理,其中,参数是Twilio发送给我的ngrok的请求中的所有内容:
$reservation = $client->taskrouter
->workspaces($params['WorkspaceSid'])
->tasks($params['TaskSid'])
->reservations($params['ReservationSid'])
->fetch();
$reservation->update(
array(
'instruction' => 'conference',
'endConferenceOnExit' => true,
'startConferenceOnEnter' => true,
'conferenceRecord' => 'record-from-start',
'beep' => 'onExit'
)
);
return $app->json($reservation);
我正在将twilio PHP rest库5.21.4与php 7.1.20一起使用。
这里有点茫然,我做错了。
我为我的问题创建了一个临时解决方案。我更新任务,而不是像这样的保留:
$client->taskrouter->v1->workspaces($twilio->getWorkspaceId())
->tasks($reservation['task']['sid'])
->update(array(
'Attributes' => $new_attributes,
"assignmentStatus" => "canceled",
"reason" => "agent rejected the call"
)
);
$ new_attributes是一个json编码的数组,带有workerSids拒绝了调用。我在Taskrouter的工作流程中添加了worker.sid NOT IN task.rejectedWorkers
。任务更新后,JS会执行:
Twilio.Device.disconnectAll();
setAgentStatus('Offline');
location.reload();
因此,该代理处于脱机状态,并且客户端正在响铃。这不是完美的,但我现在可以工作。