...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/activity/gotochat.php
- Класс: Bitrix\Crm\Controller\Activity\GoToChat
- Вызов: GoToChat::sendAction
public function sendAction(int $ownerTypeId, int $ownerId, array $params): Result { $result = new Result(); if (!\Bitrix\Crm\Integration\ImOpenLines\GoToChat::isActive()) { $result->addError(new Error('Feature is not available')); return $result; } $result = $this->validateEntity($ownerTypeId, $ownerId); if (!$result->isSuccess()) { return $result; } $senderType = (string)($params['senderType'] ?? ''); $senderChannelId = (string)($params['senderId'] ?? ''); $from = (string)($params['from'] ?? ''); $to = (int)($params['to'] ?? ''); $lineId = (string)($params['lineId'] ?? ''); if (!\Bitrix\Crm\Integration\ImOpenLines\GoToChat::isValidLineId($lineId)) { $this->addError(new Error(Loc::getMessage('CRM_INVITATION_WRONG_LINE'))); return $result; } $channel = \Bitrix\Crm\MessageSender\Channel\ChannelRepository::create(new ItemIdentifier($ownerTypeId, $ownerId)) ->getById($senderType, $senderChannelId) ; if (!$channel) { $result->addError(new Error(Loc::getMessage('CRM_INVITATION_CHANNEL_NOT_FOUND'))); return $result; } $checkChannelResult = $this->checkChannel($channel); if (!$checkChannelResult->isSuccess()) { $result->addErrors($checkChannelResult->getErrors()); return $result; } $fromCorrespondent = null; $toCorrespondent = null; foreach ($channel->getFromList() as $fromListItem) { if ($fromListItem->getId() === $from) { $fromCorrespondent = $fromListItem; break; } } if (!$fromCorrespondent) { $result->addError(new Error(Loc::getMessage('CRM_INVITATION_WRONG_FROM'))); return $result; } foreach ($channel->getToList() as $toListItem) { if ($toListItem->getAddress()->getId() === $to) { $toCorrespondent = $toListItem; break; } } if (!$toCorrespondent) { $result->addError(new Error(Loc::getMessage('CRM_INVITATION_WRONG_TO'))); return $result; } $result = (new \Bitrix\Crm\Integration\ImOpenLines\GoToChat())->send( $channel, $lineId, $fromCorrespondent, $toCorrespondent ); if (!$result->isSuccess()) { $this->addErrors($result->getErrors()); } return $result; }