Snažíme se, aby všechny základní funkce běžné pobočkové ústředny byly součástí přímo služeb Odorik.cz, a zákazníci tak byli ušetřeni tomu si pořídit, konfigurovat, zabezpečovat, zálohovat a udržovat vlastní pobočkovou ústřednu. Výhody a nevýhody vlastní pobočkové ústředny jsou probrány v článku na naší wiki.
Několikrát jsem se setkal se zákazníky, nadšenými z projektů https://www.twilio.com/, https://www.plivo.com/, https://www.nexmo.com/ , přestože naprostou většinu funkcionality, kterou potřebovali, bylo možné dosáhnout i s Odorik.cz. Tyto služby prý nabízejí navíc možnost řídit logiku směrování hovorů a IVR pomocí nezávislého API, které si může naprogramovat zdatný programátor v libovolném jazyce, aniž by znal detaily ohledně toho, jak volání přes internet vlastně funguje. Projekty twilio a plivo účtují relativně nízké poplatky, na druhou stranu ale skoro a doslova za vše. Za příchozí hovory, za odchozí hovory, za nahrávání hovorů, za telefonní číslo, za šifrování hovoru, za slušnou podporu... A vypadá to, že vše zaokrouhlují na celé minuty... Pokud rostete a ceny se stávají neúnosné nezbývá než se potupně bez možného pozitivního výsledku hádat se s jejich obchodníkem, aby vám např. konečně začali účtovat po vteřině.
Řešení na podobném principu, kdy by příchozí hovory bylo možné řídit pomocí aktivního API, Odorik.cz zatím nenabízí. Nebyla po něm zatím dostatečná poptávka. Otázka zní, je to ale potřebné? Do jaké míry?
Jsou nějaké chyby a nedokonalosti, které mají tyto "mračna" a kterých by se měl/mohl Odorik vyvarovat či to udělat lépe?
Pokud mátě někdo již zkušenost se službami typu Twilio či Plivo, podělte se. Jde mi o o nějakou zpětnou vazbu. Pokud si procházím stránky Twilia, je pro mne těžké rozlišit, co je opravdu dobrá věc a co jen příliš abstraktní marketingová mlha či bublina. Příliš abstraktní mi připadá leccos. Také je samozřejmě možné některou funkcionalitu vylepšit a převzít. Využije to ale dostatečné množství zákazníků nebo je množství zákazníků schopných využít tyto výhody poměrně malé a Twilio a Plivo nás stejně převálcuje svými PR články, marketingem a všeobecnou známostí na trhu bez ohledu na skutečnou kvalitu produktu?
V každém případě je možné služby Odorik.cz a těchto "mračen" kombinovat. "Mračna" nabízí telefonní čísla z celého světa za relativně rozumný měsíční paušální poplatek,, pravda s poplatkem za každou minutu příchozího hovoru.
Odorik vám už nyní podobné řešení může také nabídnout, i když na jiném principu.
Abych nemluvil příliš abstraktně, uvedu příklad ukázkové aplikace pro realitní kancelář napsanou v jazyce ruby. Aplikace si vyžádá zadání čísla nemovitosti. Poté o nemovitosti přečte příslušné informace. Dále aplikace může zaslat kontakty či informace pomocí SMS jak volajícímu tak majiteli nemovitosti.
Aplikace je jen mnou napsaná kostra, se kterou programátoři z realitní kanceláře neměli žádné potíže, třebaže programovací jazyk ruby ani Asterisk předtím nikdy nepoužívali.
Velká výhoda tohoto přístupu je v tom, že skript je spuštěn s novým hovorem, načte si všechny potřebné informace, hovor řídí po celý "jeho život" a skončí spolu s hovorem.
Veškeré informace a stavy hovoru je tak možné ukládat do lokálních proměnných, samozřejmě je možné je logovat nebo číst či ukládat i do databáze. Lokální proměnné ve scriptu mají stejnou životnost jako celý hovor. Větvení možností či cykly hovorů např. v IVR jsou velmi přirozené, hovor běží tak, jak interpret čte jednotlivé řádky zdrojového kódu. Programátor má k dispozici veškeré nástroje a knihovny, co jsou v daném programovacím jazyku k dispozici, místo toho, aby byl nucen zkoumat neznámé a často nelogické zvyklosti konfiguračních souborů Asterisku.
Čitelnější verze se zvýrazněním syntaxe.
Kód: Vybrat vše
#!/usr/bin/ruby
load "/var/lib/asterisk/agi-bin/agi.rb"
#
begin
begin
agi=Agi.new
volajici=agi.av.callerid
volany=agi.av.extension
agi.exec("exec answer")
# příklad generování zvukového souboru
# cd /var/lib/asterisk/sounds
# ./texty.sh zadejte_prosim_kod_nemovitosti "Dovolali jste se do MojeReality. Zadejte prosím kód nemovitosti, o kterou máte zájem."
cislo_nemovitosti=agi.exec("GET DATA zadejte_prosim_kod_nemovitosti 15000 4").result
agi.verbose("uzivatel zadal nasledujici cislo nemovitosti: #{cislo_nemovitosti}")
if cislo_nemovitosti!="9999" then
# ./texty.sh chybny_kod_nemovitosti "Zadali jste chybný kód nemovitosti."
agi.exec("STREAM FILE chybny_kod_nemovitosti ''")
cislo_nemovitosti=agi.exec("GET DATA zadejte_prosim_kod_nemovitosti 15000 4").result
end
# zjistim informace o nemovitosti z api a přečtu
# ./texty.sh 9999 "Je to Byt 3 plus 1 Nové sady Brno."
agi.exec("STREAM FILE dev/#{cislo_nemovitosti} ''")
# pošlu SMS
agi.close
rescue StandardError
Agi.logException($!)
agi.close
end
rescue SignalException
agi.close
end
Denní náklady na provoz virtuálu jsou cca 1,5 Kč/den, při vyšším počtu hovorů rostou náklady jen mírně. Možné je využít veškerou funkcionalitu, co Asterisk nabízí, ale vyhnout se obtížím s tradičně nepřehlednou konfigurací Asterisku a možným problémům se zabezpečením - asterisk neběží na veřejné adrese. Programovat agi scripty je možné v libovolném programovací jazyce a to pro programátory přehledným a přirozeným způsobem bez zbytečné abstrakce. Viz dokumentace možností agi scriptů - http://www.voip-info.org/wiki/view/Aste ... GIcommands. Virtuál na 4smart může obsahovat rovnou databázi i web, nebo je možné k databázi přistupovat vzdáleně, či si potřebné informace načítat přes k tomu vytvořené API.
Přestože Odorik.cz běžně asistenci s konfigurací vlastních pobočkových ústředen nenabízí, podobná konfigurace je výjimkou. Vše je totiž jednoduché, krátké a přehledné, záhadné potíže se prostě nekonají. Tedy v případě potřeby můžeme asistovat a se zkušeností se podělit.