Versuch die gesendete Rufnummer zu setzen

Status
Für weitere Antworten geschlossen.

wirseefahrer

Neuer User
Mitglied seit
13 Feb 2006
Beiträge
31
Punkte für Reaktionen
0
Punkte
0
Hallo alle miteinander!
Nun ich versuche in der "extension.conf" verzweifelt mit
Code:
exten => s,n,Set(CALLERID(number)=04XXXXXXX)
die Rufnummer oder mit
Code:
exten => s,n,Set(CALLERID(name)="unbekannter Teilnehmer"
den Namen des Anrufenden zu ändern, doch beide Methoden scheinen keinen Erfolg zu bringen, denn die Methode LookupCIDName() wird ohne Parameter aufgerufen, was in meinen Augen auf einen nicht vorhandenen Rufnummernwert der Channel-Variablen deutet!
Kann mir da einer helfen!?!?!
Daten: Asterisk 1.2.6 auf einem DEBIAN Server
 
siehe show application LookupCIDName

Das ist doch eigentlich relativ eindeutig beschrieben.

Auch diese Befehle funktionieren wie gewünscht
Set(CALLERID(number)=04XXXXXXX)
Set(CALLERID(name)=Hallo)
 
wirseefahrer schrieb:
Code:
exten => s,n,Set(CALLERID(name)="unbekannter Teilnehmer"

Da fehlt die schliessende Klammer.

Hier funktioniert das so problemlos (reverse-lookup.agi)
 
Hatte nur die Klammern vergessen, das Problem liegt in der Anzeige meines Snom Telefons, welches trotz richtiger CallerID (LookupCIDName funktionert auch mit manuell gesetzter Nummer) nicht die NUmmer und auch nicht den Namen anzeigt. Sollte man da einen bestimmten Patch einspielen oder vielleicht eine Einstellung ändern, oder gehorchen die Snom Telefone da anderen Gesetzen/Variablen?
 
wirseefahrer schrieb:
Hatte nur die Klammern vergessen, das Problem liegt in der Anzeige meines Snom Telefons

Prüfe doch mal mit .. NoOp(CallerID: ${CALLERID(all)}) ob da das richtige drinsteht bevor Du den Dial auf das Snom phone machst.
 
Es steht das richtige drin, aber irgendwie kommt im Telefon nichts an! Ich werde mal das Log im Snom anschauen. Dort sollte dann ja auch der Name und die Nummer ankommen!
Also dann schon einmal vielen Dank!
Sebastian

Hier nun die Ausgabe des LOG vom SNOM:
Code:
Received from udp:192.168.1.4:5060 at 23/6/2006 09:21:25:210 (395 bytes):
CANCEL sip:[email protected]:5061;line=x4kkws5e SIP/2.0
Via: SIP/2.0/UDP 192.168.1.4:5060;branch=z9hG4bK5e914e54;rport
[B]From: "Unknown" <sip:[email protected]>;tag=as769b3481[/B]
To: <sip:[email protected]:5061;line=x4kkws5e>
[B]Contact: <sip:[email protected]>[/B]
Call-ID: [email protected]
CSeq: 102 CANCEL
User-Agent: Asterisk PBX
Max-Forwards: 70
Content-Length: 0
Und da kommt nix an :-)

Hier die Ausgabe von Asterisk für das Telefon!
Code:
We're at 192.168.1.4 port 10702
Adding codec 0x8 (alaw) to SDP
Adding codec 0x2 (gsm) to SDP
Adding codec 0x4 (ulaw) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
13 headers, 12 lines
Reliably Transmitting (no NAT) to 192.168.1.6:5061:
INVITE sip:[email protected]:5061;line=x4kkws5e SIP/2.0
Via: SIP/2.0/UDP 192.168.1.4:5060;branch=z9hG4bK2d19e52c;rport
[B]From: "Unknown" <sip:[email protected]>;[/B]tag=as307997d8
To: <sip:[email protected]:5061;line=x4kkws5e>
Contact: <sip:[email protected]>
Call-ID: [email protected]
CSeq: 102 INVITE
User-Agent: Asterisk PBX
Max-Forwards: 70
Date: Fri, 23 Jun 2006 07:24:33 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Content-Type: application/sdp
Content-Length: 259

Aber wenn man die Ausgabe in der "extension.conf" macht, dann erhalte ich auch immer die korrekte Nummer und den Namen aus LookupCIDName!
komisch, komisch...

Hier nun noch einmal die Ausgabe des CLI von Asterisk:
Code:
Executing GotoIf("CAPI/ISDN1/4096518-3", "0?macro-bastian|s|10") in new stack
    -- Executing Set("CAPI/ISDN1/4096518-3", "CALLERID(num)=00") in new stack
    -- Executing NoOp("CAPI/ISDN1/4096518-3", "Nummer des Teilnehmers: 00") in new stack
    -- Executing Goto("CAPI/ISDN1/4096518-3", "s|10") in new stack
    -- Goto (macro-bastian,s,10)
    -- Executing LookupCIDName("CAPI/ISDN1/4096518-3", "") in new stack
    -- Changed Caller*ID name to sendet keine Nummer
 
Zuletzt bearbeitet von einem Moderator:
wirseefahrer schrieb:
-- Executing LookupCIDName("CAPI/ISDN1/4096518-3", "") in new stack
-- Changed Caller*ID name to sendet keine Nummer

das funktioniert, er findet in der Datenbank name zu der number.

Da aber Asterisk CallerID "Unknow" <Unknown> sendet kann es eigentlich nur daran liegen das im Dialplan die CallerID noch mal geändert wird.

Folgt der Dial Befehl direkt auf LookupCIDName?
 
Antwort mit Inhalten der beiden Macros

Hier also noch einmal der Inhalt der extension.conf:
Code:
[macro-bastian]
;ermoeglicht das Klingeln zweier Telefone mit Zeitschaltung -> 31 & 33
exten => s,1,LookupBlacklist					;Verzweigung zu n + 101
exten => s,n,DBPut(asterisk/CALLTRACE/31=${CALLERIDNUM})	;Nummer fuer nachfolgenden Eintrag in Blacklist speichern
exten => s,n,NoOp(Nummer des Teilnehmers: ${CALLERIDNUM})
exten => s,n,GotoIf($["${CALLERIDNUM}" != ""]?macro-bastian,s,10)			;wenn Nummer gesendet dann in Datenbank nachschlagen
exten => s,n,Set(CALLERID(num)=00)
exten => s,n,NoOP(Nummer des Teilnehmers: ${CALLERIDNUM})
exten => s,n,Goto(s,10)
exten => s,10,LookupCIDName()					;schaut in die DB nach dem Namen
exten => s,n,GotoIfTime(${WOCHENTAGS}?macro-bastian,s,20)	;tagsueber beide Telefone
exten => s,n,macro,ruf|SIP|31

exten => s,20,DBGet(DAUER=teilnehmer/${ARG1}/rufdauer)
exten => s,n,Dial,${BASTIAN}|${DAUER},Ttr				;beide Telefone klingeln
exten => s,n,macro,voicemail|31					;wenn nicht erreichbar dann AB

exten => s,102,Goto(custom-blacklisted,s,1)			;wenn anrufer auf der Blacklist stand

und hier noch einmal das >>macro-ruf<<
Code:
[macro-ruf]
; hier Versuch Call an internen Teilnehmer zu senden mit RUF
exten => s,1,NoOp(Wir sind im Macro ruf gelandet)
exten => s,n,LookupBlacklist
exten => s,n,DBPut(asterisk/CALLTRACE/${ARG2}=${CALLERIDNUM})	;Nummer für Rückruf oder Blacklist speichern
exten => s,n,DBGet(DAUER=teilnehmer/${ARG2}/rufdauer)
exten => s,n,Dial,${ARG1}/${ARG2}|${DAUER}|Ttr
exten => s,n,Goto,s-${DIALSTATUS}|1

exten => s-BUSY,1,answer()
exten => s-BUSY,n,wait,1
exten => s-BUSY,n,voicemail,b${ARG2}
exten => s-BUSY,n,Hangup()

exten => s-NOANSWER,1,answer()
exten => s-NOANSWER,n,wait,1
exten => s-NOANSWER,n,voicemail,u${ARG2}
exten => s-NOANSWER,n,Hangup()

exten => s-CHANUNAVAIL,1,wait,35
exten => s-CHANUNAVAIL,n,answer()
exten => s-CHANUNAVAIL,n,wait,1
exten => s-CHANUNAVAIL,n,voicemail,u${ARG2}
exten => s-CHANUNAVAIL,n,Hangup()

exten => s,103,Goto(custom-blacklisted,s,1)			;wenn anrufer auf der Blacklist stand

Aber ich denke, dass hier Dein Einwand nicht stimmen kann, denn der Ruf geht ja direkt nach dem "LookupIDName" als Dial-Anweisung raus! Oder wirkt sich hier die Verzweigung in das Macro-Ruf negativ aus?!?!?!

Sebastian
 
Zuletzt bearbeitet:
wirseefahrer schrieb:
Hier nun noch einmal die Ausgabe des CLI von Asterisk:
Code:
    -- Executing Set("CAPI/ISDN1/4096518-3", "CALLERID(num)=00") in new stack

Die Funktion heisst:

Set(CALLERID(number)=00)
 
Berichtigung

Nach der Wiki gehen beide Versionen! Ich habe beide versucht und sie verändern die gleiche Channel-Variable! Aber vom Grundsatz hast Du recht!
Ich benutze nur diese Version, denn dann hat man in der extention die gleiche Länge und die Sache liest sich wesentlich einfacher!
Vielen Dank für den Hinweis! :)
Sebastian
 
in welcher wiki steht das so?
 
Nun ich habe noch einmal nachgeschaut! Also ich habe die entgültige Version dann auf der CLI von Asterisk entdeckt und dann auch gleich ausprobiert! Naja das Ergebnis ist in beiden Fällen das gleiche! Sorry also für den vorschnellen Hinweis!
Sebastian:-Ö
 
Du hast Recht, ich kann auf dem ersten Blick keinen Fehler finden.

chaos2000 hat aber Recht

http://www.voip-info.org/wiki/index.php?page=Asterisk+func+callerid

Es könnte sein das die alten functions nicht mehr überall richtig funktionieren und das der Fehler daher kommt.

Es wäre daher gut wenn Du den Dialplan auf 1.2.X umstellen würdest.

Ebenso noch mal die Nummerierung prüfen s,10 tanzt ein wenig aus der Reihe.

man kann auch sehr schön label zum Einsprung benutzen, dann muss man nicht mehr durchzählen.

exten => s,n(label),NoOp(..)

Nachtrag:

mach doch mal einen Test ohne lookup und blacklist usw....

Set(CALLERID(number)=123)
Set(CALLERID(name)=Hallo)
NoOp(CallerID: ${CALLERID(all)})
DIAL
 
Wird geprüft! Ich melde mich gleich mal mit einer Ausgabe von der CLI!
Sebastian

Hier nun die Ausgabe des CLI:
Code:
Executing Macro("CAPI/ISDN1/4096518-6", "bastian|31") in new stack
    -- Executing LookupBlacklist("CAPI/ISDN1/4096518-6", "") in new stack
    -- Executing DBput("CAPI/ISDN1/4096518-6", "asterisk/CALLTRACE/31=") in new stack
    -- DBput: family=asterisk, key=CALLTRACE/31, value=
    -- Executing NoOp("CAPI/ISDN1/4096518-6", "Nummer des Teilnehmers: ") in new stack
    -- Executing GotoIf("CAPI/ISDN1/4096518-6", "0?macro-bastian|s|look") in new stack
    -- Executing Set("CAPI/ISDN1/4096518-6", "CALLERID(number)=00") in new stack
    -- Executing NoOp("CAPI/ISDN1/4096518-6", "Nummer des Teilnehmers: 00") in new stack
    -- Executing LookupCIDName("CAPI/ISDN1/4096518-6", "") in new stack
    -- Changed Caller*ID name to sendet keine Nummer
    -- Executing GotoIfTime("CAPI/ISDN1/4096518-6", "06:30-23:30*,*,*?macro-bastian|s|dbget") in new stack
    -- Goto (macro-bastian,s,10)
    -- Executing DBget("CAPI/ISDN1/4096518-6", "DAUER=teilnehmer/31/rufdauer") in new stack
    -- DBget: varname=DAUER, family=teilnehmer, key=31/rufdauer
    -- DBget: set variable DAUER to 45
    -- Executing Dial("CAPI/ISDN1/4096518-6", "SIP/31&SIP/33|45,Ttr") in new stack

hier der Abschnitt in der extension.conf :

Code:
[macro-bastian]
;ermoeglicht das Klingeln zweier Telefone mit Zeitschaltung -> 31 & 33
exten => s,1,LookupBlacklist					;Verzweigung zu n + 101
exten => s,n,DBPut(asterisk/CALLTRACE/31=${CALLERIDNUM})	;Nummer fuer nachfolgenden Eintrag in Blacklist speichern
exten => s,n,NoOp(Nummer des Teilnehmers: ${CALLERIDNUM})
exten => s,n,GotoIf($["${CALLERIDNUM}" != ""]?macro-bastian,s,look)			;wenn Nummer gesendet dann in Datenbank nachschlagen
exten => s,n,Set(CALLERID(number)=00)
exten => s,n,NoOP(Nummer des Teilnehmers: ${CALLERIDNUM})
exten => s,n(look),LookupCIDName()					;schaut in die DB nach dem Namen
exten => s,n,GotoIfTime(${WOCHENTAGS}?macro-bastian,s,dbget)	;tagsueber beide Telefone
exten => s,n,macro,ruf|SIP|31

exten => s,n(dbget),DBGet(DAUER=teilnehmer/${ARG1}/rufdauer)
exten => s,n,Dial,${BASTIAN}|${DAUER},Ttr				;beide Telefone klingeln
exten => s,n,macro,voicemail|31					;wenn nicht erreichbar dann AB

exten => s,102,Goto(custom-blacklisted,s,1)			;wenn anrufer auf der Blacklist stand
Na, jemand noch ein Idee?!?!?! Wird denn die Nummer nur intern gesetzt und die Flags aus dem ISDN Netz (Teilnehmer sendet keine Nummer) werde in die Channel-Variablen übernommen?!?!?

Sebastian

Habe nun den Dialplan ein wenig verändert und einfacher gestaltet:

hier die extension.conf
Code:
[macro-bastian]
exten => s,1,NoOP(Nummer Teilnehmers vor: ${CALLERID(all)})
exten => s,n,Set(CALLERID(number)=00)
exten => s,n,Set(CALLERID(name)=Sebastian unbekannt)
exten => s,n,NoOP(Nummer Teilnehmers nach: ${CALLERID(all)})
exten => s,n,Dial,SIP/31

Hier die Ausgabe des CLI:
Code:
 == ISDN1: Incoming call '' -> '4096518'
    -- Executing Macro("CAPI/ISDN1/4096518-7", "bastian|31") in new stack
    -- Executing NoOp("CAPI/ISDN1/4096518-7", "Nummer Teilnehmers vor: "" <>") in new stack
    -- Executing Set("CAPI/ISDN1/4096518-7", "CALLERID(number)=00") in new stack
    -- Executing Set("CAPI/ISDN1/4096518-7", "CALLERID(name)=Sebastian unbekannt") in new stack
    -- Executing NoOp("CAPI/ISDN1/4096518-7", "Nummer Teilnehmers nach: "Sebastian unbekannt" <00>") in new stack
    -- Executing Dial("CAPI/ISDN1/4096518-7", "SIP/31") in new stack
    -- Called 31
    -- SIP/31-cedc is ringing
    -- SIP/31-cedc is ringing
    -- SIP/31-cedc is ringing

Vielleicht sollte man auch irgendwelche Flags des Channels setzen, die dann die Aufmerksamkeit des Channels auf die Variablen richten und diese dann auch zur Anzeige kommen!?!?!?
Ist nur eine Vermutung!
 
Zuletzt bearbeitet von einem Moderator:
du hast doch auch keinen nummer vom anrufenden, wie willst du dann was vergleichen?
 
Ich einfach den Eintrag setzen, dass der Absender keine Nummer sendet, etwa: -> Teilnehmer sendet keine Nummer <- Das sollte doch mittels dieser Anweisung in der extension.conf problemlos funktionieren, es sei denn irgendwelche Flags bezüglich einer unterdrückten Nummer verhindern da die Übernahme der Werte in das INVITE!?!
Sebastian
 
Du rufst ein SIP-phone an und CALLERID ist das was dann zum sip-phone übertragen wird.
Wenn Asterisk trotz erfolgreich gesetzter CALLERID immer noch unknown sendet dann kannst Du jetzt nur noch mal von SIP zu SIP phone testen und weisst dann das es ein CAPI Problem ist.
Da ist irgendwas kaputt.
 
Wie, ich habe den Ruf doch schon im Server und manipuliere doch nur die Daten im Channel von Asterisk, oder nicht? Der Ruf wird immer mit den richtigen Daten übertragen, wenn die Gegenstelle ihre Nummer sendet. Nur kann ich halt bei einem Anruf mit unterdrückter Rufnummer keine neuen Nummern zuweisen. Deshalb meine Frage, ob es vielleicht an gesetzten "unknown- oder private Flags" liegen kann?!?!

Es gibt tatsächlich ein Flag im Channel! Man kann es mit dem Befehl "SetCallerPres(allowed) wieder freigeben! So einfach ist die Welt :-) Ich danke Euch allen für die Anregungen und die Ratschläge!
Schönes Wochenende!
 
Zuletzt bearbeitet von einem Moderator:
wirseefahrer schrieb:
Wie, ich habe den Ruf doch schon im Server und manipuliere doch nur die Daten im Channel von Asterisk, oder nicht?

Eben, wenn ich einen Anruf an ein SIP-phone ausführe möchte ich die dabei möglichen Befehle verwenden können.
Wenn das ändern der CALLERID funktioniert, das übertragen der CALLERID aber nicht, sondern es in ein UNKNOWN gefälscht wird, dann ist bei CAPI was kaputt oder falsch konfiguriert.
Ich würde mal nach entsprechenden bugs suchen und die config Dateien prüfen.

Das ändern der CALLERID in SIP channels geht wie dokumentiert. Wenn es Dir wichtig ist wäre ein dirty Hack den CAPI Anruf in einen Konferenzraum zu packen. Einen neuen SIP-Channel zu dem SIP-phone zu erstellen, dabei die CALLERID beliebig editieren und dann im Konferenzraum zu verbinden.
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Kostenlos!

Statistik des Forums

Themen
248,990
Beiträge
2,308,277
Mitglieder
378,783
Neuestes Mitglied
itseb