Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.



inż.
Witam,
Próbuję wdrożyć w firmie budżetowego VoIPa. Linie PSTN realizowane są przez modemy GSM z kartami SIM oraz moduł chan_dongle. Generalnie wszystko działa, ale... no właśnie ale....
Nie mogę dojść do ładu z wybieraniem numeru wewnętrznego. Fragment logu asteriska po połączeniu:
-- Executing [+48XXXXXXXXX@from-dongle:1] NoOp("Dongle/linia0-0100000001", "Catch-All DID Match - Found +48XXXXXXXXX- You probably want a DID for this.") in new stack
-- Executing [+48XXXXXXXXX@from-dongle:2] Goto("Dongle/linia0-0100000001", "ext-did,s,1") in new stack
-- Goto (ext-did,s,1)
-- Executing [s@ext-did:1] ExecIf("Dongle/linia0-0100000001", "1?Set(__FROM_DID=s)") in new stack
-- Executing [s@ext-did:2] Gosub("Dongle/linia0-0100000001", "app-blacklist-check,s,1()") in new stack
-- Executing [s@app-blacklist-check:1] GotoIf("Dongle/linia0-0100000001", "0?blacklisted") in new stack
-- Executing [s@app-blacklist-check:2] Set("Dongle/linia0-0100000001", "CALLED_BLACKLIST=1") in new stack
-- Executing [s@app-blacklist-check:3] Return("Dongle/linia0-0100000001", "") in new stack
-- Executing [s@ext-did:3] Set("Dongle/linia0-0100000001", "CDR(did)=s") in new stack
-- Executing [s@ext-did:4] ExecIf("Dongle/linia0-0100000001", "0 ?Set(CALLERID(name)=+48XXXXXXXXX)") in new stack
-- Executing [s@ext-did:5] Set("Dongle/linia0-0100000001", "__CALLINGPRES_SV=allowed_not_screened") in new stack
-- Executing [s@ext-did:6] Set("Dongle/linia0-0100000001", "CALLERPRES()=allowed_not_screened") in new stack
-- Executing [s@ext-did:7] Goto("Dongle/linia0-0100000001", "ivr-1,s,1") in new stack
-- Goto (ivr-1,s,1)
-- Executing [s@ivr-1:1] Set("Dongle/linia0-0100000001", "TIMEOUT_LOOPCOUNT=0") in new stack
-- Executing [s@ivr-1:2] Set("Dongle/linia0-0100000001", "INVALID_LOOPCOUNT=0") in new stack
-- Executing [s@ivr-1:3] Set("Dongle/linia0-0100000001", "_IVR_CONTEXT_ivr-1=") in new stack
-- Executing [s@ivr-1:4] Set("Dongle/linia0-0100000001", "_IVR_CONTEXT=ivr-1") in new stack
-- Executing [s@ivr-1:5] Set("Dongle/linia0-0100000001", "__IVR_RETVM=") in new stack
-- Executing [s@ivr-1:6] GotoIf("Dongle/linia0-0100000001", "0?skip") in new stack
-- Executing [s@ivr-1:7] Answer("Dongle/linia0-0100000001", "") in new stack
-- Executing [s@ivr-1:8] Wait("Dongle/linia0-0100000001", "1") in new stack
-- Executing [s@ivr-1:9] Set("Dongle/linia0-0100000001", "IVR_MSG=custom/ivr_glowny") in new stack
-- Executing [s@ivr-1:10] Set("Dongle/linia0-0100000001", "TIMEOUT(digit)=3") in new stack
-- Digit timeout set to 3.000
-- Executing [s@ivr-1:11] ExecIf("Dongle/linia0-0100000001", "1?Background(custom/ivr_glowny)") in new stack
-- <Dongle/linia0-0100000001> Playing 'custom/ivr_glowny.slin' (language 'en')
-- Executing [s@ivr-1:12] WaitExten("Dongle/linia0-0100000001", "10,") in new stack
[2013-01-11 13:08:45] DTMF[4239]: channel.c:4139 __ast_read: DTMF begin '1' received on Dongle/linia0-0100000001
[2013-01-11 13:08:45] DTMF[4239]: channel.c:4143 __ast_read: DTMF begin ignored '1' on Dongle/linia0-0100000001
[2013-01-11 13:08:46] DTMF[4239]: channel.c:4139 __ast_read: DTMF begin '0' received on Dongle/linia0-0100000001
[2013-01-11 13:08:46] DTMF[4239]: channel.c:4143 __ast_read: DTMF begin ignored '0' on Dongle/linia0-0100000001
[2013-01-11 13:08:47] DTMF[4239]: channel.c:4139 __ast_read: DTMF begin '0' received on Dongle/linia0-0100000001
[2013-01-11 13:08:47] DTMF[4239]: channel.c:4143 __ast_read: DTMF begin ignored '0' on Dongle/linia0-0100000001
-- Timeout on Dongle/linia0-0100000001, going to 't'
-- Executing [t@ivr-1:1] Set("Dongle/linia0-0100000001", "TIMEOUT_LOOPCOUNT=1") in new stack
-- Executing [t@ivr-1:2] GotoIf("Dongle/linia0-0100000001", "0?final") in new stack
-- Executing [t@ivr-1:3] Set("Dongle/linia0-0100000001", "IVR_MSG=no-valid-responce-pls-try-again&custom/ivr_glowny") in new stack
-- Executing [t@ivr-1:4] Goto("Dongle/linia0-0100000001", "s,start") in new stack
-- Goto (ivr-1,s,10)
-- Executing [s@ivr-1:10] Set("Dongle/linia0-0100000001", "TIMEOUT(digit)=3") in new stack
-- Digit timeout set to 3.000
-- Executing [s@ivr-1:11] ExecIf("Dongle/linia0-0100000001", "1?Background(no-valid-responce-pls-try-again&custom/ivr_glowny)") in new stack
-- <Dongle/linia0-0100000001> Playing 'no-valid-responce-pls-try-again.slin' (language 'en')
== Spawn extension (ivr-1, s, 11) exited non-zero on 'Dongle/linia0-0100000001'
-- Executing [h@ivr-1:1] Hangup("Dongle/linia0-0100000001", "") in new stack
== Spawn extension (ivr-1, h, 1) exited non-zero on 'Dongle/linia0-0100000001'Jak widać próbowałem wybrać wewn. 100.
Konfiguracja chan_dongle:
[general]
interval=5 ; Number of seconds between trying to connect to devices
;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
;jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
; Dongle channel. Defaults to "no". An enabled jitterbuffer will
; be used only if the sending side can create and the receiving
; side can not accept jitter. The Dongle channel can't accept jitter,
; thus an enabled jitterbuffer on the receive Dongle side will always
; be used if the sending side can create jitter.
;jbforce = no ; Forces the use of a jitterbuffer on the receive side of a Dongle
; channel. Defaults to "no".
;jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
;jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
; resynchronized. Useful to improve the quality of the voice, with
; big jumps in/broken timestamps, usually sent from exotic devices
; and programs. Defaults to 1000.
;jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a Dongle
; channel. Two implementations are currently available - "fixed"
; (with size always equals to jbmaxsize) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
;jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
; The option represents the number of milliseconds by which the new jitter buffer
; will pad its size. the default is 40, so without modification, the new
; jitter buffer will set its size to the jitter value plus 40 milliseconds.
; increasing this value may help if your network normally has low jitter,
; but occasionally has spikes.
;jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
[defaults]
; now you can set here any not required device settings as template
; sure you can overwrite in any [device] section this default values
context=from-dongle ; context for incoming calls
group=0 ; calling group
rxgain=0 ; increase the incoming volume; may be negative
txgain=0 ; increase the outgoint volume; may be negative
autodeletesms=yes ; auto delete incoming sms
resetdongle=yes ; reset dongle during initialization with ATZ command
u2diag=-1 ; set ^U2DIAG parameter on device (0 = disable everything except modem function) ; -1 not use ^U2DIAG command
usecallingpres=yes ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation by default use default network settings
disablesms=no ; disable of SMS reading from device when received
; chan_dongle has currently a bug with SMS reception. When a SMS gets in during a
; call chan_dongle might crash. Enable this option to disable sms reception.
; default = no
language=en ; set channel default language
smsaspdu=yes ; if 'yes' send SMS in PDU mode, feature implementation incomplete and we strongly recommend say 'yes'
mindtmfgap=45 ; minimal interval from end of previews DTMF from begining of next in ms
mindtmfduration=80 ; minimal DTMF tone duration in ms
mindtmfinterval=200 ; minimal interval between ends of DTMF of same digits in ms
callwaiting=auto ; if 'yes' allow incoming calls waiting; by default use network settings
; if 'no' waiting calls just ignored
disable=no ; OBSOLETED by initstate: if 'yes' no load this device and just ignore this section
initstate=start ; specified initial state of device, must be one of 'stop' 'start' 'remote'
; 'remove' same as 'disable=yes'
exten=+1234567890 ; exten for start incoming calls, only in case of Subscriber Number not available!, also set to CALLERID(ndid)
dtmf=inband ; control of incoming DTMF detection, possible values:
; off - off DTMF tones detection, voice data passed to asterisk unaltered
; use this value for gateways or if not use DTMF for AVR or inside dialplan
; inband - do DTMF tones detection
; relax - like inband but with relaxdtmf option
; default is 'relax' by compatibility reason
; dongle required settings
[linia0]
audio=/dev/hw-audio-0
data=/dev/hw-data-0
[linia1]
audio=/dev/hw-audio-1
data=/dev/hw-data-1
[linia2]
audio=/dev/hw-audio-2
data=/dev/hw-data-2Próbowałem eksperymentować z opcjami: mindtmfgap, mindtmfduration, mindtmfinterval ale nic mi to nie dało.
Macie jakieś pomysły (poza tym żeby nie korzystać z chan_dongle ;))
Offline







Podobno człowiek...;)








Ja robiłem coś podobnego na Freeswitchu, z modułem gsmopen, nie musiałem używać asteriskowego chan_dongle. :D
We Freeswitchowym dialplanie:
...
<extension name="mobilne">
<condition field="destination_number" expression="^(\+48?|0?|0048?|\+0?)?((5[0137]|6[069]|7[2389]|88)\d{7})$">
<action application="bridge" data="gsmopen/RR/$4"/>
</condition>
</extension>
...Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2013-01-11 13:39:01)
Offline



inż.
Ok, sam sobie odpowiem.
mindtmfgap=0 mindtmfduration=0 mindtmfinterval=0
I po wstępnych testach wszystko jest OK. Nie mam pojęcia czemu jak dam tam normalne wartości (powyżej 0) nie działa....
Offline