• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_rest.php
  • Класс: CIMRestService
  • Вызов: CIMRestService::onBotMessageDelete
static function onBotMessageDelete($arParams, $arHandler)
{
	$arParams = array_change_key_case($arParams, CASE_UPPER);

	if (!$arHandler['APP_CODE'])
	{
		$parts = parse_url($arHandler['EVENT_HANDLER']);
		parse_str($parts['query'], $query);
		$query = array_change_key_case($query, CASE_UPPER);

		if ($query['CLIENT_ID'])
		{
			$arHandler['APP_CODE'] = 'custom'.$query['CLIENT_ID'];
		}
	}

	if (!$arHandler['APP_CODE'])
	{
		throw new Exception('Event is intended for another application');
	}

	$bots = Array();
	foreach ($arParams[0] as $botData)
	{
		if ($botData['APP_ID'] == $arHandler['APP_CODE'])
		{
			$sendBotData = self::getAccessToken($arHandler['APP_ID'], $botData['BOT_ID']);
			$sendBotData['AUTH'] = $sendBotData;
			$sendBotData['BOT_ID'] = $botData['BOT_ID'];
			$sendBotData['BOT_CODE'] = $botData['CODE'];
			$bots[$botData['BOT_ID']] = $sendBotData;
		}
	}

	if (empty($bots))
	{
		throw new Exception('Event is intended for another application');
	}

	$arParams[2]['MESSAGE_ID'] = $arParams[1];
	$arParams[2]['CHAT_TYPE'] = $arParams[2]['MESSAGE_TYPE'];
	$arParams[2]['LANGUAGE'] = BitrixImBot::getDefaultLanguage();

	if ($arParams[2]['FROM_USER_ID'] > 0)
	{
		$fromUser = BitrixImUser::getInstance($arParams[2]['FROM_USER_ID'])->getFields();

		$user = Array(
			'ID' => $fromUser['id'],
			'NAME' => $fromUser['name'],
			'FIRST_NAME' => $fromUser['first_name'],
			'LAST_NAME' => $fromUser['last_name'],
			'WORK_POSITION' => $fromUser['work_position'],
			'GENDER' => $fromUser['gender'],
			'IS_BOT' => $fromUser['bot']? 'Y':'N',
			'IS_CONNECTOR' => $fromUser['connector']? 'Y':'N',
			'IS_NETWORK' => $fromUser['network']? 'Y':'N',
			'IS_EXTRANET' => $fromUser['extranet']? 'Y':'N',
		);
	}
	else
	{
		$user = Array();
	}

	return Array(
		'BOT' => $bots,
		'PARAMS' => $arParams[2],
		'USER' => $user
	);
}