Anrufe extern --> Asterisk SIP-Gerät

cmohr

Neuer User
Mitglied seit
9 Sep 2005
Beiträge
49
Punkte für Reaktionen
0
Punkte
0
Hi,

über ein und denselben SIP-Account kommen verschiedene Rufnummern an, diese möchte ich unterscheiden und verschiedene Aktionen ausführen (zum korrekten Gerät weiterleiten, Voicemail, Rufweiterleitung etc.)

Wie kann ich dies realisieren?

Meine Konfig-Dateien sehen bislang wie folgt aus.
Im speziellen landen momentan zwei Nummern auf der 1004. Ich müsste aber die Rufnummer xxx14 weiterleiten. Das klappt aber so nicht

sip.conf

Code:
[general]
context=default                 ; Default context for incoming calls
register => ...

[toplink-voice.de]              ; Anmeldung am Toplink-Server
type=peer
host=toplink-voice.de
username=User
fromuser=User
fromdomain=toplink-voice.de
secret=PW
nat=yes
context=sip

[incoming]                           ; für ankommende Gespräche
type=friend
username=User
host=toplink-voice.de
fromuser=User
fromdomain=toplink-voice.de
nat=no
context=default
canreinvite=no

[1002]                          
type=friend
host=dynamic
defaultip=192.168.1.101
dtmfmode=rfc2833
context=sip
callerid="..." <1002>

[1003]                        
type=friend
host=dynamic
defaultip=192.168.1.102
dtmfmode=rfc2833
context=sip
callerid="..." <1003>

[1001]                        
type=friend
host=dynamic
defaultip=192.168.1.103
dtmfmode=rfc2833
context=sip
callerid="..." <1001>

[1004]                        
type=friend
host=dynamic
username=1004
secret=...
defaultip=192.168.1.104
disallow=all
allow=ulaw
allow=alaw
allow=gsm
canreinvite=yes
dtmfmode=rfc2833
context=sip


extensions.conf

Code:
[GLOBALS]
FAXNUMMER=SIP/[email protected]
TOPLINK1=20180204
TOPLINK2=20180214

[default]                               ;incoming
exten => ${TOPLINK1},1,Dial(SIP/1004,60)
exten => ${TOPLINK1},2,Congestion
exten => ${TOPLINK1},102,Busy
exten => ${TOPLINK2},1,Dial(${FAXNUMMER})               ; Rufnummer ...14 wird an Web.de Faxnummer (s.o.) weitergeleitet


[sip]
include => default           
exten => _0X.,1,Dial(SIP/${EXTEN}@toplink-voice.de)     
exten => _X.,1,Goto(anruferauswertung, ${CALLERIDNUM},1)

[anruferauswertung]
exten => ${TOPLINK1},1,Dial(SIP/1004)
exten => ${TOPLINK2},1,Dial(${FAXNUMMER})


Oder muss ich mit der Funktion SIPGetHeader arbeiten um den "To-Header" zu bekommen?
Aber wie binde ich das dann ein, also wie muss die Regel aussehen?


Vielen Dank im Voraus!
 
Wie kann ich dies realisieren?

Indem Du die Dokumentation zu Asterisk liest, hier die Suchen-Funktion im Forum benutzt und/oder Dir einfach mal die Beispiel-Konfigurationsdateien die mit Asterisk geliefert werden, anschaust.
 
da finde ich nur Informationen dazu, wenn man mehrere Accounts hat, mit je einer Nummer...

Nicht aber mehrere Nummern auf einem Account

:doof:
 
Wenn ich Dich richtig verstanden habe, hast Du bei Toplink 2 Rufnummern, beide Rufnummern werden schon bei Toplink auf einen SIP-account von Dir gemapped, nennen wir ihn ToplinkID. Die Anrufe (egal auf welche Deiner beiden Nummern) erfolgen also immer von Toplink zu Dir auf Deine ToplinkID, Du erfährst also gar nicht welche Nummer gewählt wurde, da hilft nur 2 SIP accounts bei Toplink zu haben, für jede Nummer einen...

Gruß,
Tin
 
Du denkst viel zu kompliziert

jede Nummer, die über Deinen Account reinkommt, hat ja irgendeine Id anhand derer sie erkannt wird. Wie die ID genau aussieht, ist von Provider zu Provider unterschiedlich. Bei Sipgate ist es z.B. die 7-stellige User-ID.

Wenn Du nun also 3 Sipgate Accounts mit 3 verschiedenen IDs hast, dann werden die einfach so im incoming-Context sortiert:
Code:
exten => 1234567,1,Dial(SIP/10)
 ; ruft bei Anrufen auf die Sipgate Nummer 1 das SIP-Gerät 10  an
exten => 2345671,1,Dial(SIP/10)
 ; ruft bei Anrufen auf die Sipgate Nummer 2 ebendfalls das SIP-Gerät 10  an
exten => 3456712,1,Dial(SIP/10)
 ; ruft bei Anrufen auf die Sipgate Nummer 3 ebenfalls das SIP-Gerät 10  an

Welches SIP-Gerät Du welcher ankommenden Rufnummer zuordnest, bleibt einzig und alleine Dir selbst überlassen.
Ich hoffe, das Prinzip ist klargeworden. Übrigens sind das Asterisk-Grundlagen. Deshalb hatte ich das genaue Studium der Doku empfohlen.


--- EDIT ---

wie das allerdings im vorliegenden Fall gehandhabt wird, wenn schon vom Provider keine UNterscheidung gemacht wird, müßte man anhand des SIP Debug einmal analysieren
 
wie TinTin korrekt verstanden hat habe ich nur einen Toplink-Account, auf den mehrere Nummern gemapped werden.
Nicht mehrere Accounts!

Die Information, welche Nummer angewählt wird, kommt schon bei Asterisk an, das kann ich mit Hilfe des Debuggings erkennen (in der Form <[email protected]>).

Habe versucht dies so in die Regel einzubauen

Code:
exten => +49301234567,1,Dial(SIP/10)

dann wird ein Anruf aber überhaupt nicht mehr durchgeleitet, es klingelt kein Telefon

Muss ich hier ein anderes Format wählen, ist das so grundsätzlich der korrekte Ansatz?
 
um genau zu sein, erfolgt folgende Ausgabe bei Asterisk:

Code:
build_route: Record-Route hop: <sip:[email protected]:5060;tpl-nat=yes;lr=on>
build_route: Record-Route hop: <sip:[email protected];ftag=37193fd086bf8d2;lr=on>
build_route: Record-Route hop: <sip:[email protected];ftag=37193fd086bf8d2;lr=on>
build_route: Contact hop: <sip:[email protected]:5060;user=phone>
    -- Executing Dial("SIP/D1090xxxxx-e5da", "SIP/1004|60|Ttr") in new stack
SIMPLE DIAL (NO URL)
Setting NAT on RTP to 0
Outgoing Call for 1004
Call from user '1004' is 1 out of 0
    -- Called 1004
(Provisional) Stopping retransmission (but retaining packet) on '[email protected]' Request 102: Found
(Provisional) Stopping retransmission (but retaining packet) on '[email protected]' Request 102: Found
    -- SIP/1004-42d2 is ringing
update_user_counter(1004) - decrement outUse counter

in dem Eintrag
<sip:[email protected]:5060;tpl-nat=yes;lr=on>
steht also genau die angewählte Nummer, auch wenn sie über den gleichen Toplink-Account angerufen werden.
Die IP ist die aufgelöste Domain 'toplink-voice.de'
 
Hast Du es denn schon versucht mit SIPGetHeader(testvariable=To) und dann GotoIF... versucht? (Geht nur mit Asterisk 1.2)

Zum testen was drinsteht reicht auch erstmal ein:

1004,1,SIPGetHeader(testvariable=To)
1004,2,Noop(${testvariable})

Gruß,
Tin
 
du meinst ich soll den String ${EXTEN} bspw. mit der Funktion Substr() extrahieren? Und wie soll ich diesen dann weiterverwenden? So wie ich das vorher schon angedacht habe?
exten => 1234567,1,Dial(SIP/1004)


den kompletten String
<sip:[email protected]>

kann ich nicht in der Regel verwenden, oder?
 
Mach doch in Deinen Dialplan mal ein exten => _.,1,NoOP( ${EXTEN}) und poste die Ausgabe auf der CLI, wenn dieser Befehl ausgeführt wird. Dann sehen wir, was in der EXTEN überhaupt ankommt. (ich befürchte mal, Dein Username ...)

Ansonsten solltest Du mal den Weg von TinTin probieren.
 
Hi,

das hier ist die Ausgabe der CLI, wenn ich die Zeile mit NoOp mit einfüge:

D109xxxx is not a local user
Stopping retransmission on '[email protected]' of Response 118258650: Found
Setting NAT on RTP to 0
Check for res for D109xxxxx
D109xxxxx is not a local user
build_route: Record-Route hop: <sip:[email protected]:5060;tpl-nat=yes;lr=on>
build_route: Record-Route hop: <sip:[email protected];ftag=cbb1fc2eb2125fa;lr=on>
build_route: Record-Route hop: <sip:[email protected];ftag=cbb1fc2eb2125fa;lr=on>
build_route: Contact hop: <sip:[email protected]:5060;user=phone>
-- Executing NoOp("SIP/D109xxxx-2013", "22180204") in new stack
-- Timeout on SIP/D109xxxxx-2013
== CDR updated on SIP/D109xxxxxx-2013
-- Executing NoOp("SIP/D109xxxxxx-2013", "t") in new stack
-- Timeout on SIP/D109xxxxxx-2013
== CDR updated on SIP/D109xxxxx-2013
-- Executing NoOp("SIP/D109xxxxxx-2013", "t") in new stack
-- Executing NoOp("SIP/D109xxxxxx-2013", "h") in new stack
update_user_counter(D109xxxxxxx) - decrement inUse counter
D109xxxxxx is not a local user
Stopping retransmission on '[email protected]' of Response 703569241: Found


Die Rufnummer an sich kommt also in der EXTEN an, aber wenn ich allerdings die Rufnummer mit der ...14 hinten anrufe kommt im NoOp trotzdem die Ausgabe der ...04 !?
 
dann habe ich noch mal den Vorschlag von TinTin berücksichtigt. Aber er scheint SIPGetHeader nicht zu kennen, ist diese auch erst ab der Version 1.2 verfügbar?

Habe noch 1.0.08


No application 'SIPGetHeader' for extension (default, 22180204, 2)
No application 'SIPGetHeader' for extension (default, h, 2)
 
cmohr schrieb:
dann habe ich noch mal den Vorschlag von TinTin berücksichtigt. Aber er scheint SIPGetHeader nicht zu kennen, ist diese auch erst ab der Version 1.2 verfügbar?
Habe noch 1.0.08

Laut voip-info.org:
Code:
See bug 2838 - introduced for/in Asterisk 1.1
.

Da aber Asterisk 1.2 inzwischen eh released worden ist, schadet es sicher nicht upzudaten. Ich habe allerdings bisher weder von Problemen noch von Erfolgsberichten gehört. Ich werde auch in absehbarer Zeit umsteigen.

Vorher gibts auf jeden Fall ein Backup der Konfiguration, damit ich im Notfall downgraden kann. *g*

Volker
 
habe soeben via CVS ein update durchgeführt.

allerdings sagt er mir trotz erfolgreicher Installation noch Version 1.0.8
und die Applikation SIPGetHeader kennt er auch noch nicht

hmm...
 
habe ein update via CVS mit

cvs checkout -r v1-0 zaptel libpri asterisk asterisk-addons asterisk-sounds

durchgeführt. sollte doch so klappen, oder?

Mich verwundert sehr, dass er 1.0.8 anzeigt und SIPGetHeader nicht kennt...
 
Hast Du auch neu compiliert und auch ein make install gemacht?

Volker
 
cmohr schrieb:
cvs checkout -r v1-0 zaptel libpri asterisk asterisk-addons asterisk-sounds

Das v1-0 ist sicher falsch. Versuche da mal v2-0 oder schau auf der Webseite nach wie der CVS-Zweig für die 2.0 heißt.

Volker
 
erledigt ;=)

jetzt geht's weiter mit dem SIPGetHeader
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,878
Beiträge
2,220,026
Mitglieder
371,604
Neuestes Mitglied
broekar
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.