• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/service/notifier.php
  • Класс: BitrixImBotServiceNotifier
  • Вызов: Notifier::onReceiveCommand
static function onReceiveCommand(string $command, array $params)
{
	unset(
		$params['BX_BOT_NAME'],
		$params['BX_SERVICE_NAME'],
		$params['BX_COMMAND']
	);

	if (
		!BitrixMainLoader::includeModule('im')
		|| !BitrixMainLoader::includeModule('imbot')
	)
	{
		return false;
	}

	$params['BX_COMMAND'] = $command;

	Log::write($params, 'NOTIFIER SERVICE');

	$result = new Result;

	if ($command === self::COMMAND_FORWARD_MESSAGE)
	{
		try
		{
			$resultReception = self::forwardMessage($params);

			if ($resultReception->isSuccess())
			{
				$result->setData([
					'RESULT' => 'OK'
				]);
			}
			else
			{
				$result->addErrors($resultReception->getErrors());
			}
		}
		catch (BitrixMainSystemException $exception)
		{
			$result->addError(new BitrixMainError(
				$exception->getMessage(),
				$exception->getCode(),
				$params
			));
		}
	}
	else
	{
		$result->addError(new BitrixMainError(
			'Command "'.$command.'" is not found.',
			'UNKNOWN_COMMAND',
			$params
		));
	}

	if (!$result->isSuccess() && $result->getErrorCollection()->isEmpty())
	{
		$result->addError(new BitrixMainError(
			'Command "'.$command.'" execute with errors.',
			'ERROR_COMMAND',
			$params
		));
	}

	return $result;
}