使用 Twilio SDK,连续呼叫号码数组直到有人接听
Using Twilio SDK, Call Array of Numbers Consecutively Until Someone Picks Up
我正在构建一个呼叫中心功能,当接到呼入电话时,它会通过代理的 phone 号码列表(由单独的代码段确定)和第一个号码进行拨号connection 我们打破了代码和 运行 一个单独的函数来将代理连接到客户正在等待的队列中。这是在 Laravel 5.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
}
这里是连接代理路由调用的 connectAgent 函数。
public function connectAgent() {
$response = new Twiml\VoiceResponse;
$dequeue = $response->dial('');
$dequeue->queue('main');
}
当我们读到有 "no-answer" 并调用下一个号码时,我正在考虑基本上让 "statusCallback" 射击到一个新方法。我不知道如何通过回调传递变量来跟踪剩下的数字。将它设置到数据库中是否会更好,并做一些事情,比如查找记录仍然存在的任何剩余 arrayIDs 并拨下下一个?我可以在第一次函数调用时在数据库中建立数组及其参数。
我可以通过构建不同的 arrayID 并且一次只处理一组来避免两个人同时调用并弄乱代码的问题。
感谢任何指导!
更新
PHP 的服务器导致无限循环。将测试移至我的 vagrant box 已经解决了这个问题,所以现在我可以毫无问题地从同一台服务器调用 Laravel 路由。这连同通过回调传递数组的答案帮助我解决了这个问题。更新代码以供参考。
以下问题帮助我解决了第二个请求卡住的问题:Calling route from same server causes an infinite loop
此处为 Twilio 开发人员布道师。
您可以将当前号码作为查询参数添加到 statusCallback
URL。这样,当回调被调用时,您可以在号码列表中找到该号码,然后转到下一个号码。这样你就不需要在数据库中存储任何东西。
如果有帮助请告诉我。
我正在构建一个呼叫中心功能,当接到呼入电话时,它会通过代理的 phone 号码列表(由单独的代码段确定)和第一个号码进行拨号connection 我们打破了代码和 运行 一个单独的函数来将代理连接到客户正在等待的队列中。这是在 Laravel 5.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
}
这里是连接代理路由调用的 connectAgent 函数。
public function connectAgent() {
$response = new Twiml\VoiceResponse;
$dequeue = $response->dial('');
$dequeue->queue('main');
}
当我们读到有 "no-answer" 并调用下一个号码时,我正在考虑基本上让 "statusCallback" 射击到一个新方法。我不知道如何通过回调传递变量来跟踪剩下的数字。将它设置到数据库中是否会更好,并做一些事情,比如查找记录仍然存在的任何剩余 arrayIDs 并拨下下一个?我可以在第一次函数调用时在数据库中建立数组及其参数。
我可以通过构建不同的 arrayID 并且一次只处理一组来避免两个人同时调用并弄乱代码的问题。
感谢任何指导!
更新 PHP 的服务器导致无限循环。将测试移至我的 vagrant box 已经解决了这个问题,所以现在我可以毫无问题地从同一台服务器调用 Laravel 路由。这连同通过回调传递数组的答案帮助我解决了这个问题。更新代码以供参考。
以下问题帮助我解决了第二个请求卡住的问题:Calling route from same server causes an infinite loop
此处为 Twilio 开发人员布道师。
您可以将当前号码作为查询参数添加到 statusCallback
URL。这样,当回调被调用时,您可以在号码列表中找到该号码,然后转到下一个号码。这样你就不需要在数据库中存储任何东西。
如果有帮助请告诉我。