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
 
Kostenlos!

Statistik des Forums

Themen
248,890
Beiträge
2,304,187
Mitglieder
378,575
Neuestes Mitglied
King Manaka