• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/provider/base/input.php
  • Класс: BitrixImConnectorProviderBaseInput
  • Вызов: Input::processingMessage
protected function processingMessage($message): Result
{
	$result = clone $this->result;

	if ($result->isSuccess())
	{
		if (empty($message['type_message']))
		{
			$typeMessage = 'message';
		}
		else
		{
			$typeMessage = mb_strtolower($message['type_message']);
			unset($message['type_message']);
		}

		switch ($typeMessage)
		{
			case 'message':
				$result = $this->processingNewMessage($message);
				break;
			case 'message_update':
				$result = $this->processingUpdateMessage($message);
				break;
			case 'message_del':
				$result = $this->processingDelMessage($message);
				break;
			case 'typing_start':
				$result = $this->processingTypingStatus($message);
				break;
			case 'post':
				$result = $this->processingNewPost($message);
				break;
			case 'post_update':
				$result = $this->processingUpdatePost($message);
				break;
			case 'welcome':
				$result = $this->processingWelcomeMessage($message);
				break;
			case 'command_start':
				$result = $this->processingCommand($typeMessage, $message);

				if ($result->isSuccess())
				{
					if (
						!empty($message['ref']['source']) // has start parameter
						&& strpos($message['ref']['source'], ConnectorsBase::REF_PREFIX) !== 0 // and does not begin with "btrx" prefix
					)
					{
						// display message as usual
						$this->processingNewMessage($message);
					}
				}

				break;

			default:
				$result->addError(new Error(
					Loc::getMessage('IMCONNECTOR_ERROR_PROVIDER_UNSUPPORTED_TYPE_INCOMING_MESSAGE'),
					Library::ERROR_IMCONNECTOR_PROVIDER_UNSUPPORTED_TYPE_INCOMING_MESSAGE,
					__METHOD__,
					$this->params
				));
				break;
		}
	}

	return $result;
}