- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_call.php
- Класс: CIMCall
- Вызов: CIMCall::Answer
static function Answer($arParams)
{
$arConfig['CHAT_ID'] = intval($arParams['CHAT_ID']);
if ($arConfig['CHAT_ID'] <= 0)
return false;
global $DB, $USER;
$arConfig['USER_ID'] = intval($arParams['USER_ID']) > 0? intval($arParams['USER_ID']): intval($USER->GetID());
$strSql = "UPDATE b_im_relation SET CALL_STATUS = ".IM_CALL_STATUS_ANSWER." WHERE CHAT_ID = ".$arConfig['CHAT_ID']." AND USER_ID = ".$arConfig['USER_ID'];
$DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
if ($arParams['CALL_TO_GROUP'])
self::MessageToChat($arConfig['CHAT_ID'], "IM_CALL_CHAT_START_", $arConfig['USER_ID'], true);
$arConfig['MOBILE'] = isset($arParams['MOBILE']) && $arParams['MOBILE'] == 'Y'? 'Y': 'N';
CIMCall::Signaling(Array(
'CHAT_ID' => $arConfig['CHAT_ID'],
'USER_ID' => $arConfig['USER_ID'],
'PARAMS' => Array('isMobile' => $arConfig['MOBILE'] == 'Y'),
'COMMAND' => 'answer',
));
self::Command($arConfig['CHAT_ID'], $arConfig['USER_ID'], 'answer_self', Array());
$arChat = CIMChat::GetChatData(Array('ID' => $arConfig['CHAT_ID'], 'USER_ID' => $arConfig['USER_ID']));
if (empty($arChat['chat']))
return false;
foreach ($arChat['userInChat'][$arConfig['CHAT_ID']] as $value)
{
if ($arConfig['USER_ID'] != $value)
{
$arConfig['RECIPIENT_ID'] = $value;
break;
}
}
if (!$arParams['CALL_TO_GROUP'] && CModule::IncludeModule('pull') && CPullOptions::GetPushStatus())
{
BitrixPullPush::add($arConfig['USER_ID'], Array(
'module_id' => 'im',
'push' => Array(
'expiry' => 0,
'advanced_params' => Array(
'notificationsToCancel' => array('IM_CALL_'. $arConfig['RECIPIENT_ID']),
),
'send_immediately' => 'Y'
)
));
BitrixPullPush::add($arConfig['RECIPIENT_ID'], Array(
'module_id' => 'im',
'push' => Array(
'expiry' => 0,
'advanced_params' => Array(
'notificationsToCancel' => array('IM_CALL_'. $arConfig['USER_ID']),
),
'send_immediately' => 'Y'
)
));
}
return true;
}