Online rezervace letenek v lepším balení

1. 3. 2007
Doba čtení: 6 minut

Sdílet

Autor: 29
V rámci veletrhu Holiday World představila cestovní agentura Asiana Global travel service vylepšení rezervačního systému SuperLetuska.cz, tzv. automatický ticketing. Jak funguje, co nabízejí ostatní rezervační systémy a jak vlastně vypadá aktuální nabídka na českém trhu online rezervací?

Novinkami na Superletuska.cz jsou především akční nabídka s aktuální dostupností volných míst, grafické zobrazení kalendářů, volba pojištění (např. proti stornu letenky), zobrazení celkové ceny již v druhém kroku a verze systému pro korporátní klienty. Systém akceptuje karty typu Mastercard, VISA, American Expres, Diners club a JCB.

Od přání až k vytištění

Vytištění letenky je součástí rezervačního procesu a letenka je bez zásahu lidského operátora okamžitě zaslána po provedení platby na e-mail klienta. Klient si najde svůj let, zarezervuje a uhradí jej kreditní kartou a na závěr obdrží kód rezervace a zároveň elektronickou letenku, informoval IT online project manager Štefan Novosad, který letopočet 2007 v podání Asiany označil za rok vývoje nových funkcionalit. Pro odbavení na letišti stačí pasažérovi následně pouze doklad totožnosti. Letuska.cz v současnosti umožňuje rezervaci letenek více než 800 leteckých společností. Automatické vystavení letenky v nepřetržitém provozu však prozatím funguje pouze u linek ČSA. Může to být jeden z prvních kroků, jak využít alespoň části možností, které nabízí online médium. Zájemci o cestování letadlem dosud naráželi na často nekompletní nabídku, zobrazování neúplných cen nebo na nedostatečný výběr platebních možností. Úspora leteckých společností i zákazníka, který si letenku sám vytiskne, se pohybuje v řádech stovek korun.

Vybrané tuzemské online rezervační systémy

Konkurence nespí

Vývoj se nezastavuje ani v dílnách dalších hráčů. O pozici jedničky na trhu se přitom Asiana přetahuje verbálně i v reálu se Student Agency, resp. jejím rezervačním systémem Kralovna.cz. Student Agency, označovaná za největšího prodejce letenek v ČR, nabízí ve svém rezervačním systému kompletní cenovou nabídku leteckých společností, aktuální akční ceny do celého světa a vyhledává nejvýhodnější možnosti na několik dnů najednou. Loni v létě zařadila do své nabídky také online rezervaci pojištění. Za zády má přitom Evropskou cestovní pojišťovnu. Uzavření pojistky trvá pouhých pár sekund, vyzdvihla přednost manažerka prodeje letenek Student Agency Věra Buchtová. Cena komplexního pojištění až na 24 dní činí 490 korun pro Evropu a 990 korun pro svět. Možné je současně pojištění na storno letenky a ztrátu a poškození zavazadla.

Větší komfort cestující veřejnosti slibuje do budoucnosti i národní dopravce České aerolinie (ČSA). Ke konci letošního prvního kvartálu slibují ČSA rozšíření nabídky forem úhrad za online nákup letenek a výrazné zvýšení bezpečnosti při placení s využíváním moderního standardu 3Dsecur. Později nabídneme také možnost využít převody z účtů formou internetbankingu, inkasa apod. Počítáme také se zjednodušením kroků rezervace a placení letenky. ČSA letos zavedou možnost změnit si online rezervaci bez nutnosti kontaktovat prodejní místo, shrnuje očekávané vymoženosti Daniela Hupáková, tisková mluvčí ČSA, které spolupracují s rezervačními systémy Amadeus, Galileo, Sabre i s aliančními partnery SkyTeamu – například s Air France, KLM apod.

Vybrané zahraniční online rezervační systémy

Odbavme se online!

Jedním z trendů současnosti na letištích se stává tzv. internetové odbavení, které vedle online rezervace konkrétního místa a zaplacení letenky umožní pasažérovi vytištění letenky a zkrácení cesty k odletovému východu. Po Air France, British Airways, KLM, SN Brussels a Weiss zavedl novinku před několika týdny nízkonákladový dopravce easyJet a přípravy finišují v ČSA. V nejbližší době bude kromě možnosti rezervace a zaplacení letenky nabízet online odbavení 24 hodin před odletem, tzv. web check-in, potvrzuje Daniela Hupáková. Dostupné informace hovoří o květnovém termínu.

Dynamicky v balíčku

Inspirace v podobě párování dvojice souvisejících rezervací přichází ze Slovenska. Agentura Pelikan.sk připravuje spustit pro český trh jako první nezávislá CK světový standard v rezervaci letenek a ubytování – dynamic packaging – balíčkování. Dosud měli zákazníci možnost výběru letenky a ubytování zvlášť, což znamenalo nadvakrát zadávat datumy, místo příletu, počet osob, jména cestujících, dvojnásobný čas strávený čekáním na odpověď a často i využití služeb dvou různých dodavatelů. Dynamic packaging za několik sekund vyhledá kombinaci nejvýhodnějšího letu a ubytování. Ušetří nejen čas, ale především peníze a zákazníkovi dá prostor na řešení přesně podle jeho představ, uvádí novinku Tatiana Kyselová, CEO pelikan.cz. Šíření podobných inovací je podle ní determinováno nejen penetrací Internetu, ale i jinými faktory, např. větším rozšířením kreditních karet.

Podobný servis (nákup ubytování spolu s letenkou) poskytují od listopadu také ČSA, s tzv. nákupním košíkem (rezervace letenky, hotelu, automobilu nebo vstupenek na kulturní akce v daném místě) přišly na podzim British Airways.

Superletuska.cz
  • start 14. února 2006
  • online rezervace letenek, aut, pojištění, hotelů
  • napojení na více rezervačních systémů – Galileo a LowFare
  • online platba zajištěna přes 3D secure systém
  • přenášení informací z jednotlivých konektorů pro použití při další rezervaci

zdroj: Asiana Global Travel Service



Letuska.cz
  • spuštění nového vzhledu 13. listopadu 2006 včetně nového rezervačního systému
  • více než 110.000 regis­trovaných uživatelů
  • 1496 provizních prodejců
  • leden 2007 – více než 176 tisíc návštěvníků (statistika Google Analytics)

zdroj: Asiana Global Travel Service

V rytmu hudby budoucnosti

Moderní vize, jako např. ta od společnosti Siemens Business Services, počítají s biometrickou identifikací cestujících. Snímání otisků jejich prstů a následné uložení údajů na palubní kartu lze provádět nejen na letištních terminálech, ale také prostřednictvím Internetu. V dalším kroku si cestující stáhne do mobilu nebo počítače odbavovací program, připojí se k rezervačnímu systému a po volbě obdrží do mobilu čárový kód coby letenku.

Střídmějším řešením je tzv. easyJet a Windows Vista interaktivní okénko na ploše Windows osobního počítače. Umožní např. rezervaci a zakoupení letů, provádění změn, informace o navazující dopravě v nebo z místa, zapůjčení vozu, ubytování atd.

Už nejen letadla

Asiana současně představila i inovovaný systém Dores zajišťující rezervaci autobusových jízdenek na portále Megabus.cz (viz obrázek). Novinkami jsou efektivní využití obsazenosti autobusu, sledování vytíženosti jednotlivých spojů a odbavování cestujících online. Od 1. ledna je provozu beta verze, testovací fáze by měla probíhat do konce února, uvedl na Holiday World produkt manager Dores Fredy Stengl.

České dráhy odstartovaly internetový prodej jízdenek (zatím pouze pro tzv. vlak vyšší kvality – SuperCity, InterCity a EuroCity) na konci roku 2005. Objem prodeje zatím přesáhl hranici deseti tisíc jízdenek.

CIF25_SE_terc

Schéma vazeb v novém portále Megabus.cz

Schéma vazeb v novém portále Megabus.cz; zdroj: Asiana Global Travel Service

Co nám brání?

Překážkou zabraňující ještě rychlejšímu šíření kvality v rezervačních systémech zůstává ve srovnání se světem větší rozšíření v používání kreditních karet. Zároveň se stále ještě příliš nevžila ale ani samotná možnost obstarávat letenky prostřednictvím Internetu. Ve světě se podle údajů společnosti SITA takto prodá téměř 30 procent letenek, v ČR jde pouze o zhruba deset procent. Pohledy do budoucnosti jsou optimističtější. Průzkum British Airways z loňského srpna zjistil, že 98 procent lidí využívá Internet k plánování a organizaci dovolené. Nejvíce je zajímají informace o cílových zemích, porovnání cenové nabídky a rezervují a nakupují cestovní služby. Největší výhodou při plánování cestování prostřednictvím Internetu je pro 42 procent respondentů rychlost a snadnost přístupu k informacím, 28 procent oceňuje možnost srovnání cen a nabídek a 26 procent dotázaných preferuje celkové pohodlí při organizaci cesty.

Kupujete si letenky přes Internet?

Autor článku

Autor je redaktorem magazínu Marketing&Media....
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »