Early B3 und CAPI

Felix Scharf

Neuer User
Mitglied seit
29 Apr 2010
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Guten Abend!

Bei meinem ATA (Grandstream GXW-4008 ) ist "Early Dial" eingestellt, was auch gut klappt. Asterisk klappert seine Extensions ab und sobald eine passt, bimmelt das entsprechende Telefon.

Intern. Über CAPI ins Netz der Telekom klappt das leider gar nicht. Ich möchte zunächst gerne mit meinem Analogtelefon die 0 tippen und den Wählton der Telekom hören.

Versucht habe ich das folgendermaßen:

[analog-in] ;GXW-4008
exten => 0,1,Dial(CAPI/g1/b)
exten => 0,2,Hangup()

Das führt zu dem Fehler "ISDN1#02: CAPI INFO 0x349c: Invalid number format". An der fehlenden CallerID scheint es nicht zu liegen. Zumindest geht Dial(CAPI/g1/<MSN>:0/b) genausowenig (<MSN> steht für eine Nummer meines ISDN-Anschlusses).

Frage 1: Ist der Aufruf von Hangup() an dieser Stelle nötig und sinnvoll?

Frage 2: Wie bekomme ich den Wählton der Telekom ans Ohr?

Frage 3: Wie stelle ich es an, daß ich dann schließlich per DTMF jemanden anrufen kann?

Asterisk befindet sich in einer virtuellen Maschine (KVM) auf einem Debian Lenny und bedient sich des CAPI einer Fritz!Box über LAN.

Weitere Details:

Code:
tk1:~# uname -a
Linux tk1 2.6.26-2-686 #1 SMP Tue Mar 9 17:35:51 UTC 2010 i686 GNU/Linux
Code:
tk1:~# dpkg -l | grep asterisk
ii  asterisk                          1:1.4.21.2~dfsg-3+lenny1 Open Source Private Branch Exchange (PBX)
ii  asterisk-app-fax                  0.0.3                    Softfax application for Asterisk
ii  asterisk-chan-capi                1.1.1-1                  Common ISDN API 2.0 implementation for Asterisk
ii  asterisk-config                   1:1.4.21.2~dfsg-3+lenny1 Configuration files for Asterisk
ii  asterisk-dev                      1:1.4.21.2~dfsg-3+lenny1 Development files for Asterisk
ii  asterisk-prompt-de                2.0-1                    German voice prompts for the Asterisk PBX
ii  asterisk-sounds-extra             1.4.7-1                  Additional sound files for the Asterisk PBX
ii  asterisk-sounds-main              1:1.4.21.2~dfsg-3+lenny1 Core Sound files for Asterisk (English)
capi.conf:
Code:
;
; CAPI config
;
;

; general section

[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8       ;linear receive gain (1.0 = no change)
txgain=0.8       ;linear transmit gain (1.0 = no change)
language=de      ;set default language
;ulaw=yes        ;set this, if you live in u-law world instead of a-law

;jb.....         ;with Asterisk 1.4 you can configure jitterbuffer,
                 ;see Asterisk documentation for all jb* setting available.
;mohinterpret=default ;Asterisk 1.4: default music on hold class when placed on hold.


; interface sections ...

[ISDN1]          ;this example interface gets name 'ISDN1' and may be any
                 ;name not starting with 'g' or 'contr'.
                 ;Use one interface section for each isdn port!
;ntmode=yes      ;if isdn card operates in nt mode, set this to yes
isdnmode=msn     ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
                 ;when using NT-mode, 'DID' should be set in any case
incomingmsn=*    ;allow incoming calls to this list of MSNs/DIDs, * = any
;defaultcid=123  ;set a default caller id to that interface for dial-out,
                 ;this caller id will be used when dial option 'd' is set.
;controller=0    ;ISDN4BSD default
;controller=7    ;ISDN4BSD USB default
controller=1     ;capi controller number of this interface/port
group=1          ;dialout group
;prefix=0        ;set a prefix to calling number on incoming calls
softdtmf=on      ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=on     ;in addition to softdtmf, you can use relaxed dtmf detection
faxdetect=off    ;enable faxdetection and redirection to EXTEN 'fax' for incoming and/or
                 ;outgoing calls. (default='off', possible values: 'incoming','outgoing','both')
accountcode=     ;PBX accountcode to use in CDRs
;amaflags=default;AMA flags for CDR ('default', 'omit', 'billing', or 'documentation')
context=isdn-in  ;context for incoming calls
;holdtype=hold   ;when the PBX puts the call on hold, ISDN HOLD will be used. If
                 ;set to 'local' (default value), no hold is done and the PBX may
                 ;play MOH.
;immediate=yes   ;DID: immediate start of pbx with extension 's' if no digits were
                 ;     received on incoming call (no destination number yet)
                 ;MSN: start pbx on CONNECT_IND and don't wait for SETUP/SENDING-COMPLETE.
                 ;     info like REDIRECTINGNUMBER may be lost, but this is necessary for
                 ;     drivers/pbx/telco which does not send SETUP or SENDING-COMPLETE.
;echosquelch=1   ;_VERY_PRIMITIVE_ echo suppression. Disable this before you start recording voicemail
                 ;or your files may get choppy. (you can use capicommand(echosquelch|no) for this)
;echocancel=yes   ;Dialogic Diva (Capi) echo cancelation (yes=g165)
                 ;(possible values: 'no', 'yes', 'force', 'g164', 'g165') 
echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
;echotail=64     ;echo cancel tail setting (default=0 for maximum)
;echocancelnlp=1 ;activate non-linear-processing; this improves echo cancel ratio, but might
                 ;incorporate variable gain in the signal path.
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;PBX call group
;pickupgroup=1   ;PBX pickup group (which call groups are we allowed to pickup)
;transfergroup=1 ;Controller(s) where a transfer on native bridge is allowed to.
;language=de     ;set language for this device (overwrites default language)
;disallow=all    ;RTP codec selection (valid with Dialogic Diva only)
;allow=all       ;RTP codec selection (valid with Dialogic Diva only)
devices=2        ;number of concurrent calls (b-channels) on this controller
                 ;(2 makes sense for single BRI, 30/23 for PRI/T1)
;jb.....         ;with Asterisk 1.4 you can configure jitterbuffer,
                 ;see Asterisk documentation for all jb* setting available.
;mohinterpret=default ;Asterisk 1.4: default music on hold class when placed on hold.
;qsig=1           ;enable use of Q.SIG extensions. ECMA Variant
;qsig_prnum=1234  ;enable inbound bridging - this should be an QSIG-network-wide unique number

extensions.conf:
Code:
[analog-in]
include => funktionstests
include => interne-verbindungen
;include => externe-verbindungen
exten => 0,1,Dial(CAPI/g1/48952706:0/b)
exten => 0,2,Hangup()

[funktionstests]
exten => 9001,1,Answer()
exten => 9001,n,Wait(1)
exten => 9001,n,Playback(demo-echotest)
exten => 9001,n,Echo()
exten => 9001,n,Playback(demo-echodone)
exten => 9001,n,Wait(1)
exten => 9001,n,Hangup()

exten => 9002,1,Answer()
exten => 9002,n,Set(MUSICCLASS()=default)
exten => 9002,n,WaitMusicOnHold(120)
exten => 9003,n,Hangup()

[interne-verbindungen]
exten => 21,1,Dial(SIP/ATA-1)
exten => 22,1,Dial(SIP/ATA-2)
exten => 23,1,Dial(SIP/ATA-3)
exten => 24,1,Dial(SIP/ATA-4)
exten => 31,1,Macro(faxempfang,[email protected],${CALLERID(num)})
exten => 32,1,Macro(faxempfang,[email protected],${CALLERID(num)})
exten => 33,1,Macro(faxempfang,[email protected],${CALLERID(num)})
exten => 34,1,Macro(faxempfang,[email protected],${CALLERID(num)})

[externe-verbindungen]
exten => _0[1-9].,1,Dial(CAPI/g1/${EXTEN:1}/B)

[macro-faxempfang]
exten => s,1,Wait(3)
exten => s,n,Set(SCRIPTFILE=/var/lib/asterisk/scripts/fax2mail)
exten => s,n,Set(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID})
exten => s,n,RxFAX(${FAXFILE})
exten => s,n,System("${SCRIPTFILE}" "${CALLERID(num)}" "${ARG1}" "${FAXFILE}")
exten => s,n,Hangup

[isdn-in]
exten => 11111111,1,Dial(SIP/ATA-1)
exten => 22222222,1,Macro(faxempfang,[email protected])

;Telemarketingschmeissfliegen abwimmeln
exten => 11111111,1,GotoIf(${BLACKLIST()}?black,1)
exten => 11111111,n,Dial(SIP/ATA-1)
exten => 11111111,n,Hangup()

exten => black,1,Playback(tt-monkeys)
exten => black,n,Hangup()

[sip-in]
;sipgate
exten => 3333333,1,Wait(2)
exten => 3333333,n,Answer()
exten => 3333333,n,Playback(hello-world)
exten => 3333333,n,Hangup()

[default]
Code:
[general]
port=5060
bindaddr=0.0.0.0
register => 3333333:[email protected]/3333333
disallow=all
allow=alaw
language=de

[sipgate]
type=friend
insecure=invite
nat=yes
username=3333333
fromuser=3333333
fromdomain=sipgate.de
secret=ABC123
host=sipgate.de
qualify=yes
canreinvite=no
dtmfmode=rfc2833
context=sip-in

[linphone]
type=friend
secret=XXXXXX
host=dynamic

[ATA-1]
language=de
type=friend
secret=XXXXXX
host=dynamic
context=analog-in

[ATA-4]
type=friend
secret=XXXXXX
host=dynamic
language=de
context=analog-in

[ATA-3]
type=friend
secret=XXXXXX
host=dynamic
language=de
context=analog-in

[ATA-2]
type=friend
secret=XXXXXXX
host=dynamic
language=de
context=analog-in

Über sachdienliche Hinweise würde ich mich sehr freuen!
 
Hallo Felix,

ohne Deine Config angesehen zu haben:

zu 1: nötig wenn Du autofallthrough auf no hast, sinnvoll immer

zu 2/3: exten => 0,1,DISA()
Ist zwar nicht der Wählton der T-Com, sondern einer von Asterisk, aber immerhin als Wählton erkennbar.

Rentier
 
Herzlich willkommen im Forum!

Ein Zitat aus dem README von chan_capi könnte einen Lösungshinweis beinhalten:

Overlap sending (a.k.a. real dialtone)
======================================
When you dial an empty number and have early B3 enabled, with:
Dial(CAPI/g1//b)
the channel will come up at once and give you the dialtone it gets from the local exchange.
At this point the channel is like a legacy phone, now you can send DTMF digits to dial.

Du beschreibst Deinen Versuch so:
[analog-in] ;GXW-4008
exten => 0,1,Dial(CAPI/g1/b)
exten => 0,2,Hangup()

Du hast in Deinem Dialstring also einen Schrägstrich zu wenig...

HTH
Ralph
 
Hallo Rentier,

vielen Dank für den Tipp. Damit ist ein Wählton zu hören. Im Augenblick passiert zwar nichts, wenn ich weitere Ziffern eintippe, aber das muß ich mir gleich noch genauer anschauen.

Hallo Ralph,

Du hast völlig recht. Mit zwei Slashes klappt es. Das steht in der von mir konsultierten Doku schlicht und ergreifend falsch drin. Vielen Dank für den Hinweis und das freundliche Willkommen.

Beste Grüße
Felix

PS.: Vielleicht stimmt die Doku auch. Sie ist für die Windows-Version, wie ich gerade bemerkt habe.
 
Hallo Felix,

spar Dir die Mühe mit DISA, die Lösung von Ralph ist um Längen besser. Wusste gar nicht, dass das so einfach geht, da hätte ich mir viel Bastelei sparen können. :oops:

Rentier
 
@Felix,

ich nehme mal an, dass sich in der Doku einfach der Fehlerteufel eingeschlichen hat... schön, dass es funktioniert!

@Rentier

Was passiert denn mit den CDR-Daten, wenn man diese Funktion nutzt? Ich nehme mal an, dass Asterisk als Destination dann nur die Null einträgt, vom Rest bekommt er doch gar nichts mehr mit... also möglicherweise Vorsicht, wenn man die CDR-Records auswerten will. Habs aber noch nie verwendet, kann also falsch sein, was ich hier behaupte!

Ralph
 
Hallo Ralph,

ich hatte eine Zeit lang DISA für Overlapdialing über mISDNv2/chan_lcr NT-Mode verwendet. Dabei waren die CDR Einträge soweit ich mich erinnern kann in Ordnung. Asterisk springt ja mit der von DISA erfassten Nummer als neue Extension in den jeweiligen Context, und dort wird auch der CDR Eintrag erzeugt. Ich möchte aber nicht beschwören, dass die CDRs wirklich korrekt waren.

Wie gesagt, hätte ich die Lösung direkt über CAPI damals gekannt, hätte ich nie DISA verwendet.

Svenja
 
Hallo Svenja,

ich hatte mich missverständlich ausgedrückt: Ich meinte das Overlapdialing mit chan_capi. Damit könnte es zu CDR-Einträgen kommen, die nur die Null als Destination beinhalten... Da ich es aber noch nie verwendet habe (ehrlich gesagt sehe ich auch keinen großen Sinn darin), kann ich auch nix dazu sagen.

Dass unsere Benutzer mit Asterisk keinen "Amtston" mehr nach dem Wählen der Null zur "Amtsholung" erhalten, war nach kurzer Zeit der Umgewöhnung kein Problem mehr.

Danke übrigens für Deine ausdauernde und hochwertige Arbeit hier im Forum!! (Muss doch auch mal gesagt werden ;-))

Ralph
 
Hallo Ralph,

achso, hab Dich falsch verstanden. Ich hab's grad kurzerhand ausprobiert und Du hast Recht. Mit
Code:
exten=>0,1,Dial(CAPI/ISDN1//b)
wird im CDR tatsächlich nur die 0 als Ziel eingetragen. Eigentlich logisch, wie Du schon beschrieben hast.

Mir ist das "Overlapdialing" mit WaitExten auch lieber, mit dem o.g. Code greifen ja keine Wählregeln und nichts mehr.

Danke für Deine lobenden Worte, das Gleiche gilt für Dich aber auch.

Svenja
 
Zuletzt bearbeitet von einem Moderator:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.