DTMF, Odorik, GSM a Asterisk

Diskuze kolem nastavení a problémů s VoIP ústřednou Asterisk.
Zamčeno
jspudich
Příspěvky: 6
Registrován: úte 21. úno 2012 8:56:37

DTMF, Odorik, GSM a Asterisk

Příspěvek od jspudich »

Dobry den,

u Odoriku mam dve SIP linky, na obe mam pripojeny Asterisk. Moji snahou je ovladat Asterisk prostrednictvim telefonu, kterym se do nej dovolam. V zasade se jedna o pouziti aplikace READ:

Kód: Vybrat vše

exten => s/731XXXXXX, 1, Answer()
exten => s/731XXXXXX, n, senddtmf(12345678) ; test the DTMF path from Asterisk to the caller
exten => s/731XXXXXX, n, Read(INPUT)
exten => s/731XXXXXX, n, NoOp(User's input: ${INPUT})
Nastaveni obou Odorik linek v Asterisku je priblizne nasledujici:

Kód: Vybrat vše

[odorik_1]
type=friend
username=<username>
fromuser=<fromuser>
secret=<secret>
host=sip.odorik.cz
canreinvite=no
insecure=invite
context=incoming
dtmfmode=inband
;dtmfmode=rfc2833
disallow=all
allow=alaw
;allow=g729

Vyse uvedeny zpusob ovladani funguje, pokud se na svuj Asterisk dovolam ze sveho SIP telefonu (bez ucasti Odoriku).
Pokud pouziji jednu Odorik linku abych se dovolal na druhou Odorik linku (mam dve Odorik linky), vyse uvedeny zpusob ovladani take funguje.
Pokud ovsem volam pomoci GSM (T-mobile CZ), DTMF signalizace z Asterisku pres Odorik na mobilni telefon funguje (alespon ji slysim), v opacnem smeru vsak nikoliv:

Kód: Vybrat vše

  == Using SIP RTP CoS mark 5
    -- Executing [s@incoming:1] Answer("SIP/XXXXXX-0000003d", "") in new stack
    -- Executing [s@incoming:2] SendDTMF("SIP/XXXXXX-0000003d", "12345678") in new stack
    -- Executing [s@incoming:3] Read("SIP/XXXXXX-0000003d", "DSTN") in new stack
    -- User entered nothing.
Otazka zni, jak mam nastavit svuj Asterisk pripojeny na Odorik, aby bylo mozne "cist" DTMF signalizaci z mobilniho telefonu pomoci aplikace READ?

Zkousel jsem i jiny (nez inband) prenos DTMF signalizace v kombinaci se ztratovymi kodeky (ktere mam nainstalovane), ale bezuspesne.

Dekuji za jakoukoiv odpoved, ktera me posune blize k vyreseni problemu.
Jan Spudich
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: DTMF, Odorik, GSM a Asterisk

Příspěvek od xsouku04 »

Nastavení
dtmfmode=inband
nedoporučuji, to může být funkční jen pokud je použit kodek alaw.
Opravdu to nefunguje ani s dtmfmode=rfc2833 ?
Jako poslední klávesu musíte zmáčknout #, jinak se výstup neodešle a čeká do nekonečna. (tak jak to máte napsáno)

http://www.voip-info.org/wiki/view/Asterisk+cmd+Read
jspudich
Příspěvky: 6
Registrován: úte 21. úno 2012 8:56:37

Re: DTMF, Odorik, GSM a Asterisk

Příspěvek od jspudich »

Dobry den,

dekuji Vam za Vasi odpoved. RFC2833 jsem vcera take zkousel bezuspesne. Na zaklade Vasi odpovedi jsem to zkusil jeste jednou. Uspech se nedostavil, ale chovani je odlisne nez pri inband signalizaci. Pro nazornost uvadim obrazek, tel. cisla jsou zmenena:

Obrázek

Pri pouziti DTMF signalizace inband funguje cteni DTMF signalizace jak pro extension 400, tak i pro hovor prichozi po lince 416666. Toto chovani plati pri volani z analogoveho i ze SIP telefonu.

Pri pouziti DTMF signalizace rfc2833 funguje cteni DTMF signalizace pouze pro extension 400. Pro hovor prichozi po lince 416666 se signalizace DTMF precist neda. Toto chovani plati pri volani z analogoveho i ze SIP telefonu.

Nepovazuji se za odbornika na problematiku VoIP, nicmene si dovolim nasledujici spekulaci: pokud inband DTMF signalizace prichozi po lince od Odorik.cz funguje a rfc2833 DTMF siganlizace prichozi po lince od Odorik.cz nefunguje, myslim, ze "moje" Odorik.cz SIP linky 416666 a/nebo 417777 maji nastavenou inband DTMF signalizaci.

Nevim, zda to pomuze vyresit muj puvodni problem se ctenim DTMF signalizace prichazejici od T-mobile CZ, nicmene bych se chtel zeptat, zda je mozne nastavit na SIP linkach u Odorik.cz DTMF signalizaci rfc2833.

Dekuji za odpoved,
Jan Spudich
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: DTMF, Odorik, GSM a Asterisk

Příspěvek od xsouku04 »

Zdravím,
to že jen pře inband nastavení se senddtmf převede na pípání je logické.

http://www.voip-info.org/wiki/view/Asterisk+DTMF

DTMF se inbad i RFC2833 přenáší pomocí RTP streamu, tedy samotného hovoru, naprotitomu sip info je přenášeno pomocí sip hlaviček.
Nicméně, pokud se použije RFC2833 žádné pípání slyšet není (přestože je DTMF zakódováno do hlasových dat), leda že by to na pípání koncová strana opět převedla.

Zdá se že mi nezbývá nic jiného, než si podobnou konfiguraci vyzkoušet sám.

Nicméně máme několik zákazníků, kteří si pomocí hlasového menu vybírají pobočku s kterou si přejí spojit. Žádné hlášení o tom, že by něco přestalo fungovat nemáme.
T-mobile je lišák prokletý a je možné že vám ta dtmf přenosy zablokoval. Máte na číslo jaké voláte nějaký zvýhodněný tarif ? Jako třeba balíček neomezeného volání? Potom asi t-mobile nechce aby jste se přepojoval na různé klapky. Podle jejich marketingových představ máte tak volat jen jediné osobě.
Dobrý test by byl, kdyby jste číslo co přečte funkce read znovu přečetl pomocí funkce sayDigits.
http://www.voip-info.org/wiki/view/Aste ... +SayDigits
To číslo by jste mi mohl poslat emailem a já bych zkoušel testovat. Z různých sítí. Přinejhorším bych si to číslo mohl na chvíli poslat na nějaký svůj asterisk a testovat jestli tam mi bude funkce read fungovat dobře. Můžeme se domluvit takto?
Poslat to můžete např. na kontakt[zavináč]odorik.cz

Jakou máte verzi asterisku ?

Když to shrnu tak s využitím inband to funguje, s vyjímkou toho pokud voláte z mobilního telefonu. Zkusím v tomto ohledu něco u nás změnit.
jspudich
Příspěvky: 6
Registrován: úte 21. úno 2012 8:56:37

Re: DTMF, Odorik, GSM a Asterisk

Příspěvek od jspudich »

Dobry den,

na zaklade Vasi odpovedi jsem pokracoval v testech a rozsiril je dle nasledujiciho obrazku:

Obrázek

Bez ohledu na nastaveni DTMF signalizace na mych SIP linkach od Odorik.cz, aplikace READ neprecetla DTMF signalizaci prichazejici od volajiciho:

Kód: Vybrat vše

 == Using SIP RTP CoS mark 5
    -- Executing [s@incoming:1] Answer("SIP/417230-0000009e", "") in new stack
    -- Executing [s@incoming:2] SendDTMF("SIP/417230-0000009e", "12345678") in new stack
    -- Executing [s@incoming:3] NoOp("SIP/417230-0000009e", "DTMF signal sent - start dialing") in new stack
    -- Executing [s@incoming:4] Read("SIP/417230-0000009e", "DSTN") in new stack
    -- User entered nothing.
Rozdil v chovani nastal az pote, co Asterisk spustil obsazovaci ton (protoze cislo "neprecetene" aplikaci READ nelze vytocit, viz dialpln v obrazku):
  • Pokud je na SIP lince od Odorik.cz nastaveno inband, Asterisk zadnou DTM signalizaci prichazejici z druhe strany nezachyti
  • Pokud je na SIP lince od Odorik.cz nastaveno rfc2833, Asterisk DTM signalizaci prichazejici z druhe strany zachyti:

    Kód: Vybrat vše

      == Using SIP RTP CoS mark 5
        -- Executing [s@incoming:1] Answer("SIP/417230-0000009e", "") in new stack
        -- Executing [s@incoming:2] SendDTMF("SIP/417230-0000009e", "12345678") in new stack
        -- Executing [s@incoming:3] NoOp("SIP/417230-0000009e", "DTMF signal sent - start dialing") in new stack
        -- Executing [s@incoming:4] Read("SIP/417230-0000009e", "DSTN") in new stack
        -- User entered nothing.
        -- Executing [s@incoming:5] Dial("SIP/417230-0000009e", "SIP/@417230") in new stack
      == Using SIP RTP CoS mark 5
        -- Called SIP/@417230
        -- SIP/417230-0000009f is circuit-busy
      == Everyone is busy/congested at this time (1:0/1/0)
        -- Auto fallthrough, channel 'SIP/417230-0000009e' status is 'CONGESTION'
    [Feb 23 15:32:09] DTMF[14080]: channel.c:4062 __ast_read: DTMF begin '3' received on SIP/417230-0000009e
    [Feb 23 15:32:09] DTMF[14080]: channel.c:4072 __ast_read: DTMF begin passthrough '3' on SIP/417230-0000009e
    [Feb 23 15:32:09] DTMF[14080]: channel.c:3977 __ast_read: DTMF end '3' received on SIP/417230-0000009e, duration 280 ms
    [Feb 23 15:32:09] DTMF[14080]: channel.c:4017 __ast_read: DTMF end accepted with begin '3' on SIP/417230-0000009e
    [Feb 23 15:32:09] DTMF[14080]: channel.c:4032 __ast_read: DTMF end '3' detected to have actual duration 32 on the wire, emulation will be triggered on SIP/417230-0000009e
    [Feb 23 15:32:09] DTMF[14080]: channel.c:4039 __ast_read: DTMF end '3' has duration 32 but want minimum 80, emulating on SIP/417230-0000009e
    [Feb 23 15:32:09] DTMF[14080]: channel.c:4139 __ast_read: DTMF end emulation of '3' queued on SIP/417230-0000009e
    
Pokud jsem pochopil spravne Vas navrh, jde o to, ze na jedne ze svych Odorik.cz linek prectu zadanou signalizaci pomoci READ a prectene cislo prectu (vyslovim) zpet po lince tak, abyste mel kontrolu. Tuto konfiguraci do sveho dial planu pridam a detaily Vam poslu na kontakt[zavináč]odorik.cz.

Verze asterisku: 1.8

Dekuji Vam za Vasi pomoc a podporu, jiz mi z toho padaji zbytky vlasu ;)

Jan Spudich
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: DTMF, Odorik, GSM a Asterisk

Příspěvek od xsouku04 »

Tak jsem včera dostal mail, že to začalo fungovat. Jestli jsme něco měnili na naší straně.
Dnes jsem to ověřoval s kolegou. Neměnili.
Celkově je to hodně zvláštní problém, protože potíže že by nefungoval přenos dtmf metodou rfc2833 jsme nikdy
neřešili a sami dtmf používáme hojně. Používají to i někteří naši zákazníci, kteří si zrovna na tohle nikdy nestěžovali.

Ostatně podle toho, že se dtmf jednu chvíli začali přenášet až po marném pokusu vytočit "nesmysl" Called SIP/@417230, mi to přijde, že jako reálné vysvětlení by mohl být nějaký bug asterisku.
Neříkám to rád, ale asterisk se občas chová opravdu podivně, je s tím třeba počítat a zkoušet měnit různé věci.
Možná nemá rád sendtmf před read, nebo mu vadí něco jiného. Čekala metoda READ nějakou dobu na to jestli něco nezadáte ?
Pokud ne, nemohla se ničeho dočkat.

Někdy pomůže upgradovat, jindy nikoli. A bohužel občas jsme nuceni i zasahovat přímo do zdrojového kódu asterisku, to je ale opravdovej chaos ...

Nevím jestli to bylo v tomto případě, ale vyloučeno není nic.

Přestože asterisk používám od roku 2004 stále jsem jeho konfiguraci nepřišel úplně na chuť ...

V každém případě, přenášení DTMF musí spolehlivě fungovat, pokud ne tak se ozvěte a vyřešíme to.
jspudich
Příspěvky: 6
Registrován: úte 21. úno 2012 8:56:37

Re: DTMF, Odorik, GSM a Asterisk

Příspěvek od jspudich »

Dobry den,
ano, funguje to. A to tak, ze naprosto spolehlive.
Co me ale znepokojuje je fakt, ze neznam pricinu (a tedy ani reseni) problemu. S tim ale budu muset zit.
Default timeout metody READ je 10 sec a to byla priblizne doba, po ktere dialplan pokracoval. Takze ano, metoda READ cekala.
Jeste jednou dekuji za pomoc,
Jan Spudich
Zamčeno