- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_incoming.php
- Класс: CVoxImplantIncoming
- Вызов: CVoxImplantIncoming::SendPullEvent
static function SendPullEvent($params)
{
// TODO check $params
if (!CModule::IncludeModule('pull') || !CPullOptions::GetQueueServerStatus() || $params['USER_ID'] <= 0)
return false;
$config = Array();
$push = Array();
$callId = $params['CALL_ID'];
if ($params['COMMAND'] == 'invite')
{
$config = Array(
"callId" => $params['CALL_ID'],
"callerId" => $params['CALLER_ID'],
"phoneNumber" => $params['PHONE_NAME'],
"chatId" => 0,
"chat" => array(),
"typeConnect" => $params['TYPE_CONNECT'],
"portalCall" => $params['PORTAL_CALL'] == 'Y'? true: false,
"portalCallUserId" => $params['PORTAL_CALL'] == 'Y'? $params['PORTAL_CALL_USER_ID']: 0,
"portalCallData" => $params['PORTAL_CALL'] == 'Y'? $params['PORTAL_CALL_DATA']: Array(),
"config" => $params['CONFIG']? $params['CONFIG']: Array(),
"CRM" => $params['CRM'],
"isCallback" => $params['CALLBACK_MODE']
);
$callName = $params['CALLER_ID'];
if (isset($params['CRM']['CONTACT']['NAME']) && $params['CRM']['CONTACT']['NAME'] <> '')
{
$callName = $params['CRM']['CONTACT']['NAME'];
}
if (isset($params['CRM']['COMPANY']) && $params['CRM']['COMPANY'] <> '')
{
$callName .= ' ('.$params['CRM']['COMPANY'].')';
}
else if (isset($params['CRM']['CONTACT']['POST']) && $params['CRM']['CONTACT']['POST'] <> '')
{
$callName .= ' ('.$params['CRM']['CONTACT']['POST'].')';
}
$push['sub_tag'] = 'VI_CALL_'.$params['CALL_ID'];
$push['send_immediately'] = 'Y';
$push['sound'] = 'call.aif';
$push['advanced_params'] = Array(
"notificationsToCancel" => array('VI_CALL_'.$params['CALL_ID']),
"androidHighPriority" => true,
);
if ($params['PORTAL_CALL'] == 'Y')
{
$push['message'] = GetMessage('INCOMING_CALL', Array('#NAME#' => $params['PORTAL_CALL_DATA']['users'][$params['PORTAL_CALL_USER_ID']]['name']));
}
else
{
$push['message'] = GetMessage('INCOMING_CALL', Array('#NAME#' => $callName));
$push['message'] = $push['message'].' '.GetMessage('CALL_FOR_NUMBER', Array('#NUMBER#' => $params['PHONE_NAME']));
}
$push['params'] = Array(
'ACTION' => 'VI_CALL_'.$params['CALL_ID'],
'PARAMS' => $config
);
}
else if ($params['COMMAND'] == 'update_crm')
{
$call = VIModelCallTable::getByCallId($callId);
$config = Array(
"callId" => $params['CALL_ID'],
"CRM" => $params['CRM'],
);
if(is_array($call))
{
$config["showCrmCard"] = ($call['CRM'] == 'Y');
$config["crmEntityType"] = $call['CRM_ENTITY_TYPE'];
$config["crmEntityId"] = $call['CRM_ENTITY_ID'];
$config["crmActivityId"] = $call['CRM_ACTIVITY_ID'];
$config["crmActivityEditUrl"] = CVoxImplantCrmHelper::getActivityEditUrl($call['CRM_ACTIVITY_ID']);
}
}
else if ($params['COMMAND'] == 'timeout' || $params['COMMAND'] == 'answer_self')
{
$config = Array(
"callId" => $params['CALL_ID'],
);
$push['send_immediately'] = 'Y';
$push['advanced_params'] = Array(
"notificationsToCancel" => array('VI_CALL_'.$params['CALL_ID']),
);
}
if (isset($params['MARK']))
{
$config['mark'] = $params['MARK'];
}
$userIds = is_array($params['USER_ID']) ? $params['USER_ID'] : array($params['USER_ID']);
BitrixPullEvent::add($userIds,
Array(
'module_id' => 'voximplant',
'command' => $params['COMMAND'],
'params' => $config,
'push' => $push
)
);
return true;
}