• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Reaction/PushService.php
  • Класс: BitrixImV2MessageReactionPushService
  • Вызов: PushService::send
private function send(string $eventName, ReactionItem $reaction): void
{
	$converter = new Converter(Converter::KEYS | Converter::VALUES | Converter::TO_LOWER | Converter::LC_FIRST);
	$messageId = $reaction->getMessageId();
	$reactionMessage = (new ReactionMessages([$messageId], false))->getReactionMessage($messageId);
	$params = [
		'userId' => $reaction->getUserId(),
		'reaction' => $converter->process($reaction->getReaction()),
		'actualReactions' => (new RestAdapter($reactionMessage))->toRestFormat(),
		'dialogId' => Chat::getInstance($reaction->getChatId())->getDialogId(),
	];
	$chat = Chat::getInstance($reaction->getChatId());

	if ($chat instanceof ChatPrivateChat)
	{
		$this->sendToPrivateChat($params, $eventName, $reaction);

		return;
	}

	BitrixPullEvent::add($this->getRecipient($reaction), [
		'module_id' => 'im',
		'command' => $eventName,
		'params' => $params,
		'extra' => BitrixImCommon::getPullExtra()
	]);

	if ($chat->getType() === Chat::IM_TYPE_OPEN || $chat->getType() === Chat::IM_TYPE_OPEN_LINE)
	{
		CPullWatch::AddToStack('IM_PUBLIC_'.$chat->getChatId(), Array(
			'module_id' => 'im',
			'command' => $eventName,
			'params' => $params,
			'extra' => BitrixImCommon::getPullExtra()
		));
	}
}