CALLERID auslesen und weiterreichen

kegelstumpf

Neuer User
Mitglied seit
1 Mai 2008
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hallo,
ich habe folgendes Problem:
Ich betreibe einen Asterisk-Server, bei dem eingehende Gespräche auch auf Handys oder andere Festnetztelefone per Sipgate-Account weitergeleitet werden sollen. Dabei muss die Rufnummer des Anrufenden auf dem Display desjenigen erscheinen, an den das Gespräch weitergeleitet wird und nicht die Nummer des Sipgate-Accounts. Es funktioniert bereits, dass ich irgendeine beliebige Nummer übermittle per:

Code:
[sip-out]
exten => _0[1-9]X.,1,Set(CALLERID(num)=cid)
exten => _0[1-9]X.,2,Set(CALLERID(name)=49xxxxxxxxx)
exten => _0[1-9]X.,3,Dial(SIP/${EXTEN}@sipgate-out)
exten => _0[1-9]X.,4,Hangup

Allerdings will ich ja die Nummer des Anrufenden übermitteln und dazu müsste ich dessen CALLERID auslesen, diese dann in eine Variable schreiben und diese dann an den sipgate-out übergeben. Oder liege ich da vollkommen
falsch? Habs schon versucht mit:
Code:
exten = >_0[1-9]X.,1,ImportVar(cid=sipgate-in,CALLERID)
exten => _0[1-9]X.,2,Set(CALLERID(num)=cid)
aber das funktioniert nicht und ich weiß auch gar nicht, ob das die richtige Herangehensweise ist. Wäre dankbar für alle Ratschläge.
 
Im Prinzip hattest Du schon die richtige Grundidee, allerdings zu kompliziert :rolleyes:

Sipgate erwartet die CLIP-Rufnummer in CALLERID(name) im Format <CC><NDC><SN>.
Du willst ja die CLIP des Anrufenden übermitteln, die haben wir anfänglich in CALLERID(num). Alles was wir also tun müssen, ist die übermittelte Rufnummer zu parsen und entsprechend umzuformatieren. Das kann man - ohne das jetzt anonyme Anrufer schon berücksichtigt wären - wie nachstehend tun

Code:
exten	=>	 _0[1-9]X.,1,Set(IAC=00)
exten	=>	 _0[1-9]X.,2,Set(CC=49)
exten	=>	 _0[1-9]X.,3.Set(NDC=30)
exten	=>	 _0[1-9]X.,4.Set(NAC=0)
exten	=>	 _0[1-9]X.,5,Set(CALLERID(name)=${CALLERID(num)})
exten	=>	 _0[1-9]X.,6.GotoIf($["${CALLERID(name):0:${LEN(${IAC})}}"="${IAC}"]?7:9)
exten	=>	 _0[1-9]X.,7,Set(CALLERID(name)=${CALLERID(num):${LEN(${IAC})}})
exten	=>	 _0[1-9]X.,8,Goto(16)  
exten	=>	 _0[1-9]X.,9,GotoIf($["${CALLERID(name):0:1}"="+"]?10:12)
exten	=>	 _0[1-9]X.,10,Set(CALLERID(name)=${CALLERID(num):1})
exten	=>	 _0[1-9]X.,11,Goto(16)
exten	=>	 _0[1-9]X.,12,GotoIf($["${CALLERID(name):0:${LEN(${NAC})}}"="${NAC}"]?13:15)
exten	=>	 _0[1-9]X.,13,Set(CALLERID(name)=${CC}${CALLERID(num):${LEN(${NAC})}})
exten	=>	 _0[1-9]X.,14,Goto(16)
exten	=>	 _0[1-9]X.,15,Set(CALLERID(name)=${CC}${NDC}${CALLERID(num)})
exten	=>	 _0[1-9]X.,16,Dial(SIP/${EXTEN}@sipgate-out)
exten	=>	 _0[1-9]X.,17,Hangup

Dabei werden zuerst die Variablen CC mit 49 (DE), NDC mit 30 (als Beispiel für Berlin, d.h. Vorwahl ohne 0) sowie IAC mit 00 (Amtsziffern für Auslandsgespräch) und NAC mit 0 (Amtsziffern für Ferngespräch) belegt.
Anschließend findet eigentlich nur noch die Prüfung der übermittelten Rufnummer und die entsprechende SIPGATE-gerechte Aufbereitung statt.

Viel Spaß beim Ausprobieren ;)
 
Danke für die schnelle und ausführliche Antwort! Habs nach einigem ausprobieren hingekriegt.
:p
 

Zurzeit aktive Besucher

Neueste Beiträge

Statistik des Forums

Themen
246,273
Beiträge
2,249,292
Mitglieder
373,862
Neuestes Mitglied
904lte
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.