Řízení příchozích hovorů z webové stránky

Podrobnější technické novinky a vůbec novinky a postřehy z VoIP.
helmut.niederman
Příspěvky: 1012
Registrován: stř 10. črc 2013 21:40:28

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od helmut.niederman »

kovik píše:Mne to kredit cte dobre.
Mne to čte kredit 3312,- Kč ale ve skutečnosti je můj kredit pod hranicí 10,- Kč. Ale tu chybu uvidíte vlastně uslyšíte :D pouze tehdy, pokud si do nastavení účtu / vzdálené řízení přes web zadáte URL adresu napřiklad http://webzdarma.cz/Odorik.php.
A váš Odorik.php obsahuje tento php script

<?php
if ($_GET["dtmf"] =="111") {
echo "dial:800123456";
}
elseif ($_GET["dtmf"] =="222") {
echo "dial:*0811";
} else {
echo "dial:0";
}
?>

Tedy po dovolání se na nomandické či geografické číslo u kterého máte paralení zvonění na číslo *0071 a nezmáčknete žádný DTMF, mělo by vám to přečíst kredit 331xx Kč. Vyzkoušejte si to.
helmut.niederman
Příspěvky: 1012
Registrován: stř 10. črc 2013 21:40:28

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od helmut.niederman »

michaels píše:
Díky, vyzkouším, jen by mne zajímal ten poslední řádek echo "dial:".$_GET["to"]; nemělo by tam být telefonní číslo nebo to tak má být záměrně ? nebo ten výraz $_GET["to"] mám smazat na tom posledním řádku a za slovem dial mám doplnit telefonní číslo ? Potřebuji poradit, díky.
Prosím, použij trochu hlavu a logiku .... já myslím, že tento skript je dost jasný a jednoduchý na to abys to sám dokázal ...
Tak jsem si lámal hlavu a přišel jsem na to, že za dvojtečkou u slova dial je uvozovka. A když tam před tu uvozovku zadám telefonní číslo například 800 260 260 viz script
<?php
if ( $_GET["from"] =="00420602123456") {
echo "dial:800123456";
} elseif (preg_match($_GET["from"],"^00420[2-5,9]{6}$")) {
echo "dial:.....";
} else {
echo "dial:800260260".$_GET["to"];
}
?>
Znamená to tedy, že když se dovolám z pevné linky měl by ten hovor se směrovat na číslo 800 260260. Jenže já jsem zkoušel ještě jednu věc tu hromadu teček za sebou nahradit číslem ale ono to nefungovalo jedná se o tento příkaz

Kód: Vybrat vše

} elseif (preg_match($_GET["from"],"^00420[2-5,9]{6}$")) {
  echo "dial:.....";
a ten jsem nahradil takto :
} elseif (preg_match($_GET["from"],"^00420[2-5,9]{6}$")) {
echo "dial:800260260";
Ale nefungovalo to, a pomohl až ten poslední řádek } else {
echo "dial:800260260".$_GET["to"];

Asi tak to má být, že ?

A teď taková prosbička, možná docela těžký oříšek. Jak naprogramuji PHP script, tak abych si definoval z kterých čísel se dá dovolat na mobilní číslo a z určitých čísel na zelenou linku ?
Například mi jde o to, že bych si chtěl vytvořit PHP script tak, že lidé dovolající se ze sítě O2 ( prefix 720, 721,.. až 729, dále prefix 602, 601, 606, 607 ) by se dovolali na jedno číslo například zelenou linku 800 123456, lidé kteří volají ze sítě T-mobile všechna celulární čísla patřící T-mobile ( prefix 730 až 739, dále prefixy 603, 604, 605 ) by se dovolali na jiné číslo zelené linky například 800 737373 a lidé kteří volají ze sítě Vodafone alias všechna celulární čísla patřící Vodafone ( prefix 608, 770 až 779 ) by se dovolali na číslo zelené linky například 800 77 00 77. Odmysleme si virtuály a přenositelnost čísla, jde mi tedy principálně jak vytvořit šablonu prefixů čísel které celulárně patří jednomu ze tří síťových operátorů podle číslovacího plánu ČTU a jak tedy vytvořit to směrování podle té šablony ? Jak toto naprogramovat v php ? Uff, děkuji za rady :oops:

PRO ODORIKA : Všiml jsem si, že ode dneška nefunguje spojení na jakoukoliv zelenou linku pokud použiji tento php script pro volání z pevný linky viz řádek else if preg match a ani nefunguje Nula pro přečtení kreditu pokud použiji tento PHP script, který uploaduji na Webzdarma, který samozřejmě podporuje PHP, v nastavení účtu Odorik - vzdálené řízení přes web samozřejmě už nic nenastavuji, a včera to fungovalo a dnes už to nefunguje. Když místo čísla 800770077 dosadím Konferenci *07xxx ( kde xxx je heslo ) tak to funguje. Ale jinak oproti včerejšku to přestalo fungovat. Naopak spojení z mobilu viz kupříkladu tento příklad volání z čísla 603 603 603 se spojí se zelenou linkou O2 ale volám-li z pevný linky, tak to hlási, že " Bohužel Odorik neumožňuje volání na vámi volené telefonní číslo..... " Jedná se o tento script.

Kód: Vybrat vše

<?php
if ( $_GET["from"] =="00420603603603") {
  echo "dial:800123456";
} elseif (preg_match($_GET["from"],"^00420[2-5,9]{6}$")) {
  echo "dial:.....";
} else {
  echo "dial:800770077".$_GET["to"];
}
?>
EDIT : Tak se omlouvám, to není chyba Odoriku, to je chyba ve špatné interpunkci v rámci php scriptu, sypu si popel na hlavu :oops: :( Na řádku
echo "dial:800770077".$_GET["to"] nesmí být za uvozovkou tečka ale středník viz echo "dial:800770077"; $_GET["to"] Pokud tam tedy je ta tečka tak to pak ve finále zahlásí " Bohužel Odorik neumožňuje volání na vámi volené telefonní číslo..... ", jakmile je to nahrazeno středníkem, hovor se normálně spojí, ale já to nechápu, ještě včera to fungovalo a nevadila mu ta tečka a teď jsem intuitivně tam vložil středník a zadařilo se. Fakt kroutím hlavu, jak je to možné ? :shock: Ale i tak jsem rád, že jsem se něčemu novému přiučil :idea:
Uživatelský avatar
michaels
Příspěvky: 143
Registrován: sob 18. led 2014 13:41:32

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od michaels »

Kód: Vybrat vše

echo "dial:800260260".$_GET["to"];
No je vidět, že jsi to nepochopil. Nauč se nejdřív nějaké základy PHP, pak se pouštěj do "větších akcí".
Obávám se, že jsi ani nepochopil to základní v PHP.
Takže ještě jednou a naposledy:

URL co zadáš do toho NVR tak toto URL zavolá Odorik a přidá k němu parametry příchozího hovoru čili:
blablabla/Odorik.php?from=00420799799081&to=00420533533005&dtmf=60200&line=300100
from = číslo které volá
to = číslo kam se volá
dtmf = případný DTMF kod
line = linka odoriku

Tyto proměné (při každém hovoru jsou tyto hodnoty jiné podle aktuálního stavu) lze v PHP číst a to tak že např. from je v PHP proměnné $_GET["from"];
Jak tyto proměnné použiješ to už je na tobě.

Omlouvám se, ale s tvými nulovými základy PHP už nemám sílu v této diskusi pokračovat.

přeji hodně zdaru a doporučuji třeba knihu od Jirky Koseka
Uživatelský avatar
kovik
Příspěvky: 505
Registrován: stř 16. lis 2011 11:07:52

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od kovik »

Dobry den,
chybne oznamovani kreditu opraveno.
Splichal
Příspěvky: 5
Registrován: čtv 26. zář 2013 7:38:23

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od Splichal »

Snazim se vyuzit teto funkce pro hlasove ohlaseni volajiciho pomoci Raspberry Pi,ktere vycte z pole "from" cislo a pak prehraje odpovidajici *.wav .Pro tento ucel nejdrive zacne zvonit VOIP brana ktera da impuls pro precteni ulozeneho cisla a pak mam nastavene zpozdne vyzvaneni ,kdy po 2s zacne zvonit Gigaset.Problem je,ze toto spozdene vyzvaneni zrejme nahradi u linek ktere nemaji verejne cislo ,ale jen cislo ve tvaru *686xxx cislem na ktere je volano. Tzn. ,ze pak vlastne nevidim kdo vola,ale vidim sve vlastni cislo. Neda se nejak nastavit ,aby se u tohoto spozdeneho zvoneni zobrazovalo / predavalo i toto kratke cislo?
Uživatelský avatar
kovik
Příspěvky: 505
Registrován: stř 16. lis 2011 11:07:52

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od kovik »

Dobry den, cislo by melo byt u obou presmerovani stejne. Prosim poslete cislo takoveho hovoru, proverim.
Dekuji
Splichal
Příspěvky: 5
Registrován: čtv 26. zář 2013 7:38:23

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od Splichal »

Dobry den,
v pripade,ze mam nastaveno to spozdene vyzvaneni mam pak ve vypisu hned dva hovory.Navic ,pokud volam na toto cislo z mobilu,zda se ,ze se
hovor prijme / nebo alespon zacne uctovat ihned pri zazvoneni - i kdyz hovor jeste nikdo na zadnem cisle neprijal...To by mi ale vadilo nejmene ;-)
Takze ID hovoru kdy se nepredalo puvodni ,kratke cislo by mela byt : 192352064 a 192352067 .
Ted uz jsem zase to odlozene zvoneni zrusil, ale pokud by to z techto ID nebylo patrne, opet muzu nastavit puvodni stav.
Dekuji za ochotu !
osmdesát
Příspěvky: 168
Registrován: úte 19. srp 2014 14:24:46

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od osmdesát »

Tuhle funkci hodnotím také jako velmi dobrý nápad. Ale to je dobrý nápad jen pro nás technomily, bastlíře a další divnotvory :lol:
Není to nic pro masy.

S tím, jak zvenčí oslovit něco v "internetu věcí", je problém. Adresy IPv6 jsou hezká věc, ale myslím, že bude vždy tendence ve finále adresy těch "věcí" skrývat, kvůli hackerům a tak. Nehledě na to, že ty "věci" budou stavěné tak, aby komunikovaly se serverem výrobce a nedaly se ovládat přímo.

Takže jak udělat, aby šlo "věc" oslovit zvenčí? Zařízení se musí přihlásit na server a zahájit s ním trvalé spojení. Tak funguje zmíněný protokol SIP nebo jabber. Protokol http na tento režim není stavěný. Tedy je a není. Existují způsoby, jak docílit trvalého spojení - od r. 2011 existuje technologie Websockets + HTML5, která tohle řeší nad klasickým http. Ale i dříve byly způsoby, např. Ajax push. Ale ajax je prohlížečová záležitost, my nepotřebujeme prohlížeč, ale appku, která spojení může uzavřít jakékoliv. Spíše je problém, jak to udělat v php, které funguje na principu vykonej a skonči (vykonej a skonej :D). Tedy jak jej přinutit, aby spojení udržoval, nějaký nekonečně běžící php skript. I to se dá, ale chce to mít trochu kontrolu nad konfigurací php serveru. Pokud máme přístup k os serveru, pak samozřejmě není problém na něm spustit cokoliv, co je ochotno spojení udržet stále.
Obecně ale reálnočasový internet bude v budoucnu stále zajímavější, takže se dá čekat i u servrových skriptovacích jazyků nějaký pokrok tímto směrem.

Druhá možnost je polling - "věc" bude v nějakých intervalech načítat stránku s daty, která jí řeknou, co má nebo nemá udělat. Pokud nezáleží na rychlosti reakce a má-li informace pár bajtů, je to taky schůdné řešení.
xsouku04 píše: Zařízení by šla pak udělat webová stránka na libovolném hostingu, co podporuje php. Ten web by prostě komunikoval s oným chytrým zařízením přes SIP. Php skript by tak nemusel mít svoji vlastní veřejnou ip adresu a mohl by běžet na jakémkoli levném/zdarma hostingu.

Pokud by se chytré zařízení mělo řídit přes IVR menu přes telefon, asi nezbývá, než na ono chytré zařízení nainstalovat Asterisk. Dnes je možné nainstalovat Asterisk i na obyčejný router s openWRT v ceně za 700 Kč. Problém je opět jen v tom, že to není pro každého úplně triviální.

Jiné řešení by mohlo být zvolit jiný podobný protokol jako je SIP. Myslím třeba jabber, pro který je snad více dostupných knihoven.
Problém je právě s tím, že na libovolném zadarmovém php hostingu nedocílím nekonečného běhu php, tedy nějakého trvalého spojení, a je úplně jedno, jestli je to sip nebo http. Jedině, že by se zařízení připojilo přes sip přímo na odorik a komunikovat s ním přímo. Ale pak k tomu není potřeba tahle funkce volání url.
osmdesát
Příspěvky: 168
Registrován: úte 19. srp 2014 14:24:46

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od osmdesát »

Anebo jsem to pochopil špatně. Možná máte na mysli, že ten php skript by přes sip nebo jabber poslal nějakou zprávu zařízení přihlášenému na nějaký sip nebo jabber server...
osmdesát
Příspěvky: 168
Registrován: úte 19. srp 2014 14:24:46

Re: Řízení příchozích hovorů z webové stránky

Příspěvek od osmdesát »

Protože mě tahle věc také zajímá, hledal jsem a objevil tohle:
https://www.zdrojak.cz/clanky/html5-eve ... pretrzite/
Zasílaná data mají jednoduchou strukturu. Zajímavá je na tom serverrová strana, tedy znásilnění php-skriptu, aby běžel déle, pomocí funkce sleep ve smyčce, a změna na Content-Type: text/event-stream.
Klientskou stranu by pro programátora "věcí" už nemělo být problém naprogramovat. Otevřít spojení a čekat na přicházející data. V případě odčasování nahodit spojení znova. Je tedy dobré mít na serveru možnost nastavit nějaký dlouhý php-timeout.
Zkusil jsem to na hostingu sweb.cz, jelo to 6 minut a pak jsem to zavřel sám.
Akorát se to v různých prohlížečích chová různě.
Odpovědět