• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/integration/imopenlinesmanager.php
  • Класс: BitrixSalesCenterIntegrationImOpenLinesManager
  • Вызов: ImOpenLinesManager::sendOrderMessage
public function sendOrderMessage(Order $order, $dialogId, array $paymentData = []): Result
{
	$result = new Result();

	if ($this->isEnabled())
	{
		$urlInfo = $this->getPublicUrlInfoForOrder($order);
		if (!$urlInfo)
		{
			$result->addError(new Error('Page not found'));
			return $result;
		}
		$fieldsMessage = [
			'DIALOG_ID' => $dialogId,
			'AUTHOR_ID' => Driver::getInstance()->getUserId(),
			'FROM_USER_ID' => Driver::getInstance()->getUserId(),
			'PARAMS' => $this->createImParamsByOrder($order, $urlInfo['url']),
			'MESSAGE' => $this->createImMessageByOrder($order, $urlInfo['url'])
		];

		$imOlMessage = new ImOlSalesCenterPayment(ImOlSalesCenterPayment::normalizeChatId($dialogId));
		$imOlMessage->setMessage($fieldsMessage);
		if (!empty($paymentData))
		{
			$imOlMessage->setData($paymentData);
		}

		$resultSendMessage = $imOlMessage->send();

		if ($resultSendMessage->isSuccess())
		{
			CrmManager::getInstance()->addTimelineEntryOnOrderSend($order, ['DESTINATION' => 'CHAT']);
		}
		else
		{
			foreach ($resultSendMessage->getErrors() as $error)
			{
				$errorMessage = $error->getMessage();
				if ($errorMessage instanceof CApplicationException)
				{
					$result->addError(new Error($errorMessage->GetString()));
				}
				else
				{
					$result->addError($error);
				}
			}
		}

		$notifyResult = $this->sendOrderCheckWarning($order, $dialogId);
		if (!$notifyResult->isSuccess())
		{
			$result->addErrors($notifyResult->getErrors());
		}
	}

	return $result;
}