• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/Controller/Openlines.php
  • Класс: BitrixImConnectorControllerOpenlines
  • Вызов: Openlines::getAction
public function getAction(string $connectorId, int $lineId, bool $withQr = false): ?array
{
	$info = Connector::infoConnectorsLine($lineId);

	if ($info)
	{
		$botName = $info[$connectorId][self::CONNECTORS[$connectorId]['titleField']];
		$botUrl = Connector::getImMessengerUrl($lineId, $connectorId)['web'];
	}
	else
	{
		$connectorOutput = new Output($connectorId, $lineId);
		$infoConnect = $connectorOutput->infoConnect();
		if ($infoConnect->isSuccess())
		{
			$connectInfoData = $infoConnect->getData();
			$botName = $connectInfoData[self::CONNECTORS[$connectorId]['titleField']];
			$botUrl = $connectInfoData['url'];
		}
		else
		{
			$this->addError(new Error(
				self::ERROR_CONNECTOR_NOT_FOUND['message'],
				self::ERROR_CONNECTOR_NOT_FOUND['code']
			));
			return null;
		}

		if (empty($botUrl))
		{
			$messengerUrl = Connector::getImMessengerUrl($lineId, $connectorId);
			if ($messengerUrl)
			{
				$botUrl = $messengerUrl['web'];
			}
		}
	}

	$line = (new Config())->get($lineId);
	$result = [
		'lineId' => $lineId,
		'lineName' => $line['LINE_NAME'],
		'userIds' => array_map('intval', $line['QUEUE'] ?? []),
		'botName' => $botName,
		'url' => $botUrl,
		'canEditLine' => Config::canEditLine($lineId),
		'canEditConnector' => Config::canEditConnector($lineId)
	];

	if (
		Loader::includeModule('ui')
		&& $withQr
		&& isset($result['url'])
	)
	{
		$urlQR = (new Barcode())
			->option('w', self::QR_WIDTH)
			->option('h', self::QR_HEIGHT)
			->render($result['url']);

		$result['qr'] = base64_encode($urlQR);
	}

	return $result;
}