public static function StartCall($userId, $phoneNumber) { $phoneNormalized = CVoxImplantPhone::Normalize($phoneNumber); $userId = intval($userId); if ($userId <= 0 || !$phoneNormalized) { return false; } $call = VI\CallTable::add(array('CALL_ID' => 'temp.' . md5($userId . $phoneNumber) . time(), 'USER_ID' => $userId, 'CALLER_ID' => $phoneNormalized, 'STATUS' => VI\CallTable::STATUS_CONNECTING, 'DATE_CREATE' => new FieldType\DateTime())); $viHttp = new CVoxImplantHttp(); $result = $viHttp->StartOutgoingCall($userId, $phoneNumber); VI\CallTable::update($call->GetId(), array('CALL_ID' => $result->call_id, 'ACCESS_URL' => $result->access_url, 'DATE_CREATE' => new FieldType\DateTime())); self::SendPullEvent(array('COMMAND' => 'outgoing', 'USER_ID' => $userId, 'PHONE_NUMBER' => $phoneNormalized, 'CALL_ID' => $result->call_id, 'CALL_DEVICE' => 'PHONE', 'EXTERNAL' => true)); return $result ? true : false; }