[Problem] Zuordnung SIP-Account zu Endpunkt

Hativ3

Neuer User
Mitglied seit
21 Mrz 2018
Beiträge
8
Punkte für Reaktionen
0
Punkte
1
Hallo,

ich habe zwei unterschiedliche Sipgate-Accounts sowie zwei entsprechende Benutzer bei einer Asterisk 15.2.1 eingerichtet.

Ausgehend funktioniert alles einwandfrei. Eingehend klingelt es aber immer nur bei user1, selbst wenn die Telefonnummer von user2 angerufen wird. Wenn ich user1 aus der Konfiguration entferne klingelt es korrekt bei user2.

Ich habe etwas davon gelesen, dass der eingehende Anruf anhand der IP-Adresse zugeordnet wird. Ich vermute nun folgendes: Da beides Accounts bei sipgate sind ist die IP-Adresse gleich und der Anruf kann nicht dem richtigen Endpunkt zugeordnet werden.

Kann das sein? Wie kann ich das Problem lösen?

Die pjsip.conf sieht je Benutzer so aus:
Code:
[user1-sipgate-registration]
type=registration
client_uri=sip:<username>@sipgate.de:5060
contact_user=<username>
outbound_auth=user1-sipgate
expiration=120
server_uri=sip:sipgate.de:5060
transport=transport-udp

[user1-sipgate-identify]
type=identify
endpoint=user1-sipgate
match=sipgate.de

[user1-sipgate]
type=aor
contact=sip:<username>@sipgate.de

[user1-sipgate]
type=auth
username=<username>
password=<password>

[user1-sipgate]
type=endpoint
dtmf_mode=rfc4733
force_rport=yes
language=de
rewrite_contact=yes
rtp_symmetric=yes
timers=yes
from_domain=sipgate.de
disallow=all
allow=alaw
aors=user1-sipgate
context=user1-sipgate-in
from_user=<username>
outbound_auth=user1-sipgate

[user1]
type=aor
max_contacts=5

[user1]
type=auth
auth_type=userpass
username=user1
password=<password>

[user1]
type=endpoint
media_encryption=dtls
media_use_received_transport=yes
dtls_ca_file=/etc/letsencrypt/live/example.com/chain.pem
dtls_cert_file=/etc/letsencrypt/live/example.com/cert.pem
dtls_private_key=/etc/letsencrypt/live/example.com/privkey.pem
dtls_verify=fingerprint
dtls_setup=actpass
ice_support=yes
rtcp_mux=yes
use_avpf=yes
disallow=all
allow=opus
allow=ulaw
aors=user1
auth=user1
context=user1-sipgate-out

Global ist nichts außer die Transports für SIP und WebSocket konfiguriert.

extensions.conf:
Code:
[default]
exten => _X.,1,Hangup()

[user1-sipgate-out]
exten => _X.,1,Verbose(Outgoing call to ${EXTEN} from user1)
exten => _X.,n,Dial(PJSIP/${FILTER(0-9,${EXTEN})}@user1-sipgate)
exten => _X.,n,Hangup()

[user1-sipgate-in]
exten => _X.,1,Verbose(Incoming call from ${CALLERID(num)} to user1)
exten => _X.,n,Dial(${PJSIP_DIAL_CONTACTS(user1)})
exten => _X.,n,Hangup()

[user2-sipgate-out]
exten => _X.,1,Verbose(Outgoing call to ${EXTEN} from user1)
exten => _X.,n,Dial(PJSIP/${FILTER(0-9,${EXTEN})}@user2-sipgate)
exten => _X.,n,Hangup()

[user2-sipgate-in]
exten => _X.,1,Verbose(Incoming call from ${CALLERID(num)} to user2)
exten => _X.,n,Dial(${PJSIP_DIAL_CONTACTS(user2)})
exten => _X.,n,Hangup()
 
Ich würde in der extensions.conf bei eingehend mal das _X. durch die richtige Nummer ersetzen.
 
Hallo,

vielen Dank für den Tipp, aber leider funktioniert es damit auch nicht. Außerdem dachte ich dass eingehende Anrufe sowieso nur im entsprechenden Kontext landen?

Eins bringt die Änderung aber: Es klingelt nicht mehr bei dem falschen Account und ich erhalte folgende Fehlermeldung.

Code:
res_pjsip_session.c: Call from 'user1-sipgate' (UDP:217.10.79.9:5060) to extension '<sipgateusernamefromuser2>' rejected because extension not found in context 'user1-sipgate-in'.

Ich habe von einem ganz anderen Anschluss (nicht von user1!) die Nummer von user2 gewählt. Das ist auch korrekt bei "to extension <sipgateusernamefromuser2>" erfasst, allerdings ist "Call from user1-sipgate" und der Kontext "user1-sipgate-in" falsch, weshalb es auch immer bei user1 geklingelt hat. Der Kontext ist in der Konfiguration aber definitiv immer als user2 angegeben, ich habe mich da nicht vertippt.

Was könnte das für ein Konfigurationsfehler sein?
 
Moins

Ich habe etwas davon gelesen, dass der eingehende Anruf anhand der IP-Adresse zugeordnet wird.
Ja, das ist so.

Ein üblicher Workaround wäre, die Extension der "register" im ersten "gefundenen" Kontext auszuwerten.
( register => benutzer:[email protected]/extension )
...und an das richtige Gerät mit Dial() weiter zu reichen.
Wenn du weisst welche ${EXTEN} im Kontext reinkommt, dann weißt du nämlich auch von welchem "register" es kam.

Also leg mal Extensions an, die genau dem letzten Teil des "register" entsprechen.
 
  • Like
Reaktionen: Hativ3
Hallo,

das mit "register" verstehe ich nicht so ganz. Das hat doch was mit der sip.conf zu tun, oder? Ich verwende aber pjsip.

Das Stichwort weiterreichen hat mich aber auf folgende Anpassung der extension.conf gebracht, die den einkommenden Anruf in den richtigen Kontext weiterleitet:

Code:
[default]
exten => _X.,1,Hangup()

[user1-sipgate-out]
exten => _X.,1,Verbose(Outgoing call to ${EXTEN} from user1)
exten => _X.,n,Dial(PJSIP/${FILTER(0-9,${EXTEN})}@user1-sipgate)
exten => _X.,n,Hangup()

[user1-sipgate-in]
exten => _<sipgateusernamefromuser2>,1,GoTo(user2-sipgate-in,<sipgateusernamefromuser2>,1) ; <----- NEU
exten => _<sipgateusernamefromuser1>,1,Verbose(Incoming call from ${CALLERID(num)} to user1)
exten => _<sipgateusernamefromuser1>,n,Dial(${PJSIP_DIAL_CONTACTS(user1)})
exten => _<sipgateusernamefromuser1>,n,Hangup()

[user2-sipgate-out]
exten => _X.,1,Verbose(Outgoing call to ${EXTEN} from user2)
exten => _X.,n,Dial(PJSIP/${FILTER(0-9,${EXTEN})}@user2-sipgate)
exten => _X.,n,Hangup()

[user2-sipgate-in]
exten => _<sipgateusernamefromuser2>,1,Verbose(Incoming call from ${CALLERID(num)} to user2)
exten => _<sipgateusernamefromuser2>,n,Dial(${PJSIP_DIAL_CONTACTS(user2)})
exten => _<sipgateusernamefromuser2>,n,Hangup()

Funktioniert. Ist aber unschön. Gibt es keine Möglichkeit den einkommenden Anruf nicht nur an der IP, sondern auch an weiteren Details zu identifizieren?
 
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.