- Модуль: 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;
}