我使用mod_callcenter
设置了Freeswitch和简单的热线,它运行正常。我很好奇是否可以通过将mod_sms
与mod_callcenter
合并来设置文字聊天热线。也许应该使用不同的模块?
答案 0 :(得分:0)
我不确定,但这可能会提供一些让您前进的见解:http://www.thenoccave.com/2012/03/05/freeswitch-callcenter-sms-alerts/
编写的PHP代码如下:
#!/usr/bin/php
<?php
$GLOBALS['server'] = 'localhost';
$GLOBALS['port'] = '8021';
$GLOBALS['password'] = 'ClueCon';
$GLOBALS['clickatellapi_id'] = '1234456';
$GLOBALS['clickatelluser'] = 'username';
$GLOBALS['clickatellpassword'] = 'password';
$GLOBALS['contactnumbers'][] = '61123456789';
$GLOBALS['contactnumbers'][] = '61987654321';
$queuealerter = array();
require_once('/usr/local/freeswitch/scripts/ESL.php');
function sendnotification($queuename){
$message = 'There is a call in the queue ' . $queuename . ' and no agents are logged in to take it';
for($i=0; $i < count($GLOBALS['contactnumbers']); $i++){
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://api.clickatell.com/http/sendmsg?api_id=' . $GLOBALS['clickatellapi_id'] . '&user=' . $GLOBALS['clickatelluser'] . '&password=' . $GLOBALS['clickatellpassword'] . '&to=' . $GLOBALS['contactnumbers'][$i] . '&text=' . urlencode($message));
curl_exec($curl_handle);
curl_close($curl_handle);
}
}
$sock = new ESLconnection($GLOBALS['server'], $GLOBALS['port'], $GLOBALS['password']);
$res = $sock->api('callcenter_config queue list');
$queuelist = preg_split('/\r\n|\r|\n/', $res->getBody());
//get a list of all the queues
for($i=1; $i < count($queuelist); $i++){
$queuedetails = explode('|', $queuelist[$i]);
if($queuedetails[0] != '+OK' && $queuedetails[0] != ''){
$newQueue = array();
$newQueue['Name'] = $queuedetails[0];
$newQueue['AgentCount'] = 0;
$newQueue['CallCount'] = 0;
$queuealerter['Queues'][] = $newQueue;
}
}
//for each queue check if there is a logged in agent
for($i=0; $i < count($queuealerter['Queues']); $i++){
$res = $sock->api('callcenter_config queue list agents ' . $queuealerter['Queues'][$i]['Name']);
$agentdetails = preg_split('/\r\n|\r|\n/', $res->getBody());
for($i2=1; $i2 < count($agentdetails); $i2++){
$agentdetail = explode('|', $agentdetails[$i2]);
if($agentdetail[0] != '+OK' && $agentdetail[0] != '' && $agentdetail[5] == 'Available'){
$queuealerter['Queues'][$i]['AgentCount'] += 1;
}
}
//get all the calls in the queue
$res = $sock->api('callcenter_config queue list members ' . $queuealerter['Queues'][$i]['Name']);
$calldetails = preg_split('/\r\n|\r|\n/', $res->getBody());
for($i2=1; $i2 < count($calldetails); $i2++){
$calldetail = explode('|', $calldetails[$i2]);
if($calldetail[0] != '+OK' && $calldetail[0] != ''){
$queuealerter['Queues'][$i]['CallCount'] += 1;
}
}
}
//for each queue check
for($i=0; $i < count ($queuealerter['Queues']); $i++){
if($queuealerter['Queues'][$i]['CallCount'] > 0 && $queuealerter['Queues'][$i]['AgentCount'] == 0){
sendnotification($queuealerter['Queues'][$i]['Name']);
}
}
?>