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