- Модуль: imconnector
- Путь к файлу: ~/bitrix/modules/imconnector/lib/connectors/telegrambot.php
- Класс: BitrixImConnectorConnectorsTelegramBot
- Вызов: TelegramBot::processingInputWelcomeMessage
public function processingInputWelcomeMessage(array $message, int $line): Result
{
$result = new Result();
$telegramUserId = (int)$message['user']['id'];
$userId = 0;
$user = $this->getUserByUserCode(['id' => $telegramUserId]);
if (!$user->isSuccess())
{
$addResult = $this->addUser($message['user']);
if ($addResult->isSuccess())
{
$userId = (int)$addResult->getResult();
}
else
{
$result->addErrors($addResult->getErrors());
}
}
else
{
$userId = (int)$user->getResult()['ID'];
}
if (!$userId)
{
return $result;
}
$fullUserCode = $this->generateChatCode($line, $telegramUserId, $userId);
$chat = $this->getChat([
'USER_CODE' => $fullUserCode,
'USER_ID' => $userId,
'CONNECTOR' => $message,
]);
$chatId = $chat->getData('ID');
if (!$chatId)
{
return $result;
}
// CRM expectation
if (
!empty($message['ref']['source']) // start parameter
&& strpos($message['ref']['source'], self::REF_PREFIX) === 0 // start parameter begins with "btrx" prefix
&& Loader::includeModule('imopenlines')
)
{
$session = new ImOpenLinesSession();
$session->setChat($chat);
$hasSession = $session->load([
'USER_CODE' => $fullUserCode,
'CONFIG_ID' => $line,
'USER_ID' => $userId,
'SOURCE' => self::TELEGRAM_BOT,
'MODE' => ImOpenLinesSession::MODE_INPUT,
'SKIP_CRM' => 'Y',// do not create crm objects
]);
if ($hasSession)
{
/** @var ImOpenLinesTracker $tracker */
$tracker = ServiceLocator::getInstance()->get('ImOpenLines.Services.Tracker');
$tracker->bindExpectationToChat($message['ref']['source'], $chat, $session);
}
}
$connectorOutput = new Output(self::TELEGRAM_BOT, $line);
$statusData = Status::getInstance(self::TELEGRAM_BOT, $line)->getData();
$messageToSend = [
'chatId' => $message['chat']['id'],
'userId' => $userId,
'lineId' => $line,
];
if (!$statusData['welcome_message'])
{
if ($statusData['eshop_url'])
{
return $connectorOutput->registerEshop($messageToSend);
}
return $result;
}
if (!empty($statusData['welcome_message']))
{
$this->sendMessage($statusData['welcome_message'], $chatId);
}
$connectorOutput->registerEshop($messageToSend);
return $result;
}