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