- Модуль: 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;
}