如何在客户端之间转移twilio入站呼叫

时间:2018-10-26 16:08:18

标签: twilio

我正在努力实现在两个客户端之间转移入站呼叫的实现。 Twilio教程可能会提供尽可能多的信息,但是我无法理解将入站客户呼叫从一个客户端转移到另一个客户端所需的操作。

这是处理入站呼叫的控制器方法的简化示例。

public function inbound(): Twiml
{
    $this->twiml->dial()->client('publishers');

    return $this->twiml;
}

效果很好。 但是麻烦出现在座席按下“转接”时-呼叫者以某种方式断开与呼叫的连接,并且两个客户端彼此连接。

这是一种更新当前通话的方法。

public function redirect(Request $request)
{
    $input = $request->all();
    $sid    = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    $token  = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    $client = new Client($sid, $token);

    $client
        ->calls($input['CallSid'])
        ->update(array(
                "method" => "POST",
                "url" => "https://some-api.ngrok.io/api/connect"
            )
        );
}

这是为Twilio返回新的TwiML指令的方法

public function connect(): Twiml
{
    $this->twiml->dial()->client('collectors');

    return $this->twiml;
}

我在做什么错?不胜感激。

1 个答案:

答案 0 :(得分:0)

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

在Twilio呼叫中,每个呼叫都有两条腿,每条腿都在Twilio和电话/客户端上的人之间。

更新呼叫时,将发送座席呼叫的callSid,然后使用新的TwiML更新他们的呼叫,从而连接两个座席。

相反,由于呼叫是由传入呼叫者发起的,因此您需要找到父呼叫SID。您可以通过fetching your current call from the API并使用呼叫的parent_call_sid属性来更新原始来电。

尝试这样的事情:

public function redirect(Request $request)
{
    $input = $request->all();
    $sid    = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    $token  = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    $client = new Client($sid, $token);

    $call = $client
        ->calls($input['CallSid'])
        ->fetch()

    $client
        ->calls($call->parentCallSid)
        ->update(array(
                "method" => "POST",
                "url" => "https://some-api.ngrok.io/api/connect"
            )
        );
}