• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/interactivemessage/input.php
  • Класс: BitrixImConnectorInteractiveMessageInput
  • Вызов: Input::sessionClose
protected function sessionClose($chatId, $userId, string $message = ''): Result
{
	$result = new Result();

	if (Loader::includeModule('imopenlines'))
	{
		if (!empty($message))
		{
			/** @var BitrixImOpenLinesServicesMessage $messenger */
			$messenger = ServiceLocator::getInstance()->get('ImOpenLines.Services.Message');
			$messenger->addMessage([
				'TO_CHAT_ID' => $chatId,
				'MESSAGE' => $message,
				'SYSTEM' => 'Y',
				'IMPORTANT_CONNECTOR' => 'Y',
				'NO_SESSION_OL' => 'Y',
				'PARAMS' => [
					'CLASS' => 'bx-messenger-content-item-ol-output',
					'IMOL_FORM' => 'offline',
					'TYPE' => 'lines',
					'COMPONENT_ID' => 'bx-imopenlines-message',
				],
			]);
		}

		/** @var BitrixImOpenLinesServicesChatDispatcher $chatDispatcher */
		$chatDispatcher = ServiceLocator::getInstance()->get('ImOpenLines.Services.ChatDispatcher');
		$chat = $chatDispatcher->getChat((int)$chatId);

		$resultFinishChat = $chat->finish($userId, true, true, true);

		if ($resultFinishChat->isSuccess())
		{
			$result->setResult(true);
		}
		else
		{
			$result->addErrors($resultFinishChat->getErrors());
		}
	}
	else
	{
		$result->addError(new Error('Failed to load the open lines module', 'IMCONNECTOR_INTERACTIVE_MESSAGE_ERROR_NOT_LOAD_MODULES_IMOPENLINES', __METHOD__));
	}

	return $result;
}