public static function CallStart($callId, $userId, $callDevice = 'WEBRTC', $external = false) { // TODO check $callId, $userId $res = Bitrix\Voximplant\CallTable::getList(array('select' => array('ID', 'CALL_ID', 'CALLER_ID', 'DATE_CREATE', 'CRM_LEAD', 'PORTAL_USER_ID'), 'filter' => array('=CALL_ID' => $callId))); if ($call = $res->fetch()) { $crmData = false; if ($call['CRM_LEAD'] > 0) { CVoxImplantCrmHelper::UpdateLead($call['CRM_LEAD'], array('ASSIGNED_BY_ID' => $userId)); $crmData = CVoxImplantCrmHelper::GetDataForPopup($call['CALL_ID'], $call['CALLER_ID'], $userId); } Bitrix\Voximplant\CallTable::update($call['ID'], array('USER_ID' => $userId, 'STATUS' => Bitrix\Voximplant\CallTable::STATUS_CONNECTED)); foreach (GetModuleEvents("voximplant", "onCallStart", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array(array('CALL_ID' => $call['CALL_ID'], 'USER_ID' => $userId))); } $pushUser = array($userId); if ($call['PORTAL_USER_ID'] > 0) { $pushUser[] = $call['PORTAL_USER_ID']; } foreach ($pushUser as $userId) { self::SendPullEvent(array('COMMAND' => 'start', 'USER_ID' => $userId, 'CALL_ID' => $callId, 'CALL_DEVICE' => $callDevice, 'EXTERNAL' => $external ? true : false, 'CRM' => $crmData)); } } }
$result = CVoxImplantConfig::AddConfigBySearchId($params['PHONE_NUMBER'], $params['COUNTRY_CODE']); CVoxImplantHistory::WriteToLog($result, 'CONTROLLER ADD NEW PHONE NUMBER'); echo json_encode($result); } elseif ($params["COMMAND"] == "UnlinkExpirePhoneNumber") { $result = CVoxImplantConfig::DeleteConfigBySearchId($params['PHONE_NUMBER']); CVoxImplantHistory::WriteToLog($result, 'CONTROLLER UNLINK EXPIRE PHONE NUMBER'); echo json_encode($result); } elseif ($params["COMMAND"] == "UpdateOperatorRequest") { $params['OPERATOR_CONTRACT'] = \Bitrix\Main\Text\Encoding::convertEncodingToCurrent($params['OPERATOR_CONTRACT']); CVoxImplantPhoneOrder::Update($params); $result = array('RESULT' => 'OK'); CVoxImplantHistory::WriteToLog($result, 'UPDATE OPERATOR REQUEST'); echo json_encode($result); } else { if ($params["COMMAND"] == "ExternalHungup") { $res = Bitrix\Voximplant\CallTable::getList(array('filter' => array('=CALL_ID' => $params['CALL_ID_TMP']))); if ($call = $res->fetch()) { Bitrix\Voximplant\CallTable::delete($call['ID']); CVoxImplantOutgoing::SendPullEvent(array('COMMAND' => 'timeout', 'USER_ID' => $call['USER_ID'], 'CALL_ID' => $call['CALL_ID'], 'FAILED_CODE' => intval($params['CALL_FAILED_CODE']), 'MARK' => 'timeout_hit_7')); CVoxImplantHistory::WriteToLog($call, 'EXTERNAL CALL HANGUP'); } } else { if ($params["COMMAND"] == "VerifyResult") { $params['REVIEWER_COMMENT'] = \Bitrix\Main\Text\Encoding::convertEncodingToCurrent($params['REVIEWER_COMMENT']); $ViDocs = new CVoxImplantDocuments(); $ViDocs->SetVerifyResult($params); } } } } else { echo "You don't have access to this page.";