• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Link/Task/TaskService.php
  • Класс: BitrixImV2LinkTaskTaskService
  • Вызов: TaskService::registerTask
public function registerTask(int $chatId, int $messageId, BitrixImV2EntityTaskTaskItem $taskItem): Result
{
	$result = new Result();

	$userId = $this->getContext()->getUserId();

	$taskLink = new TaskItem();
	$taskLink->setEntity($taskItem)->setChatId($chatId)->setAuthorId($userId);

	if ($messageId !== 0)
	{
		$taskLink->setMessageId($messageId);
	}

	$sendMessageResult = $this->sendMessageAboutTask($taskLink, $chatId);

	if (!$sendMessageResult->isSuccess())
	{
		$result->addErrors($sendMessageResult->getErrors());
	}

	$systemMessageId = $sendMessageResult->getResult();

	$taskLink->setMessageId($messageId ?: $systemMessageId);
	$saveResult = $taskLink->save();

	if (!$saveResult->isSuccess())
	{
		return $result->addErrors($saveResult->getErrors());
	}

	Push::getInstance()
		->setContext($this->context)
		->sendFull($taskLink, self::ADD_TASK_EVENT, ['RECIPIENT' => $taskItem->getMembersIds()])
	;

	return $result;
}