99e600e3 by Nitesh

dual load calling with pstnweb an webrtc

1 parent 700b4f92
......@@ -239,58 +239,14 @@ class DialerController extends Controller
}
$wakka->setPersonKey($users[0]['id'], "status", "Incall");
// $searchresult = '<div style="clear:both"></div><div id=divworking></div><div style="clear:both"></div>';
if (!empty($users)) {
if (sizeof($users) >= 1) {
if ($redial!="redial") {
print_r($redial);
$searchresult = "<div style='clear:both'></div><div id=divworking></div><div style='clear:both'></div><script>showRecruit(\"" . $users[0]['id'] . "\",\"" . $enable . "\");</script>";
$searchresult .= "<script>kSetDData('C','crmid','" . $users[0]['id'] . "');kSetDData('C','callnumber','$callnumber');</script>";
$searchresult .= "<div id=internalid_matchlist></div><script>
doAjax('record?action=quicksearch','maintextsearch_1_txt=" . $users[0]['clientinternalid'] . "&maintextsearch_1_span=InternalID','internalid_matchlist','searchMutex', 'searchxhr','POST',function(retstr){
if(retstr.responseText.indexOf('No Records Found!')>-1)$('#internalid_matchlist').html('');
});</script>";
}
$searchresult .="<script>doAjax('dialer?action=agentcall&users=" . urlencode(json_encode($users)) . "&callnumber=" . $callnumber . "&client=" . $client . "&mDialerState=" . $kstychDialer['mDialerState'] ."&kstychDialerphone=" . $kstychDialer['phone'] . "','','', 'ajax_manualdial','singlefail','POST',function(retstr){
if(retstr.responseText=='hangup_agentcall'){
kSetDData('C','callid','hangup_agentcall');
kstychCall['crmid']=0;kSetDData('C','previewcrmid','');
simpleNotification('error','topRight','You Are Not Connected!');
}else if(retstr.responseText=='NoFreeLines'){
kstychCall['crmid']=0;kSetDData('C','previewcrmid','');
simpleNotification('error','topRight','No Lines Free to Dial!');
}else if(retstr.responseText=='NoNumber'){
kstychCall['crmid']=0;kSetDData('C','previewcrmid','');
simpleNotification('error','topRight','No Number in Record!');
}else if(retstr.responseText=='MultipleRecords'){
kstychCall['crmid']=0;kSetDData('C','previewcrmid','');
simpleNotification('error','topRight','Multiple Records Found!');
createSearchRecordDiv('dialersearchbox');
}else{
var string = retstr.responseText.trim();
if(string){
var string1=string.split('&');
var string2=string1[7].split('=');
console.log(string1);
console.log(string2[1]);
kSetDData('C','callid',string2[1]);
doAjax(retstr.responseText,'','', 'ajax_manualdial','singlefail','POST');}}
});
</script>";
return Response::make($searchresult);
} else {
return Response::make($searchresult . "<script>kstychCall['crmid']=0;kSetDData('C','previewcrmid','');simpleNotification('error','topRight','Multiple Records Found!');createSearchRecordDiv('dialersearchbox');</script>");
}
} else {
return Response::make($searchresult .= "<div id=internalid_matchlist></div><script>createSearchRecordDiv('internalid_matchlist');</script>");
if (Auth::user()->sessiontype == '0') {
$webrtc=$this->webrtc($users,$callnumber,$client,$kstychDialer['mDialerState'],$kstychDialer['phone']);
return $webrtc;
}else{
$pstnweb=$this->pstnweb($users,$callnumber,$client,$kstychDialer['mDialerState'],$kstychDialer['phone'],$redial,$enable);
return $pstnweb;
}
}
if ($action == "agentcall") {
$wakka = new KHRMSLib();
......@@ -299,6 +255,7 @@ class DialerController extends Controller
$client = Input::get("client");
$mDialerState = Input::get("mDialerState");
$kstychDialerphone = Input::get("kstychDialerphone");
if (!empty($users)) {
if (sizeof($users) >= 1) {
$users[0]->peopledata = preg_replace_callback('!s:(\d+):"(.*?)";!', function ($m) {
......@@ -356,7 +313,7 @@ class DialerController extends Controller
$userstatus = true;
break;
}
sleep(15);
sleep(5);
}
break;
}
......@@ -428,20 +385,11 @@ class DialerController extends Controller
$dialline->save();
$wakka->setPersonKey($crmcall->crm_id, "dialer_lastcall", date("Y-m-d H:i:s"));
//start actual calls
// if (Auth::user()->sessiontype == '0') {
// $newqueue = new Kqueue();
// $newqueue->userToConf($sipid);
// $newqueue = new Kqueue();
// $newqueue->custToConf($sipid, $callnumber, $callerid, $crmcall, $dialline);
// } else {
// $newqueue = new Kqueue();
// $newqueue->custToMagentConf($sipid, $crmcall, $callerid, $dialline);
// }
$sipid = $sipid->toArray();
$searchresult .= "
dialer?action=dialcall&sipid=" . urlencode(json_encode($sipid)) . "&callnumber=" . $callnumber . "&callerid=" . urlencode(json_encode($callerid)) . "&crmcall=" . urlencode(json_encode($crmcall)) . "&sipid1=" . urlencode(json_encode($sipid)) . "&dialline=" . urlencode(json_encode($dialline)) . "&sipid1=" . urlencode(json_encode($crmcall->id)) . "
dialer?action=dialcall&sipid=" . urlencode(json_encode($sipid)) . "&callnumber=" . $callnumber . "&callerid=" . urlencode(json_encode($callerid)) . "&crmcall=" . urlencode(json_encode($crmcall)) . "&sipid1=" . urlencode(json_encode($sipid)) . "&dialline=" . urlencode(json_encode($dialline)). "&userid=" . urlencode(json_encode($users[0]->id)) . "&sipid1=" . urlencode(json_encode($crmcall->id)) . "
";
return Response::make($searchresult);
......@@ -461,36 +409,15 @@ class DialerController extends Controller
} else {
return Response::make($searchresult .= "<div id=internalid_matchlist></div><script>createSearchRecordDiv('internalid_matchlist');</script>");
}
}
if ($action == "dialcall") {
//echo(urldecode(Input::get("sipid1")));
//$t = explode("||",Input::get("sipid1"));
//$t0 = $t[0];
// substr($string, 0, -1);
//echo (trim(html_entity_decode($t0),'"'));
//dd(html_entity_decode(Input::get("sipid1")));
$sipid = json_decode(html_entity_decode(Input::get("sipid")));
$callnumber = json_decode(html_entity_decode(Input::get("callnumber")));
$callerid = json_decode(html_entity_decode(Input::get("callerid")));
$crmcall = json_decode(html_entity_decode(Input::get("crmcall")));
$dialline = json_decode(html_entity_decode(Input::get("dialline")));
//dd($sipid, $callnumber, $callerid, $crmcall,$dialline, html_entity_decode(Input::get("dialline")));
//dd($sipid,$callnumber,$callerid,$crmcall,$dialline);
//dd(Input::get("sipid1"));
// $sipid = Input::get("sipid");
// $callnumber = Input::get("callnumber");
// $callerid = (object) Input::get("callerid");
// $crmcall = Input::get("crmcall");
// $dialline= Input::get("dialline");
// $sipid = explode("-", $sipid);
// $sipid_key = ['id', 'server'];
// $crmcall_key = ['id'];
// $dialline_key = ['dialstr'];
// $sipid = (object) array_combine($sipid_key, $sipid);
// $crmcall = (object) array_combine($crmcall_key, $crmcall);
// $dialline = (object) array_combine($dialline_key, $dialline);
if (Auth::user()->sessiontype == '0') {
$newqueue = new Kqueue();
$newqueue->userToConf($sipid);
......@@ -500,6 +427,7 @@ class DialerController extends Controller
$newqueue = new Kqueue();
$newqueue->custToMagentConf($sipid, $crmcall, $callerid, $dialline);
}
return "true";
}
if ($action == "addconfcall") {
$retstr = "";
......@@ -1596,4 +1524,181 @@ class DialerController extends Controller
return $returnArray;
}
public function webrtc($users,$callnumber,$client,$kstychDialer_mDialerState,$kstychDialer_phone){
$wakka = new KHRMSLib();
if (!empty($users)) {
if (sizeof($users) >= 1) {
$users[0]['peopledata'] = preg_replace_callback('!s:(\d+):"(.*?)";!', function ($m) {
return "s:" . strlen($m[2]) . ":\"" . $m[2] . "\";";
}, $users[0]['peopledata']);
$ppldata = unserialize($users[0]['peopledata']);
if (!isset($ppldata['client'])) $ppldata['client'] = "";
if (!isset($ppldata['department'])) $ppldata['department'] = "";
if ($callnumber == "" || intval($callnumber) <= 0) $callnumber = $ppldata['mobile'];
if ($callnumber != "" && intval($callnumber) > 0) {
$mastersdata = $wakka->getCompanyMaster($ppldata['client']);
$callerid = "";
if (!empty($mastersdata["DialerDID"])) $callerid = $mastersdata["DialerDID"];
if ($callerid == "") $callerid = Auth::user()->exten;
$calleridarr = explode(":", $callerid);
$dspan = "1";
if (isset($calleridarr[1])) {
$callerid = $calleridarr[0];
$dspan = $calleridarr[1];
}
//see if user is online on this sipid
$userstatus = true;
$sipid = Sipid::find($kstychDialer_phone);
//see if user is online on this sipid
if ($userstatus) {
if ($dspan == "1") {
$dialline = Dialline::where("status", "=", "Free")->where("enabled", "=", "1");
if ($dspan != "") $dialline = $dialline->where('dspan', '=', '1')->where('id', '<=', '30');
$dialline = $dialline->orderBy('updated_at', 'ASC')->first();
}
if (empty($dialline)) {
$dialline = Dialline::where("status", "=", "Free")->where("enabled", "=", "1");
if ($dspan != "") $dialline = $dialline->where('dspan', '=', '2')->where('id', '>', '30');
$dialline = $dialline->orderBy('updated_at', 'ASC')->first();
}
if ($dialline) {
$dialline->status = "Blocked";
$dialline->user_id = Auth::user()->id;
$dialline->number = $users[0]['mobile'];
$dialline->regexstr = $client;
$dialline->save();
$nowts = microtime(true) * 1000;
//get ts_Wait
$userlog = UserLog::where('user_id', '=', Auth::user()->id)->orderBy("id", "DESC")->first();
$ts_Wait = $userlog->getLastTs($sipid->id, $nowts);
$userlog->save();
//start the call log
$crmcall = new CRMCall();
$crmcall->number = $callnumber;
$crmcall->user_id = Auth::user()->id;
$crmcall->sipid_id = $sipid->id;
$crmcall->crm_id = $users[0]['id'];
$crmcall->lan = $users[0]['lan'];
//$crmcall->client=$ppldata['client'];
$crmcall->client = $client;
$crmcall->department = $ppldata['department'];
$crmcall->state = 'New';
$crmcall->type = $kstychDialer_mDialerState;
$crmcall->dialline_id = $dialline->id;
$crmcall->setTs('ts_Wait', $ts_Wait);
$crmcall->setTs('ts_Call', $nowts);
$crmcall->did = $callerid;
$tdata = array();
$crmcall->data = json_encode($tdata);
$crmcall->save();
$dialline->call_id = $crmcall->id;
$dialline->save();
$wakka->setPersonKey($crmcall->crm_id, "dialer_lastcall", date("Y-m-d H:i:s"));
$sipid=$sipid->toArray();
$searchresult = "<div style='clear:both'></div><div id=divworking></div><div style='clear:both'></div><script>showRecruit(\"" . $users[0]['id'] . "\",\"" . $enable . "\");</script>";
$searchresult .= "<script>kSetDData('C','callid','" . $crmcall->id . "');kSetDData('C','crmid','" . $users[0]['id'] . "');kSetDData('C','callnumber','$callnumber');</script>";
$searchresult .= "<div id=internalid_matchlist></div><script>
doAjax('record?action=quicksearch','maintextsearch_1_txt=" . $users[0]['clientinternalid'] . "&maintextsearch_1_span=InternalID','internalid_matchlist','searchMutex', 'searchxhr','POST',function(retstr){
if(retstr.responseText.indexOf('No Records Found!')>-1)$('#internalid_matchlist').html('');
});
doAjax('dialer?action=dialcall&sipid=" . urlencode(json_encode($sipid)) . "&callnumber=" . $callnumber . "&callerid=" . urlencode(json_encode($callerid)) . "&crmcall=" . urlencode(json_encode($crmcall)) ."&sipid1=".urlencode(json_encode($sipid))."&dialline=" . urlencode(json_encode($dialline)) . "','','', 'ajax_manualdial','singlefail','POST');
</script>";
return Response::make($searchresult);
} else {
return Response::make("<script>kstychCall['crmid']=0;kSetDData('C','previewcrmid','');simpleNotification('error','topRight','No Lines Free to Dial!');</script>");
}
} else {
return Response::make("<script>kstychCall['crmid']=0;kSetDData('C','previewcrmid','');simpleNotification('error','topRight','You Are Not Connected!');</script>");
}
} else {
$wakka->setPersonKey($users[0]['id'], "status", "NoNumber");
return Response::make($searchresult . "<script>kstychCall['crmid']=0;kSetDData('C','previewcrmid','');simpleNotification('error','topRight','No Number in Record!');</script>");
}
} else {
return Response::make($searchresult . "<script>kstychCall['crmid']=0;kSetDData('C','previewcrmid','');simpleNotification('error','topRight','Multiple Records Found!');createSearchRecordDiv('dialersearchbox');</script>");
}
} else return Response::make($searchresult .= "<div id=internalid_matchlist></div><script>createSearchRecordDiv('internalid_matchlist');</script>");
}
public function pstnweb($users,$callnumber,$client,$kstychDialer_mDialerState,$kstychDialer_phone,$redial,$enable){
if (!empty($users)) {
if (sizeof($users) >= 1) {
if ($redial!="redial") {
$searchresult = "<div style='clear:both'></div><div id=divworking></div><div style='clear:both'></div><script>showRecruit(\"" . $users[0]['id'] . "\",\"" . $enable . "\");</script>";
$searchresult .= "<script>kSetDData('C','crmid','" . $users[0]['id'] . "');kSetDData('C','callnumber','$callnumber');</script>";
$searchresult .= "<div id=internalid_matchlist></div><script>
doAjax('record?action=quicksearch','maintextsearch_1_txt=" . $users[0]['clientinternalid'] . "&maintextsearch_1_span=InternalID','internalid_matchlist','searchMutex', 'searchxhr','POST',function(retstr){
if(retstr.responseText.indexOf('No Records Found!')>-1)$('#internalid_matchlist').html('');
});</script>";
}
$searchresult .="<script>doAjax('dialer?action=agentcall&users=" . urlencode(json_encode($users)) . "&callnumber=" . $callnumber . "&client=" . $client . "&mDialerState=" . $kstychDialer_mDialerState ."&kstychDialerphone=" . $kstychDialer_phone . "','','', 'ajax_manualdial','singlefail','POST',function(retstr){
if(retstr.responseText=='hangup_agentcall'){
kSetDData('C','callid','hangup_agentcall');
kstychCall['crmid']=0;kSetDData('C','previewcrmid','');
simpleNotification('error','topRight','You Are Not Connected!');
}else if(retstr.responseText=='NoFreeLines'){
kstychCall['crmid']=0;kSetDData('C','previewcrmid','');
simpleNotification('error','topRight','No Lines Free to Dial!');
}else if(retstr.responseText=='NoNumber'){
kstychCall['crmid']=0;kSetDData('C','previewcrmid','');
simpleNotification('error','topRight','No Number in Record!');
}else if(retstr.responseText=='MultipleRecords'){
kstychCall['crmid']=0;kSetDData('C','previewcrmid','');
simpleNotification('error','topRight','Multiple Records Found!');
createSearchRecordDiv('dialersearchbox');
}else {
var string = retstr.responseText.trim();
if(string){
var string1=string.split('&');
var string2=string1[8].split('=');
var string4=string1[7].split('=');
var string3=string1[2].split('=');
console.log(string1);
console.log(string2[1]);
kSetDData('C','crmid',string4[1]);
kSetDData('C','callnumber',string3[1]);
kSetDData('C','callid',string2[1]);
doAjax(retstr.responseText,'','', 'ajax_manualdial','singlefail','POST',function(retstr){
kSetDData('C','mCallState','Call');
kSetDData('C','ts_Call',getNowTS());
updateDialerState();
});
} }
});
</script>";
return Response::make($searchresult);
} else {
return Response::make($searchresult . "<script>kstychCall['crmid']=0;kSetDData('C','previewcrmid','');simpleNotification('error','topRight','Multiple Records Found!');createSearchRecordDiv('dialersearchbox');</script>");
}
} else {
return Response::make($searchresult .= "<div id=internalid_matchlist></div><script>createSearchRecordDiv('internalid_matchlist');</script>");
}
}
}
......
......@@ -1143,13 +1143,13 @@ function updateDialerState(objstr,key,val,key2,val2)
if(key=="dialnext" && val== "redial")
{
alert(val+"1");
outgoingCall(val);
}
if(key=="dialnext" && val== ""){
alert(val+"2");
outgoingCall();
}
......
......@@ -353,7 +353,7 @@ function doAjax(varUrl,dataStr,targetDiv,handleStr,ajaxType,ajaxtype,kcallback)
}
else
{
if(kstychAppObject['config']['appdebug'])eval(response);
if(kstychAppObject['config']['appdebug']) response;
else
{
try{eval(response)}catch(e)
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!