• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/im/task.php
  • Класс: BitrixTasksIntegrationIMTask
  • Вызов: Task::postMessage
static function postMessage($chatId, $message, $task = null)
{
	$attach = null;
	if(is_array($task))
	{
		$attach = new CIMMessageParamAttach(1, '#E30000'); // red color
		$attach->AddUser(Array(
			'NAME' => $task['TITLE'],
			'AVATAR' => BX_ROOT.'/js/tasks/images/im/chat.png',
			'LINK' => CTaskNotifications::getNotificationPath(array('ID' => $task['RESPONSIBLE_ID']), $task['ID']),
		));

		$gridRows = array();

		if($task['STATUS'])
		{
			$status = Loc::getMessage('TASKS_TASK_STATUS_'.$task['STATUS']);

			if($status)
			{
				$gridRows[] = array(
					"NAME" => Loc::getMessage('TASKS_TASK_ENTITY_STATUS_PSEUDO_FIELD').':',
					"VALUE" => Loc::getMessage('TASKS_TASK_STATUS_'.$task['STATUS']),
					"DISPLAY" => "COLUMN",
					"WIDTH" => 120,
				);
			}
		}
		if($task['CREATED_BY'])
		{
			$gridRows[] = array(
				"NAME" => Loc::getMessage('TASKS_TASK_ENTITY_CREATED_BY_FIELD').':',
				// getFullName() returns escaped data, we want unescaped
				"VALUE" => htmlspecialcharsback(BitrixImUser::getInstance($task['CREATED_BY'])->getFullName()),
				"USER_ID" => $task['CREATED_BY'],
				"DISPLAY" => "COLUMN",
				"WIDTH" => 120,
			);
		}
		if($task['RESPONSIBLE_ID'])
		{
			$gridRows[] = array(
				"NAME" => Loc::getMessage('TASKS_TASK_ENTITY_RESPONSIBLE_ID_FIELD').':',
				// getFullName() returns escaped data, we want unescaped
				"VALUE" => htmlspecialcharsback(BitrixImUser::getInstance($task['RESPONSIBLE_ID'])->getFullName()),
				"USER_ID" => $task['RESPONSIBLE_ID'],
				"DISPLAY" => "COLUMN",
				"WIDTH" => 120,
			);
		}
		if($task['DEADLINE'])
		{
			$userTZOffset = UtilUser::getTimeZoneOffsetCurrentUser() + Util::getServerTimeZoneOffset();

			$gridRows[] = array(
				"NAME" => Loc::getMessage('TASKS_TASK_ENTITY_DEADLINE_FIELD').':',
				"VALUE" => ((string) $task['DEADLINE']).' ('.BitrixTasksUI::formatTimezoneOffsetUTC($userTZOffset).')',
				"DISPLAY" => "COLUMN",
				"WIDTH" => 120,
			);
		}
		if($task['DESCRIPTION'])
		{
			$description = htmlspecialcharsbx($task['DESCRIPTION']);
			if(mb_strlen($description) > 100)
			{
				$description = mb_substr($description, 0, 100).'...';
			}

			$gridRows[] = array(
				"NAME" => Loc::getMessage('TASKS_TASK_ENTITY_DESCRIPTION_FIELD').':',
				"VALUE" => $description,
				"DISPLAY" => "COLUMN",
				"WIDTH" => 120,
			);
		}

		if(count($gridRows))
		{
			$attach->AddDelimiter();
			$attach->AddGrid($gridRows);
		}
	}

	CIMChat::AddMessage(Array(
		"FROM_USER_ID" => $task['RESPONSIBLE_ID'],
		"TO_CHAT_ID" => $chatId,
		"MESSAGE" => $message,
		"ATTACH" => $attach,
	));
}