Asterisk + MV372 gsm adapterek -- kéretlen vonalbontás?

Fórumok

Hello,
a következő a problémám:
Van egy asterisk szerver, ami 2db ISDN30-ast kezel, eléggé jól.
Van egy másik, ami 9 db MV372 2 portos gsm adaptereket vezérel.
A kettő IAX trönkön van, a kimenő hívások az ISDN-es szerverre érkeznek, és az irányítja át a hívást a másik szerverre, ha az mobil irányú.
A gond az, hogy nagyon gyakran megszakadnak a vonalak, és az adatbázis válaszok alapján olyan, mintha a 2. asterisk szerver bontaná - voltaképpen ötletszerűen - a vonalakat. Ugyanis az extension-ba beraktam egy utasítást, hogy a Dialstatust adja vissza a cdruserfield-be, és ezt ilyenkor nem kapom meg. A másik szerver válasza ebben az esetben answered.
Küzdök már ezzel jó fél éve, de kevés a leírás is... :-(

Mi lehet a gond?

Hozzászólások

néhány plusz adalék:

A visszajelzések szerint ahogy felveszik a másik oldalon a mobilt, bont a vonal.
Beraktam a hangup-processbe is, hogy írja ki a dialstatust, ott cancel jelet kapok, pedig isten bizony nem tettem le a telefont.

5lete vkinek?

Ha segít, bemásolom az extension-t, de elég szerteágazó...

--
Viszlát, és kösz a halakat!

Nincs valakinek tapasztalata ezzel a típussal: portech mvm-372 ?
Nem lehet, hogy az adapter bontja a vonalat?
Vagy lehet, hogy a t-mobilos kártyákkal van gond?

Az előbb rosszul írtam: a Cancel jelnél a hívó bontotta (az egyébként süket) hívást, a legtöbb ilyen esetben answer az utolsó jelzés.

Azt nem tudom, hogyan lehetne megtudni, hogy az asterisk szerint a hívó, vagy a hívott fél felől jött-e a hangup?
(kimenő hívásokról van szó természetesen...)

--
Viszlát, és kösz a halakat!

Na, egyre jobb.
Múlnak a napok, és van amikor minden működik kifogástalanul, van, amikor nem. A T-rendszer válasza az volt, hogy nem találtak a kérdéses időben és hívásokban hibát, a vonalat egyes esetekben a hívott, más esetekben a hívó bontotta.

Egyébként így vezérlem a hívást:
A mobil irány egy másik asterisk-ről jön IAX-en, itt megpróbálja hívni a gsm-adapterek valamelyikén, ha mindegyik foglalt, visszaküldi az ISDN-eket vezérlő asterisk-re

[from-gsmhid]
exten => _X!,1,Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=90a)
exten => _X!,n,Dial(SIP/gsm90a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 90av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm92a)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm92a)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm92a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=92a)
exten => _X!,n,Dial(SIP/gsm92a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 92av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm93a)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm93a)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm93a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=93a)
exten => _X!,n,Dial(SIP/gsm93a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 93av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm94a)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm94a)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm94a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=94a)
exten => _X!,n,Dial(SIP/gsm94a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 94av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm95a)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm95a)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm95a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=95a)
exten => _X!,n,Dial(SIP/gsm95a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 95av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm96a)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm96a)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm96a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=96a)
exten => _X!,n,Dial(SIP/gsm96a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 96av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm98a)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm98a)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm98a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=98a)
exten => _X!,n,Dial(SIP/gsm98a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 98av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?visszamegy)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?visszamegy)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm81a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=81a)
exten => _X!,n,Dial(SIP/gsm81a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 81av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm82a)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm82a)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm82a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=82a)
exten => _X!,n,Dial(SIP/gsm82a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 82av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm83a)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm83a)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm83a),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=83a)
exten => _X!,n,Dial(SIP/gsm83a/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 83av: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm90ba)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm90b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm90b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=90b)
exten => _X!,n,Dial(SIP/gsm90b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 90bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm92b)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm92b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm92b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=92b)
exten => _X!,n,Dial(SIP/gsm92b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 92bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm93b)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm93b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm93b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=93b)
exten => _X!,n,Dial(SIP/gsm93b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 93bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm94b)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm94b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm94b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=94b)
exten => _X!,n,Dial(SIP/gsm94b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 94bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm95b)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm95b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm95b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=95b)
exten => _X!,n,Dial(SIP/gsm95b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 95bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm96b)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm96b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm96b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=96b)
exten => _X!,n,Dial(SIP/gsm96b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 96bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm98b)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm98b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm98b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=98b)
exten => _X!,n,Dial(SIP/gsm98b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 98bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?visszamegy)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?visszamegy)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm81b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=81b)
exten => _X!,n,Dial(SIP/gsm81b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 81bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm82b)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm82b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm82b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=82b)
exten => _X!,n,Dial(SIP/gsm82b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 82bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?gsm83b)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?gsm83b)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(gsm83b),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Set(CSATI=83b)
exten => _X!,n,Dial(SIP/gsm83b/${EXTEN},,ro)
exten => _X!,n,Noop(PROBAHIVAS:${DIALSTATUS})
exten => _X!,n,AppendCDRUserField( 83bv: ${DIALSTATUS})
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "ANSWER"]?hangup)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CHANUNAVAIL"]?visszamegy)
exten => _X!,n,Gotoif($["${DIALSTATUS}" = "CONGESTION"]?visszamegy)
exten => _X!,n,Hangup
exten => _X!,n,Goto(hangup)

exten => _X!,n(visszamegy),Noop
exten => _X!,n,Set(DIALSTATUS="")
exten => _X!,n,Dial(IAX2/gsmhid/${EXTEN},,)

exten => _X!,n(hangup),Noop
exten => _X!,n,Hangup

exten => h,1,Noop(hangupveg process)
exten => h,n,AppendCDRUserField( C ${CSATI}pv: ${DIALSTATUS} h:ok)
exten => h,n,Hangup

--
Viszlát, és kösz a halakat!

A gsm vezérlő asterisk: 1.2.26.2
OS: CentOS, 2.6.18-prep
Az ISDN: 1.4.21.2
OS: Ubuntu, 2.6.24-23-server

A debug kimenetekkel az a gond, hogy ha egyedül használom a rendszert, nincs probléma. Ha viszont mindenki használja, az azt jelenti, hogy több, mint húsz hívás is megvalósulhat egyidőben.
Ráadásul nehéz behatárolni a hibás hívást, és az asterisk szerint normál bontások történnek ezekben az esetekben (a dialstatus ANSWERED).

--
Viszlát, és kösz a halakat!

Hát, ez szuper !

Egy kedves idegentől (Voip szolgáltató cég) azt a tanácsot kaptam, frissítsem le az adaptereken a firmware-t.
Na most, tudni kell ehhez, hogy kétféle verzióm van:

PCB mark: 2K123C
és
PCB mark: 2N149A

a kétféle verzióhoz két külön frissítőcsomag kell a leírás szerint.
Pontosan követtem az útmutatót, a megfelelő csomagot használva.
Az első esetben (2K123C) a frissítés rendben lezajlott, a második esetben viszont a frissítés után lehaltak az adapterek (pontosabban csak kettő, mert utána ezeket nem mertem frissíteni). A tünet: rebootig rendben megy, reboot után viszont nem válaszol többé, és ezen a reset sem segít. Ja, és a kis zöld ledek, amik a bootolási folyamat során villogni szoktak, most sötétek...

Azt hiszem felkötöm magam.
Van vkinek hasonló tapasztalata? véleménye?
Kíváncsi vagyok, hogy csak én vagyok ennyire béna valamiben, vagy az adapterekkel van vmi gond?

--
Viszlát, és kösz a halakat!

No! Indítsd újra az adaptert. És hívd fel az egyik GSM Számot (mondjuk ami az első porton lakik) itt hallani kellene egy IVR menüt. (20 másodperced van rá) Ha beütöd: #128# akkor be kell mondania, hogy mi a FW ver. illetve a #120# bemondja az IP címet. A #198# beírásával minden visszaáll gyári állapotra.

Ha nem mond be semmit, akkor kell pánikba esni

Krisz

Telefonközpont, VoIP
a NAGYOK tudásával, a kicsik rugalmasságával

Ezeknek a cuccoknak van egy saját IVR juk(jük) ami az indulás utáni 20. mpig él. Ebbe kellene belejutnod. Tegyél bele egy olyan kártyát ami nincs átirányítva, feltöltős, saját (légy kreatív). Ha behívsz, akkor lesz egy gyári Portech IVR amin a már említett kódokat kellene végigjátszani...

Krisz

Telefonközpont, VoIP
a NAGYOK tudásával, a kicsik rugalmasságával

OFF
helyi hívás nettó 4, helyközi 5, távolsági 6.
Persze, az ISDN dobozoknak van előfizetési díja (kb 70k a kettő), nincs viszont kapcsolási díj.
Az előfizetési díj a forgalmi díjhoz képest nem olyan sok, átlag 70k perc a forgalom (kimenő).
ON

--
Viszlát, és kösz a halakat!