• Модуль: socialservices
  • Путь к файлу: ~/bitrix/modules/socialservices/classes/general/zoom.php
  • Класс: CSocServZoom
  • Вызов: CSocServZoom::createConference
public function createConference($params)
{
	$result = new Result();
	$conferenceData = null;
	if (!$this->getEntityOAuth()->GetAccessToken())
	{
		return $result->addError(new Error('Could not get oauth token'));
	}

	if (isset($params['ENTITY_TYPE_ID']))
	{
		$entityTypeId = $params['ENTITY_TYPE_ID'];
		unset($params['ENTITY_TYPE_ID']);
	}

	if (isset($params['ENTITY_ID']))
	{
		$entityId = $params['ENTITY_ID'];
		unset($params['ENTITY_ID']);
	}

	$requestConferenceResult = $this->getEntityOAuth()->requestConference($params);
	if(!$requestConferenceResult->isSuccess())
	{
		return $result->addErrors($requestConferenceResult->getErrors());
	}
	$conferenceData = $requestConferenceResult->getData();

	$userData = $this->getEntityOAuth()->getCurrentUser();
	if(!is_array($userData))
	{
		return $result->addError(new Error('Cannot get user data'));
	}
	$conferenceData['externalUserId'] = $userData['id'];
	$conferenceData['externalAccountId'] = $userData['account_id'];

	$conference['join_url'] = $this->attachPasswordToUrl($conferenceData['join_url'], $conferenceData['encrypted_password']);

	$startTimeStamp = DateTime::createFromFormat(DATE_ATOM, $conferenceData['start_time'])->getTimestamp();
	$startDateTime = DateTime::createFromTimestamp($startTimeStamp);

	$params = [
		'ENTITY_TYPE_ID' => ($entityTypeId ?? self::EMPTY_TYPE),
		'ENTITY_ID' => ($entityId ?? 0),
		'CONFERENCE_EXTERNAL_ID' => $conferenceData['id'],
		'CONFERENCE_URL' => $conferenceData['join_url'],
		'CONFERENCE_PASSWORD' => $conferenceData['encrypted_password'],
		'CONFERENCE_CREATED' => (new DateTime()),
		'CONFERENCE_STARTED' => $startDateTime,
		'DURATION' => $conferenceData['duration'],
		'TITLE' => $conferenceData['topic'],
		'SHORT_LINK' => $this->getShortLink($conferenceData['id']),
	];

	$addResult = ZoomMeetingTable::add($params);
	if (!$addResult->isSuccess())
	{
		return $result->addErrors($addResult->getErrors());
	}
	$conferenceData['bitrix_internal_id'] = $addResult->getId();

	return $result->setData($conferenceData);
}