Debian + Asterisk 1.4 + FritzCARD PCI -> Verknotung im Dialplan?

WuselWusel

Neuer User
Mitglied seit
17 Feb 2010
Beiträge
21
Punkte für Reaktionen
0
Punkte
0
Hallo,

nachdem ich eigentlich 'ne Box-Lösung gesucht hatte, mir das Asterisk allerdings mittlerweile echt prima gefällt, bin ich nach Betateilchens Asterisk-Baukasten schonmal soweit, daß sich die SIP-Phones (ein Softphone und ein Cisco 7912) unterhalten können.

Was Betateilchen nicht anfasst ist das Thema ISDN, was für mich interessant ist.

Installiert ist ein Debian Lenny mit dem Asterisk, was über Aptitude zu installieren war (1.4.21.2).

Die Büchse mit ISDN und Asterisk hängt hinter einer T-Concept XI420 am internen S0 der Telefonanlage und soll auf die interne MSN 20 reagieren und an das Cisco weiterleiten (soviel zum Plan).

In dem Rechner ist (wie ebend erwähnt) eine FritzCARD PCI verbaut:

asterisk:~# lspci
(schnipp)
00:09.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
00:0c.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 01)
(schnipp)

Welche mit CAPIUTILS und dem Modul für fcpci auch ans Flattern gebracht wurde (dank dieser Anleitung hier http://www.faber38.de/index.php?option=com_content&view=article&id=51:fritzcard-pci-avm&catid=37:eh&Itemid=41).

CAPIINFO sagt mir folgendes:
asterisk:~# capiinfo status
Number of Controllers : 1
Controller 1:
Manufacturer: AVM GmbH
CAPI Version: 2.0
Manufacturer Version: 3.11-07 (49.23)
Serial Number: 1000001
BChannels: 2
Global Options: 0x00000039
internal controller supported
DTMF supported
Supplementary Services supported
channel allocation supported (leased lines)
B1 protocols support: 0x4000011f
64 kbit/s with HDLC framing
64 kbit/s bit-transparent operation
V.110 asynconous operation with start/stop byte framing
V.110 synconous operation with HDLC framing
T.30 modem for fax group 3
Modem asyncronous operation with start/stop byte framing
B2 protocols support: 0x00000b1b
ISO 7776 (X.75 SLP)
Transparent
LAPD with Q.921 for D channel X.25 (SAPI 16)
T.30 for fax group 3
ISO 7776 (X.75 SLP) with V.42bis compression
V.120 asyncronous mode
V.120 bit-transparent mode
B3 protocols support: 0x800000bf
Transparent
T.90NL, T.70NL, T.90
ISO 8208 (X.25 DTE-DTE)
X.25 DCE
T.30 for fax group 3
T.30 for fax group 3 with extensions
Modem

0100
0200
39000000
1f010040
1b0b0000
bf000080
00000000 00000000 00000000 00000000 00000000 00000000
01000001 00020000 00000000 00000000 00000000

Supplementary services support: 0x000003ff
Hold / Retrieve
Terminal Portability
ECT
3PTY
Call Forwarding
Call Deflection
MCID
CCBS

Ich würde mal behaupten, daß das auch alles recht ordentlich aussieht.

Da ich aber ein absoluter ISDN-Volldepp bin (nahtlos vom 28.8er Analogmodem auf DSL seinerzeit) und ich nur eine ISDN-Karte im Rechner nur zum Konfigurieren unserer Telefonanlage besaß, gleich mal die erste Frage: Wie sehe ich auf meiner Asterisk-Büchse, ob die Verbindung zum S0 überhaupt gegeben ist?

Ich habe mich auch schon im http://das-asterisk-buch.de/2.1/ umgesehen und fleißig gelesen: Der verbaut nur keine FritzCard sondern nur die elendig teuren Profikarten :(

In der /etc/asterisk/capi.conf habe ich bislang nur folgende Zeilen geändert:

unter [ISDN1]
incomingmsn=20

Allerdings sehe ich mit core set verbose 10 garnichts, auch wenn ich die interne MSN 20 anwähle (also die, wo eigentlich das Asterisk etwas drauf bekommen sollte) ...

Vielleicht mag sich jemand erbarmen und mir 'nen Tipp geben :D

Danke schonmal.
 
Hallo WuselWusel,

hast Du chan_capi installiert? Sonst weißt Asterisk nichts von Deinem CAPI.

Rentier
 
asterisk:~# aptitude search asterisk
i asterisk - Quelloffenene Nebenstellenanlage (Private Branch Exchange, PBX)
v asterisk-1.4 -
i asterisk-chan-capi - Common ISDN API 2.0 implementation for Asterisk
i A asterisk-config - Configuration files for Asterisk
p asterisk-dbg - Debugging symbols for Asterisk
p asterisk-dev - Development files for Asterisk
p asterisk-doc - Source code documentation for Asterisk
p asterisk-h323 - H.323 protocol support for Asterisk
i asterisk-mp3 - MP3 format support (format_mp3) for the Asterisk PBX
p asterisk-mysql - MySQL support for the Asterisk PBX (cdr mainly)
p asterisk-oh323 - H.323 protocol support for Asterisk
p asterisk-ooh323c - H.323 protocol support for Asterisk (ooh323c stack)
i asterisk-prompt-de - German voice prompts for the Asterisk PBX
p asterisk-prompt-es-co - Colombian Spanish voice prompts for Asterisk
p asterisk-prompt-fr - Französische Sprachaufforderungen für Asterisk
p asterisk-prompt-fr-armelle - French voice prompts for Asterisk by Armelle Desjardins
p asterisk-prompt-fr-proformatique - French voice prompts for Asterisk
p asterisk-prompt-it - Italian voice prompts for the Asterisk PBX
p asterisk-prompt-se - Swedish voice prompts for Asterisk
i asterisk-sounds-extra - Additional sound files for the Asterisk PBX
i asterisk-sounds-main - Core Sound files for Asterisk (English)
p libasterisk-agi-perl - Collections of Perl modules to be used with Asterisk PBX AGI
p python-asterisk - Asterisk Manager API interface module for Python

Das Paket asterisk-chan-capi ist installiert ... (ich liebe Debian :D )
 
Wenn Du auf dem CLI von asterisk mal capi info eingibst, dann solltest Du in etwa folgende Ausgabe erhalten:

Code:
Common ISDN API Driver (1.1.4) www.chan-capi.org
Contr1: 2 B channels total, 2 B channels free.
Contr2: 2 B channels total, 0 B channels free.

Wenn nicht, ist chan_capi nicht aktiv.

Ralph
 
So ... ich glaube, ich komme so langsam dahinter ...

asterisk*CLI> capiinfo
No such command 'capiinfo' (type 'help capiinfo' for other possible commands)

chan_capi ist zwar installiert, muss aber vermutlich noch in der modules.conf geladen werden.

;
; Comment this out (after installing CAPI middleware and hardware
; drivers) if you have CAPI-able hardware and wish to use it in
; Asterisk.
;
noload => chan_capi.so
;

Das noload habe ich mal mit 'nem Semikolon auskommentiert und auf der CLI 'n reload angeworfen ... danach war allerdings immernoch nichts mit capiinfo ... gibts da noch 'ne andere Ecke, wo ich nach schauen muss?
 
Na klar muss es geladen werden ;-)

Keine andere Ecke, nur die falsche Syntax: Es heißt capi info und nicht capiinfo!

Nur zur Sicherheit: In der modules.conf gibt es zwei Bereiche, die für chan_capi relevant sind:
Code:
[modules]
load => chan_capi.so

[global]
chan_capi.so=yes

HTH Ralph
 
Zuletzt bearbeitet:
Wie sagte doch neulich noch 'n Kollege: Reboot tut gut ;)

asterisk*CLI> capi info
Common ISDN API Driver (1.1.1) www.chan-capi.org
Contr1: 2 B channels total, 2 B channels free.

:dance:

Danke Ralph :groesste:

Ich bastel mal weiter und lass es Euch wissen, wenn ich wieder irgendwo feststecke :D
 
Gerne geschehen - das war ja noch einfach...

Gutes Gelingen!

Ralph
 
So, ISDN funktioniert (rudimentär):

In der extensions.conf habe ich mal spaßeshalber folgendes eingetragen:
Code:
exten => 60,1,Dial(CAPI/ISDN1/**13)

Umgesetzt bedeutet das, rufe ich die 60 an, ruft das Asterisk die **13 über ISDN an (das ist 'ne anlageninterne Nummer und mein schnurloses analoges Telefon, was da dranhängt). Hab also grade schonmal mit meiner Madame gesprochen :D

Eigentlich müsste mir das für heute reichen und ich könnte trinken gehen ... aber bis wir losfahren sind noch zwei Stunden, in der Zeit werde ich mal weiterstricken :D
 
So, da bin ich wieder (mit 'nem tierischen Kater ... man sollt's lassen :( )

Ich habe mir heute Morgen mal 'n paar Gedanken gemacht, was ich eigentlich so alles können möchte mit der Anlage ...

Mein Plan sieht also wie folgt aus:

die internen MSN der T-Concept, die vor dem Asterisk-Rechner hängen sind die 20-23 und auch soweit schon recht akzeptabel konfiguriert:

20 -> meine Rufnummer
21 -> Rufnummer meiner Eltern
22 -> frei
23 -> schon seit Jahren für ein Soft-Fax vorgesehen ... vielleicht mach ich das auch nochmal mit dem Asterisk

SIP Intern habe ich mal so überlegt:
30-39 meine SIP-Phones
40-49 Elterns (evtl. mal kommende) SIP-Phones

Alle Eingehenden Anrufe von der ISDN-MSN 20 sollen an den Telefonen 30-39 signalisiert werden, alle Anrufe von den Telefonen 30-39 sollen über die MSN 20 herauswählen.
Alle Eingehenden Anrufe von der ISDN-MSN 21 sollen an den Telefonen 40-49 signalisiert werden, alle Anrufe von den Telefonen 40-49 sollen über die MSN 20 herauswählen.

Für abgehende Telefonate soll eine 0 vorweg gewählt werden (also für ein Ortsgespräch zu meinem Nachbarn mit der Rufnummer 456789 soll demzufolge 0 456789 gewählt werden, für ein Gespräch zu meinem Kumpel, der woanders wohnt mit 0456 456789 demzufolge 0 0456 456789)

Eine Mailbox (=Anrufbeantworter) für meinen Anschluss möchte ich irgendwann auch nochmal einrichten und die soll irgendwie per Telefon an- bzw. abschaltbar sein. Darüber mache ich mir erst ganz zum Schluss Gedanken.

Dank Ralph (und des funktionierenden CAPI im Asterisk) bekomme ich nun, wenn ich intern die MSN 20 anwähle, folgende Meldung:

Code:
  == ISDN1#02: Incoming call '**13' -> '20'
  == ISDN1#02: CAPI Hangingup for PLCI=0x101 in state 4
  == ISDN1#02: Incoming call '**13' -> '20'
  == ISDN1#02: CAPI Hangingup for PLCI=0x101 in state 4

Wie gesagt, die **13 ist das analoge Telefon der T-Concept-Anlage und die 20 ist die MSN auf dem internen S0, worauf das Gespräch ankommt.

Da weder bei Betateilchen (der ja kein ISDN drin hat) noch beim Asterisk-Buch irgendwas schlau-machendes über die ISDN-Verknotung drinne steht, ist meine Frage: Wie bekomme ich das in der extension.conf abgefrühstückt?

Wenn ich das begriffen habe, müsste doch für eingehende Gespräche (von ISDN kommend) die Zeile etwa so aussehen:

Code:
exten => {mein ISDN-Interface},1,Dial(SIP/30)

damit es zumindestens an der 30 signalisiert wird. (Wobei sich mir die Frage stellt: Wie "heißt" {mein ISDN-Interface}?)

Für die abgehenden Gespräche habe ich mal folgendes versucht (was nicht geklapp hat :confused: ):

Code:
exten => _0.,1,Dial(CAPI/ISDN1/20:$(EXTEN))

Das war auch 'n Griff ins keramische Rundmöbel :(
 
exten => {mein ISDN-Interface},1,Dial(SIP/30)
damit es zumindestens an der 30 signalisiert wird. (Wobei sich mir die Frage stellt: Wie "heißt" {mein ISDN-Interface}?)

Da kommt kein ISDN-Interface hin, sondern die gewählte Nummer, bzw. die Nummer, die bei Asterisk ankommt. Also bei Dir die 20. Die Zugehörigkeit des Contexts zu Deiner CAPI Schnittstelle regelst Du über den context-Eintrag in der capi.conf.

exten => _0.,1,Dial(CAPI/ISDN1/20:$(EXTEN))

$(EXTEN) wird nichts werden. Variablen werden mit geschweiften Klammern geschrieben: ${EXTEN}
Soll die 0 davor eigentlich bei der Telefonanlage ankommen? Ansonsten brauchst Du ${EXTEN:1}, damit die führende 0 abgeschnitten wird.
http://www.voip-info.org/wiki/view/Asterisk+variables

Rentier
 
*grmpf* der übliche Abtippfehler ... die geschweiften Klammern haben geholfen. Danke für den Tipp mit der abgeschnittenen 0 ... die sollte in der Tat nicht an die T-Concept übergeben werden sondern nur im Asterisk zum herauswählen genommen werden.

Also heraustelefonieren kann ich damit schonmal ( hervorragend :D )

Code:
; ISDN Outgoing
exten => _0.,1,Dial(CAPI/ISDN1/20:${EXTEN:1},300,r)

Die 300 dahinter ist, soweit ich das richtig begriffen habe, die Zeit in Sekunden, die das Asterisk beim angewählten Teilnehmer klingeln lässt, bevor es selbständig die Leitung wieder abbaut. Das r ist für das Freizeichen im SIP-Phone.

Code:
; ISDN Incoming
exten => 20,1,Dial(SIP/30)

Damit wäre ja theoretisch auch alles richtig, es funktioniert nur nicht ...

Die Zugehörigkeit des Contexts zu Deiner CAPI Schnittstelle regelst Du über den context-Eintrag in der capi.conf.

:confused:

Code:
incomingmsn=20
immediate=yes

Diese Positionen habe ich bislang angepasst ... für's heraustelefonieren reicht das vermutlich, aber welche Zeile (Context?!?) muss ich anpassen, damit die 20 durchgereicht wird? (Vermutlich habe ich das einfach nur nicht gerafft ...)
 
immediate solltest Du auf no lassen. yes bedeutet, dass Du direkt in die s-extension springst. Dadurch kannst Du aber die angerufene Nummer nicht mehr so leicht unterscheiden.

Im Abschnitt [ISDN1] Deiner capi.conf gibt es einen Eintrag context, also sollte es zumindest geben. Da steht drin, in welchen Context Asterisk bei einem ankommenden Anruf springen soll. Und in den entsprechenden Context kommt dann Deine exten=>20 rein.

Die Sache mit der 0 zum Vorwählen kannst Du Dir übrigens sparen, wenn Du nur zweistellige interne Nummern hast. Dann reicht exten=>_XX,bla,blub für intern und exten=>_XX.,bla,blub für abgehden Gespräche.

Rentier
 
Aaaaaaaaaaaaah ... da war der Haken. Danke Rentier!

Ich hatte das zwar mit den Contexten so halbwegs begriffen, aber wohl dennoch so garnicht verinnerlicht. In der capi.conf steht (als Default-Wert)

Code:
context=isdn-in

Flink ein [isdn-in] in die extensions.conf eingetragen, und schon funktionierts.

Ich glaube, ich komme jetzt erstmal wieder zurecht ... Vielen Dank :D
 
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.