• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/connector.php
  • Класс: BitrixImOpenLinesConnector
  • Вызов: Connector::onReceivedCommandStart
static function onReceivedCommandStart(Event $event)
{
	$params = $event->getParameters();
	if (empty($params))
	{
		return false;
	}

	$fields = self::processReceivedEntity($params);

	Log::write($fields, 'CONNECTOR - COMMAND START');

	$chat = new ImOpenLinesChat();
	$chat->load([
		'USER_CODE' => self::getUserCode($fields['connector']),
		'USER_ID' => $fields['connector']['user_id'],
		'CONNECTOR' => $fields['connector'],
	]);

	$session = new ImOpenLinesSession();
	$session->setChat($chat);

	/** @var ImOpenLinesTracker $tracker */
	$tracker = ServiceLocator::getInstance()->get('ImOpenLines.Services.Tracker');

	$hasTrackerRef = false;
	if (!empty($fields['ref']['source']))
	{
		$hasTrackerRef = !empty($tracker->findExpectationByTrackId($fields['ref']['source'])); //todo: Replace it with session method
	}

		// start parameter
	if ($hasTrackerRef)
	{
		$hasSession = $session->load([
			'USER_CODE' => self::getUserCode($fields['connector']),
			'CONFIG_ID' => $fields['connector']['line_id'],
			'USER_ID' => $fields['connector']['user_id'],
			'SOURCE' => $fields['connector']['connector_id'],
			'MODE' => ImOpenLinesSession::MODE_INPUT,
			'SKIP_CRM' => 'Y',// do not auto create crm objects
		]);

		if ($hasSession)
		{
			// CRM expectation
			$tracker->bindExpectationToChat($fields['ref']['source'], $chat, $session);
		}
	}
	else
	{
		$session->load([
			'USER_CODE' => self::getUserCode($fields['connector']),
			'CONFIG_ID' => $fields['connector']['line_id'],
			'USER_ID' => $fields['connector']['user_id'],
			'SOURCE' => $fields['connector']['connector_id'],
			'MODE' => ImOpenLinesSession::MODE_INPUT,
		]);
	}

	return true;
}