• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_rest.php
  • Класс: CIMRestService
  • Вызов: CIMRestService::chatCreate
static function chatCreate($arParams, $n, CRestServer $server)
{
	$arParams = array_change_key_case($arParams, CASE_UPPER);

	if (isset($arParams['USERS']))
	{
		if (is_string($arParams['USERS']))
		{
			$arParams['USERS'] = CUtil::JsObjectToPhp($arParams['USERS']);
		}
		if (!is_array($arParams['USERS']))
		{
			$arParams['USERS'] = [];
		}

		$arParams['USERS'] = array_filter(array_values($arParams['USERS']));
		foreach ($arParams['USERS'] as $uid)
		{
			if (!is_integer($uid) && !is_string($uid))
			{
				throw new BitrixRestRestException("Parameter USERS has wrong type", "INVALID_FORMAT", CRestServer::STATUS_WRONG_REQUEST);
			}
		}
	}
	else
	{
		$arParams['USERS'] = [];
	}

	$add = [
		'TYPE' => $arParams['TYPE'] == 'OPEN' ? Chat::TYPE_OPEN : Chat::TYPE_GROUP,
		'USERS' => $arParams['USERS'],
	];

	if (isset($arParams['AVATAR']))
	{
		$add['AVATAR'] = $arParams['AVATAR'];
	}
	if (isset($arParams['COLOR']))
	{
		$add['COLOR'] = $arParams['COLOR'];
	}
	if (isset($arParams['MESSAGE']))
	{
		$add['MESSAGE'] = $arParams['MESSAGE'];
	}
	if (isset($arParams['TITLE']))
	{
		$add['TITLE'] = $arParams['TITLE'];
	}
	if (isset($arParams['DESCRIPTION']))
	{
		$add['DESCRIPTION'] = $arParams['DESCRIPTION'];
	}

	if (BitrixImUser::getInstance()->isExtranet())
	{
		$add['USERS'] = BitrixImIntegrationSocialnetworkExtranet::filterUserList($add['USERS']);
	}
	else
	{
		if (isset($arParams['ENTITY_TYPE']))
		{
			$add['ENTITY_TYPE'] = $arParams['ENTITY_TYPE'];
		}
		if (isset($arParams['ENTITY_ID']))
		{
			$add['ENTITY_ID'] = $arParams['ENTITY_ID'];
		}
	}

	global $USER;
	$userId = $USER->GetId();
	if ($server->getMethod() == "imbot.chat.add")
	{
		$userId = self::getBotId($arParams, $server);
	}

	$CIMChat = new CIMChat($userId);
	$chatId = $CIMChat->Add($add);
	if (!$chatId)
	{
		throw new BitrixRestRestException("Chat can't be created", "WRONG_REQUEST", CRestServer::STATUS_WRONG_REQUEST);
	}

	return $chatId;
}