ISDN -> Asterisk -> SIP Provider

konabi

Mitglied
Mitglied seit
11 Apr 2005
Beiträge
424
Punkte für Reaktionen
0
Punkte
16
Hallo,
Nachdem ich mich jetzt schon seit einigen Tagen mit Astersik beschäftige bin ich über die vielen Möglichkeiten erstaunt.

Nun habe ich Astersik mittels CAPI an unseren internen Bus angeschlossen
und als MSN 55 vergeben.

Rufe ich nun von einem ISDN Telefon die 55 werde ich mit Asterisk verbunden und erhalte ein Freizeichen.
Mit der 7 und der Rufnummer wird das Gespräch wird über unseren SIP Provider vermittelt.


Auszug aus der extensions.conf
Code:
[default]

exten => 55,1,DISA,no-password|dialout

[dialout]
exten => _7.,1,SetCallerID(6xxxxx)
exten => _7.,2,Dial(SIP/${EXTEN:1}@sipgate,20,r)
exten => _7.,3,Congestion
exten => _7.,4,Hangup

Das klappt soweit gut bis dass es etwa 8 Sekunden dauert bis das gerufene Telefon klingelt.

Meine Frage:
Ist diese lange Wartezeit normal?


Zweite Frage:

Was mich noch stört ist dass ich die 7 wählen muss.
Über eine Goto Anweisung wollte ich das umgehen.

Auszug aus der extenstions.conf:

Code:
[default]

exten => 55,1,DISA,no-password|out

[out]
exten => _.,1,Goto(dialout,7${EXTEN})

[dialout]
exten => _7.,1,SetCallerID(6xxxxx)
exten => _7.,2,Dial(SIP/${EXTEN:1}@sipgate,20,r)
exten => _7.,3,Congestion
exten => _7.,4,Hangup

Leider klappt das so nicht. Es kommt kein Ruf zustande.

Ein Auszug aus den DEBUG Meldungen:


-- creating pipe for PLCI=0x101 msn = 55
> sent ALERT_REQ PLCI = 0x101
-- started pbx on channel (callgroup=0)!
-- Executing DISA("CAPI[contr1/55]/0", "no-password|out") in new stack
-- CAPI Answering for MSN 55
> sent FACILITY_REQ (PLCI=0x101)
May 12 15:27:01 WARNING[1114225584]: cdr.c:286 ast_cdr_init: CDR already initialized on 'CAPI[contr1/55]/0'
-- Executing Goto("CAPI[contr1/55]/0", "dialout|8034xxxxxxxx") in new stack
-- Goto (out,dialout,2147483647)
-- Timeout on CAPI[contr1/55]/0
== CDR updated on CAPI[contr1/55]/0
-- Executing Goto("CAPI[contr1/55]/0", "dialout|8t") in new stack
-- Goto (out,dialout,8)
-- Timeout on CAPI[contr1/55]/0
== CDR updated on CAPI[contr1/55]/0
-- Executing Goto("CAPI[contr1/55]/0", "dialout|8t") in new stack
-- Goto (out,dialout,8)
-- Timeout on CAPI[contr1/55]/0
== CDR updated on CAPI[contr1/55]/0
-- Executing Goto("CAPI[contr1/55]/0", "dialout|8t") in new stack
-- Goto (out,dialout,8)
-- Timeout on CAPI[contr1/55]/0
== CDR updated on CAPI[contr1/55]/0
-- Executing Goto("CAPI[contr1/55]/0", "dialout|8t") in new stack
-- Goto (out,dialout,8)
-- Timeout on CAPI[contr1/55]/0
== CDR updated on CAPI[contr1/55]/0
-- Executing Goto("CAPI[contr1/55]/0", "dialout|8t") in new stack
-- Goto (out,dialout,8)
-- Timeout on CAPI[contr1/55]/0
== CDR updated on CAPI[contr1/55]/0
-- Executing Goto("CAPI[contr1/55]/0", "dialout|8t") in new stack
-- Goto (out,dialout,8)
-- Executing Goto("CAPI[contr1/55]/0", "dialout|8h") in new stack
-- Goto (out,dialout,8)

Was könnte der Fehler sein?

Vielen Dank schon mal im vorraus.

Sven
 
ich kann dir leider nicht helfen, weil ich absoluter anfänger bin, aber ich habe dazu ein paar fragen:

1) was bedeutet denn das DISA? bzw die ganze zeile exten => 55,1,DISA,no-password|dialout :?:

2) wenn du jetzt also vom ISDN telefon aus per SIP rauswählen willst, dann musst du bei der konfig "5570049xyz" wählen? habe ich das richtig verstanden? wie schaut denn die sip.conf dazu aus? kannst du mir das evtl per privat message zukommen lassen um dein topic hier nicht vollzumüllen? :oops: oder wenns nicht stört und zur sache tut auch gerne hier!

danke dir
 
DISA (Direct Inward System Access)
erlaubt es jemanden von außerhalb ein Freizeichen von der Telefonanlage zu bekommen um danach eine Nummer zu wählen um ein Gespräch aufzubauen.

soweit meine bescheidene Übersetzung von:
http://www.voip-info.org/tiki-index.php?page=Asterisk cmd DISA


Also mein Astersik ist unter anderem am internen S0 Bus der Telefonanlage angeschlossen. Er hat die interne MSN 55. (festgelegt in der capi.conf)

Was bedeutet:
exten => 55,1,DISA,no-password|dialout

Nun, wenn ich von einem ISDN Telefon, welches auch am internen S0 angeschlossen ist die 55 wähle, geht der Astersik ran und bietet mir ein Freizeichen.
Nun kann ich eine Rufnummer wählen, welche dann über den Context dialout gewählt wird:


Code:
[dialout]
exten => _7.,1,SetCallerID(6xxxxx)
exten => _7.,2,Dial(SIP/${EXTEN:1}@sipgate,20,r)
exten => _7.,3,Congestion
exten => _7.,4,Hangup

Somit kann ich mein ISDN Telefon verwenden um Gespräche über SIP zu führen.

Aber Vorsicht!!

Wenn die interne MSN 55 von außerhalb der Telefonanlage auch erreichbar ist z.b über die Rufnummer 12355 birgt das Sicherheitsrisiko.

Warum?
Ich könnte ja als Fremder diese Nummer wählen, dann werde ich mit dem Astersik verbunden und kann dann über Deinen SIP Provider telefonieren. z.B. teure 190 Nummer etc. wählen.
Um das zu unterbinden kann man aber auch Passwörter verwenden. (habe ich aber noch nicht probiert)

Die 7 im context [dialout] habe ich im übrigen für meine Softphones (XLITE). Diese müssen eine 7 vorwählen um den context dialout zu nutzen.
Und mit dem ISDN Telefon mus ich dann die 55 (um zum Astersik zu kommen) dann die 7 (im context dialout festgelegt) und dann die eigentliche Rufnummer wählen.

Meine sip.conf kann ich jetzt leider nicht mitsenden, da ich schon zu Hause bin.

Falls Du sie noch benötigst gib mir einfach bescheid.

mfg Sven
 
hi sven,

danke für die erläuterungen. irgendwie verliert man echt den überblick bei der vielfalst an möglichkeiten die asterisk bietet :oops: !

deine sip.conf kann nicht schaden ;-) ... wäre nett wenn du mir die zukommen lassen könntest


lieben dank

a&o
 
zusatzfrage ... wie komme ich dann von meinen softphones (xlite) über ISDN raus? :roll:
 
ich habe hier mal die sip.conf, extensions.conf und capi.conf
mitgepostet.

Ich hoffe die Kommentare sind soweit richtig.
Fehler können gerne berichtigt werden. (ist erwünscht)

In der extension ist auch ein beispiel wie man mit Hilfe des SIP telefons über CAPI rauswählen kann.

capi.conf:
Code:
[general]
nationalprefix = 0	       ; Amtsholung
internationalprefix = 000
rxgain = 0.8		         ;Echos kompensieren
txgain = 0.8		         ;echos kompensieren

[interfaces]
msn = 55,56		        ; MSN fuer abgehende Rufe
incomingmsn = 55,56  	   ; MSN fuer eingehende Rufe
context = default
softdtmf = 0		         ; 0= DTMF Toene werden von ISDN Karte generiert
			               ; 1= DTMF Toene werden von Asterisk generiert
controller = 1		         ; welcher Kontroller
devices=2		         ; Anzahl der Kanaelle


sip.conf:
Code:
[general]

context=default			  ; Default context fuer eingehende Rufe

disallow=all			     ; erst mal alle Codecs verbieten
allow=alaw			    ; (G.711) erlaubte Codecs
allow=ulaw			    ; (G.711) erlaubte Codecs
allow=GSM			    ; (GSM) erlaubte Codecs

port=5060			    ; UDP SIP Port (Standard 5060)
bindaddr=0.0.0.0		 ; IP Adresse auf der Asterisk laueft

externip=xxxx.dyndns.org	; externe IP Adresse
localnet=192.168.255.0/24	; lokaler Netzwerkbereich
srvlookup=yes			     ; Benutze Serverlookups fuer ausgehende Rufe
				            ; um den zustandigen SIP Server zu finden
nat=no				        ; =yes bewirkt dass Asterisk die Adressinformationen
				            ; im SIP und SDP Header ignoriert und direkt zur
				            ; Sender IP Packete schickt
				            ; =no Astersik beachtet Adressinformation in SIP Header

;dtmfmode=inband		; Dual Tone Multi Frequenz
				           ; (Ton wenn Taste am Telefon getrueckt wird)
				           ; inband: Ton wird vom Gerät festgelegt

tos=0x18			    ; Typ of Service
				        ; tos=0x10  geringe Verzoegerung
				        ; tos=0x08  hoher Durchsatz
				        ; tos=0x04  hohe Verlaesslichkeit
				        ; tos=0x02  ECT Bit gesetzt
				        ; tos=0x01  CE Bit gesetzt
				        ; tos=0x18  gute Kombination :-)

canreinvite=yes			; =yes: Mediastream kann Asterisk umgehen
				        ; Nachdem Verbindung ueber Astersik vermittelt wurde
				        ; koennen Clients direkt miteinander kommunizieren
				        ; =no: alle Gespräche laufen uber Asterisk
				        ; gegebenenfalls werden Sprachcodecs umgesetzt

insecure=very			; =very: registrierte Hosts koennen rufen ohne
				        ; sich nochmals zu authentifizieren
				        ; =yes:

;Registrierung beim Provider
register => 111111:[email protected]/111111
register => 222222:passwort:[email protected]/222222


[sipgate]
type=friend   			; =friend kann anrufen und Anrufe entgegennehmen
				        ; =peer kann nur abegehende Gespraeche fuehren
				        ; =user kann nur angerufen werden
username=111111		    ; SIP INVITE Authentifizierung bei SIP Provider
secret=password			; Passwort
fromuser=111111		    ; Nachricht im "from" Feld (SIP Nachricht) statt CallerID
fromdomain=sipgate.de	 ; setzt "From Domain" Feld (SIP Nachricht)
host=sipgate.de                ; Domain des SIP Provider
nat=yes				    ; beachte Adressinformationen in SIP Nachricht
insecure=very			; registrierte Hosts koennen rufen ohne
				        ; sich nochmals zu authentifizieren
canreinvite=no			; =yes: Mediastream kann Asterisk umgehen
				        ; Nachdem Verbindung ueber Astersik vermittelt wurde
				        ; koennen Clients direkt miteinander kommunizieren
				        ; =no: alle Gespräche laufen uber Asterisk
				        ; gegebenenfalls werden Sprachcodecs umgesetzt
qualify=yes                        ; =yes es wird geprueft ob Client noch Online ist
				        ; durch senden von Optionen

context=incomming_sipgate

[t-online]
type=friend
user=222222
username=username
secret=password
host=tel.t-online.de
fromuser=222222
fromdomain=tel.t-online.de
canreinvite=yes
qualify=yes
insecure=very
nat=no
dtmfmode=inband
realm=tel.t-online.de


; lokale SIP Telefone

[11]
type=friend
username=11
secret=11
host=dynamic
callerid= <11>


[12]
type=friend
username=12
secret=12
host=dynamic
callerid= <12>

[13]
type=friend
username=13
secret=13
host=dynamic
callerid= <13>

[15]
type=friend
username=15
secret=15
host=dynamic
callerid= <15>

[17]
type=friend
username=17
secret=17
host=dynamic
callerid= <17>

[24]
type=friend
username=24
secret=24
host=dynamic
callerid= <24>

[26]
type=friend
username=26
secret=26
host=dynamic
callerid= <26>

[60]
type=friend
username=60
secret=60
host=dynamic
callerid= <60>

[61]
type=friend
username=61
secret=61
host=dynamic
callerid= <61>


extension.conf
Code:
[general]

static = yes 		; ob Datei von der CLI aus bearbeitet werden kann
writeprotect=no


;##########################
;# BEGINN Dafault Context #
;##########################


[default]
include => 11
include => 12
include => 13
include => 17
include => 24
include => 26
include => 60
include => 61

include => incomming_t-online
include => incomming_sipgate
include => incomming_capi

include => outgoing_t-online
include => outgoing_sipgate
include => outgoing_capi

include => mailbox


; wenn uber S0 der Astersik Server auf der 55 gewahlt
; wird, wird das Gespraech an Context dialout ubergeben
exten =>  55,1,DISA,no-password|dialout




;########################
;# ENDE Default Context #
;########################


; wenn die 9999 vom SIP Telefon aus gewaehlt wird
; geht die Mailbox des jeweiligen Users dran ( Mailboxabruf)

[mailbox]
exten=> 9999/_[1-9].,1,Answer
exten=> 9999/_[1-9].,2,Wait(1)
exten=> 9999/_[1-9].,3,VoicemailMain2(s${CALLERIDNUM})
exten=> 9999/_[1-9].,4,Hangup


; Sprungmarke fuer DISA rauswaehlen ueber SIP Provider
[dialout]
include  => out_t-online
;include => outgoing_sipgate





; Kontext zum rauswaehlen ueber SIPGATE
[outgoing_sipgate]
exten => _7.,1,SetCallerID(111111)
exten => _7.,2,Dial(SIP/${EXTEN:1}@sipgate,20,r)
exten => _7.,3,Congestion
exten => _7.,4,Hangup


; Kontext zum rauswaehlen ueber T-Online
; der Kontext von den SIP Telefonen verwendet
[outgoing_t-online]
exten => _8.,1,SetCIDName(222222)
exten => _8.,2,Dial(SIP/${EXTEN:1}@t-online,,tr)
exten => _8.,3 Hangup

; genau wie [outgoing_t-online] nur ohne 8
; der Kontext von den ISDN Telefonen verwendet
; ISDN => ASTERISK(DISA)=>[dialout]=>[out_t-online]
[out_t-online]
exten => _.,1,SetCIDName(222222)
exten => _.,2,Dial(SIP/${EXTEN}@t-online,,tr)
exten => _.,3 Hangup


; Eingehende Rufe auf der SIP T-Online Rufnummer
; werden an 24 weitergeleitet
[incomming_t-online]
exten => 222222,1,Dial(SIP/24)

; Eingehende Rufe auf der SIP Sipgate Rufnummer
; werden an 24 weitergeleitet
[incomming_sipgate]
exten => 111111,1,Dial(SIP/24)
;exten => 018016666260070,1,Dial(SIP/24)


; wenn die 55 von SIP Telefon gewaehlt wird
; Weitervermittlung vom Gespraech ueber CAPI
[outgoing_capi]
exten => _56.,1,Dial(CAPI/@56:${EXTEN:2})
exten => _56.,2,Hangup





;###########################################
;# Rufnummernplan fuer lokale SIP Telefone #
:###########################################

[11]
exten => 11,1,Dial(SIP/11,10)
exten => 11,2,Voicemail(11)
exten => 11,3,Hangup

[12]
exten => 12,1,Dial(SIP/12,10)
exten => 12,2,Voicemail(12)
exten => 12,3,Hangup


[13]
exten => 13,1,Dial(SIP/13,10)
exten => 13,2,Voicemail(13)
exten => 13,3,Hangup

[15]
exten => 15,1,Dial(SIP/15,10)
exten => 15,2,Voicemail(15)
exten => 15,3,Hangup

[17]
exten => 17,1,Dial(SIP/17,10)
exten => 17,2,Voicemail(17)
exten => 17,3,Hangup

[24]
exten => 24,1,Dial(SIP/24,10)
exten => 24,2,Voicemail(24)
exten => 24,3,Hangup

[26]
exten => 26,1,Dial(SIP/26,10)
exten => 26,2,Voicemail(26)
exten => 26,3,Hangup

[60]
exten => 60,1,Dial(SIP/60,10)
exten => 60,2,Voicemail(60)
exten => 60,3,Hangup

[61]
exten => 61,1,Dial(SIP/61,10)
exten => 61,2,Voicemail(61)
exten => 61,3,Hangup

Ich hoffe das war nicht zu viel.


irgendwie verliert man echt den überblick bei der vielfalst an möglichkeiten die asterisk bietet Embarassed

Ich wollte mich nie mit Telefonanalgen beschäftigen, aber bei den vielen Möglichkeiten von Astersik macht mir das richtig Spass.
Und mit der Zeit und den Erfahrungen die man sammelt wird es dann schon werden.:)

mfG Sven
 
Hallo, ne Lösung hab ich leider auch nicht zu Deinem Problem, aber bei mir ist es ganz genauso. Ich gehe zwar nicht über capi, sondern mISDN raus, aber es funktioniert auch nicht mit der GOTO Anweisung. Ohne schon :-(

Wenn Du ne Lösung hast oder findest, sag mal bescheid. Würde mich auch interessieren.

ciao, Wolfgang
 
Hallo Sven,
da war ich mal wieder zu schnell. Hier ist die Lösung unseres Problems:

[out]
exten => _.,1,Goto(dialout,7${EXTEN},1)

Wichtig ist die 1 am Ende, denn wenn man in eine extension springen will, müssen drei parameter angegeben werden. (Nachzulesen auf voip-info.org unter goto)

Da ist wohl das Beispiel, von dem wir abgeschrieben haben, leider etwas fehlerhaft gewesen :-(. Aber probier einfach mal, sollte gehen.

Wolfgang
 
Hallo Wolfgang,
hat geklappt.
Jeden Tag einen Schritt weiter... :)

Danke

Sven
 
Freut mich, wenn's hilft (ich lerne auch noch reichlich ;-) ) Und es kommen bestimmt noch einige Situationen, wo ich Hilfe gebrauche kann.

Wolfgang
 
ich blicks schonwieder nich so wirklich! ich habe nun versucht die lösung auf meine gegebenheiten anzupassen, bisher erfolglos.

wo muss denn das

[out]
exten => _.,1,Goto(dialout,7${EXTEN},1)

hin??? in konabis extension.conf unter [outgoing_sipgate] :?: oder wie??? :roll: kannst du nochmal so gut sein konabi und die extensions.conf posten? :oops:

danke

a&o
 
Hallo,

auf die schnelle: Dein angegebener Context wird vom DISA angesprungen, ist also ein eigener Context (mit namen out) Die Extension, in der DISA angesprochen wird, kann z.B. im default context stehen.

also etwa so:

Code:
[default] 
...
exten =>  55,1,DISA,no-password|out
...

[out]
exten => _.,1,Goto(dialout,7${EXTEN},1)

[dialout]
exten => _7.,1,SetCallerID(111111)
exten => _7.,2,Dial(SIP/${EXTEN:1}@sipgate,20,r)
exten => _7.,3,Congestion
exten => _7.,4,Hangup

Ich hoffe, du kannst was damit anfangen.

Wolfgang
 
ok, habe ich soweit verstanden, danke ;-)

ich habe dennoch derzeit ein problem. Und zwar hängt bei mir der Asterisk über CAPI (FritzPCIcard) an einer Auerswald TK Anlage unter der MSN 55. Am Asterisk laufen 2 Xlites (11 und 12). Nun will ich per "preselect" entscheiden, ob ich per SIP oder ISDN raustelefonieren will. SIP soll mit vorwählen der 7 geschehen, ISDN mit vorwählen der 9. Irgendwie steh ich mal wieder auf dem schlauch und bekomme das nicht geregelt. kann ich vom ISDN Telefon NUR über DISA auf einen SIP-Context kommen? gibts hier zu meiner gewünschten konfig irgendwelche dialpläne? ich komme mit der suche nicht weiter :-( ... oder kann mir sonst jemand ein beispiel geben? danke

a&o
 
Mach einfach 2 exten mit

exten => _9.,1,Dial(capi/${EXTEN:1},60,tT)
exten => _9.,2,Congestion
exten => _9.,3,Hangup

exten => _7.,1,Dial(SIP/${EXTEN:1}@sipgate,60,tT)
exten => _7.,2,Congestion
exten => _7.,3,Hangup
 
jo .. und genau das tut bei mir nich :( :cry: ich werde später mal meine confs posten. ich komm da grad nicht dran
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,831
Beiträge
2,219,105
Mitglieder
371,533
Neuestes Mitglied
ipeee
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.