Sipgate Trunking - Fehler in Dialplan?

chrufru

Neuer User
Mitglied seit
21 Dez 2011
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hallo Forum, ich bin ganz neu hier und habe Probleme mein Asterisk 1.8 mit Sipgate Trunking zum laufen zu bringen:
Das ganze lauft auf einem VServer (Debian Squeeze).

Mein Problem ist das irgendwas mit dem Dialplan nicht stimmt. Registrierung steht. Ich bekomme beim Anrufen dauernd Hangup's. Folgende Meldung wird in der CLI> angezeigt:
'Peer' (0.0.0.0:0000) to extension '0000000000' rejected because extension not found in context 'default'.


Komischer Weise habe ich aber keinen "Default" mehr gesetzt. Bitte um eure Hilfe...

Hier meine Skript Datei zum Ändern der SIP Einstellungen im Asterisk:
Code:
#!/bin/bash
# Asterisk Sipgate Configuation
# 
#

# Sip Config
rm /etc/asterisk/sip.conf
echo "
[general]
static=yes  ; Schreibgeschützt
language=de 
tcpenable=yes
srvlookup=yes
alwaysauthreject=yes
allowguest=no
qualifyfreq=10
defaultexpiry=120
externip=0.0.0.0
bindport=5060
tcpbindaddr=0.0.0.0
register => [B]SIP-ID[/B]:[B]PASS[/B]@sipgate-sp/[B]SIP-ID[/B]

[sipgate-sp]
type=peer
username=[B]SIP-ID[/B]
fromuser=[B]SIP-ID[/B]
secret=[B]PASS[/B]
host=sipconnect.sipgate.de
fromdomain=sipconnect.sipgate.de
insecure=invite 
canreinvite=no
outboundproxy=sipconnect.sipgate.de
port=5060
dtmfmode=rfc2833
registertimeout = 600
context=sip_out

[sipgate-in]
type=peer
host=sipconnect.sipgate.de
fromdomain=sipconnect.sipgate.de
insecure=port,invite
canreinvite=no
nat=no
port=5060
dtmfmode=rfc2833
context=sip_in

[200]
type=friend
transport=tcp
username=[B]USER[/B]
secret=[B]PASS[/B]

host=dynamic
domain=X.X.X.X
user=[B]USER[/B]
canreinvite=yes
" >> /etc/asterisk/sip.conf

# Erstelle Extensions
rm /etc/asterisk/extensions.conf 
echo "
[sip_in]
exten => [B]Sipgate-TeleNummer[/B],1,Dial(SIP/200,60)

[sip_out]
exten => _X.,1,Set(CALLERID(num)=[B]SIP-ID[/B])
exten => _X.,2,Dial(SIP/${EXTEN}@sip_out,30,trg)
exten => _X.,3,Hangup
" >> /etc/asterisk/extensions.conf

Könnt ihr mir sagen wo der Fehler liegt? Irgendwas stimmt nicht mit dem [sip_out] in der extensions.conf
 
Auf die Schnelle vier Fehler/Anmerkungen:

  • externip=0.0.0.0 ist Quatsch, entweder richtige IP, oder aber (da VServer) weglassen
  • Die gesamte SIPGATE-Konfig sollte vereinfacht werden, siehe nachstehendes Beispiel
  • canreinvite=yes ist deprecated und währe korrekt directmedia=yes
  • Der Dial-Befehl (abgehend) passt nicht, korrekt wäre bei Deinen Daten: exten => _X.,2,Dial(SIP/${EXTEN}@sipgate-sp,30,trg)

Und hier noch eine funktionierende Konfiguration ffür SIPGATE-Trunking für die sip.conf:

Code:
[sipgate-sp]
type=peer
defaultuser=SIP-ID
fromuser=SIP-ID
secret=PASS
host=sipconnect.sipgate.de
fromdomain=sipconnect.sipgate.de
registertimeout=600 
sendrpid=pai
insecure=port,invite
usereqphone=no
t38pt_udptl=no
disallow=all
allow=ulaw
allow=alaw
dtmfmode=rfc2833
context=sip_in
 
@abw1oim: Danke für die schnelle Hilfe! Die externip=0.0.0.0 wurde von mir geändert, dort stand die Adresse des VServers drin. Was ich nicht richtig verstehe ist 1., dass es in manchen Beispielen nur einen Peer für Sipgate gibt und in anderen Beispielen zwei. Einen für Ausgehend und einen für Eingehend. In Deinem Beispiel ist wieder nur Eingehend vorhanden. 2. verstehen ich den Gebrauch der context= Angaben nicht. Brauche ich den context= Befehl nur wenn ich nicht passende Peer Namen nutze?

Edit: Was bewirkt den dieser hier: t38pt_udptl=no ?
 
Zuletzt bearbeitet:
@abw1oim: Habe dein Beispiel mal laufen lassen. Wieder das gleiche Problem: Asterisk versucht wieder die gewählte Nummer als Peer in "default" zu suchen....

Ich hatte in einer vorhergehenden Konfig mal einen [default] in der extensions.conf stehen. Kann es sein dass diese Konfig irgendwo in einer anderen Datei vorhanden ist?
 
Zuletzt bearbeitet:
Ohne die jetzt angepasste Konfig kann ich zum Problem nichts sagen.

ist nicht kriegsgewinnentscheidend, führt nur zur Ablehnung von T38-Reinvites (FoIP)

definiert den context, in dem eingehende Gespräche landen, für angehende ist das eben nicht relevant.
Ein oder zwei Definitionen in sip.conf ist Ansichtssache, es bedarf aber tatsächlich fachlich nur einer (von Spezialfällen, die aber mit SIPGATE nicht auftreten, mal abgesehen).
 
Hier die gewünschte Konfig (von Dir übernommen):
Code:
#!/bin/bash
# Asterisk Sipgate Configuation
# 
#

# Sip Config
rm /etc/asterisk/sip.conf
echo "
[general]
static=yes  ; Schreibgeschützt
language=de 
tcpenable=yes
srvlookup=yes
alwaysauthreject=yes
allowguest=no
qualifyfreq=10
defaultexpiry=120
;externip=X.X.X.X
bindport=5060
tcpbindaddr=X.X.X.X
register => XXXXXX:XXXX@sipgate-sp/XXXXX

[sipgate-sp]
type=peer
defaultuser=XXXXX
fromuser=XXXX
secret=XXXX
host=sipconnect.sipgate.de
fromdomain=sipconnect.sipgate.de
registertimeout=600 
sendrpid=pai
insecure=port,invite
usereqphone=no
t38pt_udptl=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
dtmfmode=rfc2833
context=sip_in

[200]
type=friend
transport=tcp
username=XXXX
secret=XXXX
host=dynamic
domain=X.X.X.X
user=XXXXX
canreinvite=yes
" >> /etc/asterisk/sip.conf

# Erstelle Extensions
rm /etc/asterisk/extensions.conf 
echo "
[sip_in]
exten => 49XXXXXXXXX,1,Dial(SIP/200,60)
[sip_out]
exten => _X.,1,Set(CALLERID(num)=SIP-ID)
exten => _X.,2,Dial(SIP/${EXTEN}@sipgate-sp,30,trg)
exten => _X.,3,Hangup
" >> /etc/asterisk/extensions.conf

Edit:
definiert den context, in dem eingehende Gespräche landen, für angehende ist das eben nicht relevant.
Würde dies bedeuten dass ich den [sip_out] Context weglassen muss (Nur die Bezeichnung)?
 
Zuletzt bearbeitet:
Ich will jetzt nicht kleinlich sein und auf das canreinvite hinweisen ;), aber: 200 fehlt ein Kontext (in dem von 200 kommende Gesprächswünsche verarbeitet werden), daher greift default und es geht schief. Daher

Code:
[200]
type=friend
transport=tcp
username=XXXX
secret=XXXX
host=dynamic
domain=X.X.X.X
user=XXXXX
directmedia=yes
context=sip_out

und es wird erstaunlicherweise funktionieren. Falls dann doch noch was wäre, brauchen wir hier ein Debug von der Asterisk-CLI von einem gescheiterten Versuch ...
 
Danke, leider werde ich aus dem Debug nicht wirklich schlau. Der Befehl lautet: sip set debug peer sipgate-sp:
Code:
XXXXX*CLI> sip set debug peer sipgate-sp
SIP Debugging Enabled for IP: 217.10.68.150
Really destroying SIP dialog [email protected]' Method: REGISTER
Audio is at 5060
Adding codec 0x8 (alaw) to SDP
Adding codec 0x4 (ulaw) to SDP
Adding codec 0x2 (gsm) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (NAT) to 217.10.68.150:5060:
INVITE sip:sipconnect.sipgate.de SIP/2.0
Via: SIP/2.0/UDP X.X.X.X:5060;branch=XXXXXX;rport
Max-Forwards: 70
From: "TNUMMER" <sip:[email protected]>;tag=XXXXXX
To: <sip:sipconnect.sipgate.de>
Contact: <sip:XXXXX@XXXXXX:XXXX>
Call-ID: [email protected]
CSeq: 102 INVITE
User-Agent: Asterisk PBX 1.8.8.0
Date: Thu, 22 Dec 2011 18:22:57 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
P-Asserted-Identity: "TNUMMER" <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 309

v=0
o=root XXXXXX IN IP4 X.X.X.X
s=Asterisk PBX 1.8.8.0
c=IN IP4 X.X.X.X
t=0 0
m=audio 5020 RTP/AVP 8 0 3 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

---

<--- SIP read from UDP:217.10.68.150:5060 --->
SIP/2.0 404 Not found (no match)
Via: SIP/2.0/UDP X.X.X.X:XXXX;branch=XXXXXX;rport=5060
From: "4964719898605" <sip:[email protected]>;tag=XXXXX
To: <sip:sipconnect.sipgate.de>;tag=XXXXXXXXXXXXXXXXXXX
Call-ID: [email protected]
CSeq: 102 INVITE
Content-Length: 0

<------------->
--- (7 headers 0 lines) ---
Transmitting (NAT) to 217.10.68.150:5060:
ACK sip:sipconnect.sipgate.de SIP/2.0
Via: SIP/2.0/UDP XXXX:XXXX;branch=XXXXXX;rport
Max-Forwards: 70
From: "SIPTELENUMMER" <sip:[email protected]>;tag=XXXXXXXXXX
To: <sip:sipconnect.sipgate.de>;tag=XXXXXXXXXXXXXXXXXX
Contact: <sip:[email protected]:XXXX>
Call-ID: [email protected]
CSeq: 102 ACK
User-Agent: Asterisk PBX 1.8.8.0
Content-Length: 0


---
Really destroying SIP dialog '[email protected]' Method: INVITE
[Dec 22 19:24:04] NOTICE[312]: chan_sip.c:12622 sip_reregister:    -- Re-registration for  XXXXX@sipgate-sp
REGISTER 11 headers, 0 lines
Reliably Transmitting (NAT) to 217.10.68.150:5060:
REGISTER sip:sipconnect.sipgate.de SIP/2.0
Via: SIP/2.0/UDP XXXXX:XXXX;branch=z9hG4bK5bd9e1c5;rport
Max-Forwards: 70
From: <sip:[email protected]>;tag=XXXXXXX
To: <sip:[email protected]>
Call-ID: [email protected]
CSeq: 117 REGISTER
User-Agent: Asterisk PBX 1.8.8.0
Authorization: Digest username="XXXXXX", realm="sipconnect.sipgate.de", algorithm=MD5, uri="sip:sipconnect.sipgate.de", nonce="XXXXXX/Prc/0AAC", response="XXXXXXXXXXXX"
Expires: 120
Contact: <sip:XXXXXX@XXXXX:XXXX>
Content-Length: 0


---

<--- SIP read from UDP:XXXXXXXX:XXXX --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP XXXXXX:XXXX;branch=XXXXXX;rport=5060
From: <sip:[email protected]>;tag=XXXX
To: <sip:[email protected]>;tag=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Call-ID: [email protected]
CSeq: 117 REGISTER
Contact: <sip:[email protected]:XXXX>;expires=120
Content-Length: 0

<------------->
--- (8 headers 0 lines) ---
Scheduling destruction of SIP dialog '[email protected]' in 32000 ms (Method: REGISTER)
[Dec 22 19:24:04] NOTICE[312]: chan_sip.c:20205 handle_response_register: Outbound Registration: Expiry for sipgate-sp is 120 sec (Scheduling reregistration in 105 s)
Really destroying SIP dialog '[email protected]' Method: REGISTER
XXXX*CLI>

Im nächsten Test, werde ich mal alles auf UDP stellen, evtl. liegt es ja daran. Eingehende Gespräche kommen auch nicht durch....
 
Das Problem steckt hier:
To: <sip:sipconnect.sipgate.de>
Da scheint der Wert von ${EXTEN} leer zu sein (warum auch immer), daher das Ergebnis 404 - Not Found. Im Übrigen reicht hier für die Ammäherung auch einfach ein VERBOSE (asterisk -rvvvvv), dann siehst Du, was Dein Asterisk macht, respektive auch, welche Nummer er wählz, bzw. was bei einem eingehenden Telefonat passiert.
 
Sipgate Trunking

Ich komme leider nicht weiter. Bekomme überhaupt keine Verbindungen zustande, hier nochmal ein Update-Skript:
Code:
#!/bin/bash
# VServer Debian Squeeze 6.0 Asterisk Update-Skript
# 
#

# Erstellen der Voip-Anbieter und SIP-Endgeräte
rm /etc/asterisk/sip.conf
echo "
[general]
port=5060              ; Der Port fuer SIP
bindaddr=X.X.X.X  ; Hier die IP-Adresse des Asterisk-Rechners angeben
context=default         ; Startpunkt fuer Anrufe
srvlookup=yes
register => SIP-ID:[email protected]/SIP-ID

[sipconnect.sipgate.de]
type=peer
secret=PASS
username=SIP-ID
defaultuser=SIP-ID
fromuser=SIP-ID
fromdomain=sipconnect.sipgate.de
host=sipconnect.sipgate.de
outboundproxy=sipconnect.sipgate.de
canreinvite=no
registertimeout=600
disallow=all
allow=alaw,ulaw,ilbc,gsm
dtmfmode=rfc2833
context=Sipgate Eingehend

[200]
type=friend
username=200
secret=PASS
host=dynamic
;mailbox=97
host=dynamic
domain=X.X.X.X
user=200
canreinvite=no

" >> /etc/asterisk/sip.conf

# Routing für Eingehende und Abgehende Gespräche
rm /etc/asterisk/extensions.conf
echo "
[general]
static=yes
writeprotect=no

[Sipgate Eingehend]
exten => SIP-ID,1,Dial(SIP/200)
exten => SIP-ID,n,Hangup

[Sipgate Abgehend]
exten => _X.,1,Set(CALLERID(num)=SIP-ID)
exten => _X.,2,Dial(SIP/${EXTEN}@sipconnect.sipgate.de,30,trg)
exten => _X.,3,Hangup

[default]
include => Sipgate Eingehend
include => Sipgate Abgehend
" >> /etc/asterisk/extensions.conf

Die Konfiguration habe ich von diesem Beispiel: http://www.sipgate.de/team/faq/article/148/Wie_konfiguriere_ich_Asterisk_fuer_sipgate_team

Da ich keine Gespräche führen kann, hier den Debug:
Code:
  == Using SIP RTP CoS mark 5
    -- Executing [NUMMER@default:1] Set("SIP/200-00000014", "CALLERID(num)=SIP-ID") in new stack
    -- Executing [NUMMER@default:2] Dial("SIP/200-00000014", "SIP/@sipconnect.sipgate.de,30,trg") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/@sipconnect.sipgate.de
    -- SIP/sipconnect.sipgate.de-00000015 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [NUMMER@default:3] Hangup("SIP/200-00000014", "") in new stack
  == Spawn extension (default, NUMMER, 3) exited non-zero on 'SIP/200-00000014'
    -- Registered SIP '200' at X.X.X.X:48265
:eek: Leider kann ich den Debug nicht so gut lesen. Bitte um Hilfe. Was ich merkwürdig finde ist, dass an mein Endgerät (Handy) mit dem Peernamen [200] lauter Nullen und Zahlen angehängt werden. Glaube nicht das dies so funktionieren kann...

Die Anleitung von Sipgate kann doch nicht falsch sein. Oder ist die nicht mehr aktuell für Asterisk 1.8-current?
 
Dial("SIP/200-00000014", "SIP/@sipconnect.sipgate.de,30,trg")

Wie abw1oim schon bemerkt hat, wird keine Nummer gewählt bzw. das Feld ist leer. Da das Shell-Skript ${EXTEN} vermutlich selbst als Variable versteht, müsstest Du das escapen, damit auch wirklich ${EXTEN} in die extensions.conf geschrieben wird.

Die vielen Nullen und die Zahl ist ganz in Ordnung so. Das ist der Channelname, und den generiert Asterisk aus Peer+fortlaufende Zahl.

Sind Leerzeichen in Context-Namen eigentlich erlaubt? Ich dachte bis jetzt immer nein, aber scheinbar funktioniert es doch.
 
@rentier-s: Könntest Du bitte genauer sagen was ich machen muss. Mit "Escapen" kann ich nichts anfangen. Bin kein IT'ler komme aus der Maschinenbau Ecke....

Soll in {EXTEN} die gemeinte Extension rein?
Mfg
 
@rentier-s:
Das mit den Kontextnamen verblüfft mich auch, auch ich nahm bisher immer an, Leerzeichen wären nicht erlaubt ....
Ansonsten: Danke für den Tipp mit dem escapen, das hatte ich übersehen (hatte allerdings auch noch keinen Fall, wo jemand die Konfig-dateien per Shell-Skript befüllt :)).
 
Hatte leider noch keine Zeit zum Testen. Danke für die Hilfe. Das Editieren per Shell Skript, ist aber doch kein Nachteil? Das ist das Ende von meinem Installations-Skript. Wenns passt, läuft das in einem Ratsch durch, und alles passt. Ich finde dies Einfacher zu händeln.

In diesem Sinne, ein frohes Fest..:eek:

MFG

Chrufru
 
Wie sieht das CLI jetzt aus? Da müsste zumindest jetzt die gewählte Nummer im Dial zu finden sein.
 
Huraa. Es funktioniert

Danke für die Hilfe. Es geht. Das "Escapen" hat es gebracht. Nun funktionieren die Gespräche. Hatte wohl nicht immer richtig neu gestartet, bzw. mit einem
Code:
<CLI> dialplan reload
klappte es dann.:D

Ist dieses (\$) eine saubere Lösung? Kann ich die so laufen lassen?::eek:
 
Warum soll das nicht "sauber" sein? Wenn man ein Funktionszeichen in eine Variable packen will, muss es maskiert werden. Das ist ganz normal beim Programmieren.
 
Gelöst!

Hallo, hier nochmal die Funktionierende Config:
Code:
#!/bin/bash
#
# VServer Asterisk Config Skript
# Debian 6.0 (Squeeze), 64 Bit

# Erstelle Sipgate Zugang
rm /etc/asterisk/sip.conf
echo "
[general]
dtmfmode = rfc2833
session-timers=refuse
srvlookup=yes
language=de
tcpenable=yes
alwaysauthreject=yes
allowguest=no
qualifyfreq=10
defaultexpiry=120
tcpbindaddr=X.X.X.X
localnet=127.0.0.1/255.0.0.0
bindport=5060
disallow=all
allow=ulaw
allow=alaw
allow=g729
allow=gsm
tos_sip=cs3 ; Sets TOS for SIP packets.
tos_audio=ef ; Sets TOS for RTP audio packets.
register => 1234560t0:PASS@sipgate-sp/1234560t0
register => P-ID:[email protected]/P-ID
;===================================================================
[sipgate-sp]
type=peer
dtmfmode=rfc2833
username=1234560t0
fromuser=1234560t0
secret=PASS
host=sipconnect.sipgate.de
fromdomain=sipconnect.sipgate.de
insecure=port,invite
nat=no
disallow=all
allow=alaw
allow=g729
allow=gsm
outboundproxy=sipconnect.sipgate.de
port=5060
canreinvite=no
context=Eingehend
;===================================================================
[personalvoip]
type=peer
host=personal-voip.de
username=P-ID
insecure=port,invite
secret=PASS
fromuser=P-ID
canreinvite=no
context=Eingehend
;===================================================================
; Hardware Engeräte 
;===================================================================
[200]
type=friend
transport=tcp
nat=yes 
username=200
secret=F18394
host=dynamic
domain=X.X.X.X
user=200
canreinvite=no
mailbox=97@default
" >> /etc/asterisk/sip.conf

# Erstelle Extensions
rm /etc/asterisk/extensions.conf
echo "
[general]
static=yes
writeprotect=no
autofallthrough=yes

[Abgehend]
; Alle die keinen Kontext haben über Deafault
;Alle Abgehenden Gespräche die im [General] stehen @Register
exten => _X.,1,Set(CALLERID(num)=1234560t0)
exten => _X.,2,Dial(SIP/\${EXTEN}@sipgate-sp,,r)
exten => _X.,3,Hangup

[Eingehend]
; Von Sipgate in General Register
exten => 1234560t0,1,Dial(SIP/200,60)
exten => 1234560t0,2,Voicemail(97,u)
exten => 1234560t0,3,Hangup
; Von PersonalVoip in General Register
exten => P-ID,1,Dial(SIP/200,60)
exten => P-ID,n,Voicemail(97,u)
exten => P-ID,n,Hangup

[default]
include => Abgehend
" >> /etc/asterisk/extensions.conf

# Mailbox Einstellen
rm /etc/asterisk/voicemail.conf
echo "
; Voicemail Configuration
[general]
format=wav
serveremail=asterisk
attach=yes
maxsilence=10
silencethreshold=128
maxlogins=3
emaildateformat=%A, %d %B %Y at %H:%M:%S

[default]
97 => 1234,Example Mailbox,root@localhost
" >> /etc/asterisk/voicemail.conf


# Prüfen Starten in Debug Mode
asterisk -rvvvvv
# Wichtig Dialplan (extensions.conf) und SIP (sip.conf) Updaten <CLI>
sip reload
dialplan reload

Soweit funktionieren Eingehende sowie Ausgehende Gespräche. Ich würde noch gerne die Mailbox von dem Endgerät 200 aus anwählen können. Des weiteren wäre es schön ein Konferenzraum einzurichten. Ich habe weitere 5 Festnetznummern und möchte über diese verschiedenen Nummern in den Konferenzraum gelangen. Da meine Sipgate Nummer ja auf 2 Teilnehmer begrenzt ist. Oder gibt es eine andere Möglichkeit? Kann ich evtl. die Sipgatenummer verlängern? So dass ich nur Eine Nummer mit weiteren Durchwahlen habe? Außerdem bin ich mir nicht sicher, ob eine Konferenz ohne Dahddi oder Zaptel möglich ist....
 
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.