Laravel 使用TwilioSDK,连续调用数字数组,直到有人拿起

Laravel 使用TwilioSDK,连续调用数字数组,直到有人拿起,laravel,twilio,twilio-php,Laravel,Twilio,Twilio Php,我正在构建一个呼叫中心功能,当接收到一个入站呼叫时,它通过一个代理电话号码列表(由一段单独的代码确定)进行拨号,在第一个号码连接时,我们中断代码并运行一个单独的功能,将代理连接到客户正在等待的队列中。这是在Laravel5.7中构建的,因为还有其他一些未来的仪表板正在创建中,我想把它放在团队将要使用的代码中 最初的客户排队并将代理连接到呼叫似乎正在工作 我正在寻找有关以下代码的帮助: public function findAgentByPriority($agentCount) { $

我正在构建一个呼叫中心功能,当接收到一个入站呼叫时,它通过一个代理电话号码列表(由一段单独的代码确定)进行拨号,在第一个号码连接时,我们中断代码并运行一个单独的功能,将代理连接到客户正在等待的队列中。这是在Laravel5.7中构建的,因为还有其他一些未来的仪表板正在创建中,我想把它放在团队将要使用的代码中

最初的客户排队并将代理连接到呼叫似乎正在工作

我正在寻找有关以下代码的帮助:

public function findAgentByPriority($agentCount) {
    $twilio = new Client(env('TWILIO_SID'),env('TWILIO_SECRET'));

    // test numbers
    $agentArr[] = ["agent" => env('TWILIO_TEST_AGENT1')];
    $agentArr[] = ["agent" => env('TWILIO_TEST_AGENT2')];
    // $agentArr = json_encode($agentArr);

    //build the array by querying /api/v1/agile/users
    $numbers = $agentArr;

    // this part of the code will call one person after the next
    // call the next number
    if($agentCount == NULL){
        $agentCount = count($numbers);
        echo "in if<br>";
        $call = $twilio->calls
                       ->create(
                            $numbers[0],
                            env('TWILIO_MAIN_NUMBER'),
                            [
                                "url" => "https://{$_SERVER['HTTP_HOST']}/ivr/connect-agent",
                                "statusCallback" => "https://{$_SERVER['HTTP_HOST']}/ivr/next-agent?c=$agentCount",
                                "timeout" => 20
                            ]
                        );
    }elseif($agentCount > 0){
    // when we run out of numbers move out of the loop
        $agentCount = 0;

    }else{
    // when we run out of numbers move out of the loop

    }


    // once there are no more agents that were logged in today we
    // will move to dial cell phone fallback for 40s
    // and last we'll call on the voicemail function       

}
当我们读到“没有应答”并拨打下一个电话号码时,我想基本上让“状态回调”尝试一种新方法。我不知道如何通过回调传递变量来跟踪剩下的数字。将它设置到数据库中会更好吗?比如查找仍然存在记录的任何剩余阵列ID并向下拨下下一个?我可以在第一次函数调用时在数据库中建立数组及其参数

我可以通过构建不同的数组并一次只遍历一组数组来避免两个人同时调用并弄乱代码的问题

感谢您的指导

更新 PHP的服务器导致无限循环。将测试转移到我的流浪者箱解决了这个问题,所以现在我可以从同一台服务器调用Laravel路由,而不会出现问题。这与通过回调传递数组的答案一起帮助我解决了这个问题。更新代码以供参考


下面这个问题帮助我解决了第二个请求被卡住的问题:

这里是Twilio开发者福音传道者

您可以将当前号码作为查询参数添加到
statusCallback
URL。这样,当调用回调时,您可以在号码列表中找到该号码,然后继续下一个号码。这样,您就不需要在数据库中存储任何内容


让我知道这是否有帮助。

这里是Twilio开发者福音传道者

您可以将当前号码作为查询参数添加到
statusCallback
URL。这样,当调用回调时,您可以在号码列表中找到该号码,然后继续下一个号码。这样,您就不需要在数据库中存储任何内容

让我知道这是否有帮助

    public function connectAgent() {
    $response = new Twiml\VoiceResponse;
    $dequeue = $response->dial('');

    $dequeue->queue('main');
}