无法拒绝保留

时间:2018-09-27 13:00:48

标签: twilio twilio-api twilio-php

我一直在遵循文档,为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();

因此,该代理处于脱机状态,并且客户端正在响铃。这不是完美的,但我现在可以工作。

0 个答案:

没有答案