• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/call/call.php
  • Класс: BitrixImCallCall
  • Вызов: Call::createWithEntity
static function createWithEntity($type, $provider, $entityType, $entityId, $initiatorId)
{
	$instance = new static();
	$instance->type = $type;
	$instance->initiatorId = $initiatorId;
	$instance->provider = $provider;
	$instance->entityType = $entityType;
	$instance->entityId = $entityId;
	$instance->startDate = new DateTime();
	$instance->publicId = randString(10);
	$instance->state = static::STATE_NEW;

	$instance->associatedEntity = IntegrationEntityFactory::createEntity($instance, $entityType, $entityId);
	$instance->chatId = $instance->associatedEntity->getChatId();
	$instance->uuid = Util::generateUUID();
	$instance->secretKey = Random::getString(10, true);

	$instance->save();

	$instance->users = [];
	foreach ($instance->associatedEntity->getUsers() as $userId)
	{
		$instance->users[$userId] = CallUser::create([
			'CALL_ID' => $instance->id,
			'USER_ID' => $userId,
			'STATE' => CallUser::STATE_UNAVAILABLE,
			'LAST_SEEN' => null
		]);
		$instance->users[$userId]->save();
	}

	$instance->initCall(true);

	$event = new Event(
		'im',
		'onCallCreate',
		array(
			'id' => $instance->id,
			'type' => $instance->type,
			'initiatorId' => $instance->initiatorId,
			'provider' => $instance->provider,
			'entityType' => $instance->entityType,
			'entityId' => $instance->entityId,
			'startDate' => $instance->startDate,
			'publicId' => $instance->publicId,
			'chatId' => $instance->chatId,
		)
	);
	$event->send();

	return $instance;
}