[Gelöst] Länderkennzeichen +49 aus der CID verarbeiten

mikelm

Neuer User
Mitglied seit
5 Sep 2015
Beiträge
26
Punkte für Reaktionen
1
Punkte
3
Hallo,

ich habe mehrere Probleme beim Verarbeiten der CID Nummer in FreePBX (oder Asterisk) beim übermittelten Länderkennzeichen +49 in der CID (von DTAG)

1) im Telefonbuch kann kein +49 in FreePBX angelegt werden, gibt es da eine Lösung? (es werden nur Ziffern genommen, kein + Zeichen)
2) Das Wandeln der +49 durch Superfecta mit dem Ausdruck "+49|0+." funktioniert im Debug Modus wunderbar.
Aber:
Anscheinend bekommt Superfecta nur eine "9" übermittelt, die "+4" ist abgeschnitten. Warum passiert das?

3) Welche Endgeräte zeigen denn den CI Namen an? z.B. am Gigaset Telefon DA610 wird ̶n̶̶u̶̶r̶̶ ̶̶d̶̶i̶̶e̶̶ ̶̶C̶̶I̶̶D̶̶ ̶̶N̶̶u̶̶m̶̶m̶̶e̶̶r̶ Edit: der CID-Name aus dem Telefonbuch angezeigt. G̶̶i̶̶b̶̶t̶̶ ̶̶e̶̶s̶̶ ̶̶E̶̶n̶̶d̶̶g̶̶e̶̶r̶̶ä̶̶t̶̶e̶̶,̶̶ ̶̶d̶̶i̶̶e̶̶ ̶̶b̶̶e̶̶i̶̶d̶̶e̶̶s̶̶ ̶̶a̶̶n̶̶z̶̶e̶̶i̶̶g̶̶e̶̶n̶̶?̶ (geht also auch beim einfachen Gigaset DA610 schon)

System
FreePBX 12.0.76.2
Asterisk 11.18.0

Logauszug
/var/www/html/admin/modules/superfecta/agi/superfecta.agi: CID Superfecta: The
number passed from Asterisk is: 91774



PS
Der Ausdruck "9|0+." klappt dann soweit, kann aber doch nicht die Lösung sein:
Matched CID Rule: '9|0+.' with '0177

Der Eintrag aus dem Phonebook wird auch gefunden

"CALLERID(name)=Michael") in new stack
"CDR(cnam)=Michael") in new stack
[2015-10-18 10:58:27] VERBOSE[8505][C-0000000b] res_agi.c: dialparties.agi:
Caller ID name is 'Michael' number is '+49177
 
Zuletzt bearbeitet:
Ganz anderer Ansatz bei Verwendung von FreePBX
Code:
[from-pstn-custom]
exten => _[0-9+]./_49XXXXXXX.,1,Set(CALLERID(number)=0${CALLERID(number):2})
exten => _[0-9+]./_ZZXXXXXXX.,1,Set(CALLERID(number)=00${CALLERID(number)})
 
Hi ktw2003,

gute Idee. Für mein Verständnis versuche ich das mal aufzuschlüsseln. (bin noch nicht so fit in Asterisk) Ich hab auch noch Fragen zum Ausdruck


[from-pstn-custom] : Dieser Context wird von Asterisk in die extensions.conf eingelesen, hier der Auszug:
include => from-pstn-custom ; create this context in extensions_custom.conf to include customizations


exten => _[0-9+]./_49XXXXXXX.,1,Set(CALLERID(number)=0${CALLERID(number):2})
Der Ausdruck gilt für alle gewählten Extensions, (_[0-9+].)
Frage: Was macht das "+"?
Wenn die CID (/ kennzeichnet die CID) mit 49 anfängt, wird die CID ohne die ersten beiden Ziffern (:2 =49) und mit vorangestellter 0 ersetzt.
Frage: Warum die 7 XXXXXXX? Muss die CID auf eine Mindestlänge geprüft werden?

exten => _[0-9+]./_ZZXXXXXXX.,1,Set(CALLERID(number)=00${CALLERID(number)})
Den Sinn dieses Ausdrucks verstehe ich nicht. Er trifft auf alle CID, die nicht mit 00 beginnen und auch eine Mindestlänge haben, zu und hängt an diese 00 vorne dran.

Und eine letzte Frage: Was ist mit dem "+" aus "+49" in der CID? Das wird ja übermittelt, muss das nicht abgefragt/ersetzt werden?

Grüße Michael
 
Nein nein, viel einfacher. Aus + wird 00 mit Ausnahme von +49, daraus wird 0.
 
Ok, danke. Also das "+" aus "_[0-9+]." ist das + aus der Ländervorwahl?
 
Länderkennzeichen +49 aus der CID verarbeiten [gelöst]

Ich habe mich mal intensiver mit dem Thema beschäftigt.

Bisher hat in meiner Konfiguration Superfecta zum Nachschlagen im Telefonbuch das + aus der CallerID(NUM) entfernt, in allen andern Dateien (CDR) war das + aber noch enthalten.
Außerdem wurde die CallerID mit + falsch an Superfecta übergeben, so dass dies eher eine Notlösung war.

Daher habe ich die Lösung von ktw2003 mal ausprobiert.

So funktioniert diese (in der extensions_customer.conf:

[from-pstn-custom]
exten => _Z./_+49ZXXXXXX.,1,Set(CALLERID(number)=0${CALLERID(number):3})
exten => _Z./_+ZXXXXXXXX.,n,Set(CALLERID(number)=00${CALLERID(number):1})

Vorteil: Die CallerID wird überall ohne + übergeben, auch Superfecta kommt nun damit zurecht.
PS: Ausländische Rufnummer habe ich noch nicht überprüft
 
Zuletzt bearbeitet:
Achtung:
Bei meiner Lösung ist die DID nicht mehr ausgewertet worden, d.h. der Dialplan ist wohl durcheinandergekommen.

Daher habe ich einen Sprung angefügt.

exten => _ZXXXX.,n,Goto(ext-did,${EXTEN},1)Diese Lösung funktioniert anscheinend, aber:

Frage:
Im Dialplan wird immer zum "from-pstn" gesprungen, scheint hier aber in einer Endlosschleife zu enden (Dialplan funktioniert damit nicht mehr)

Ist dieses Sprungziel (ext-did) ok oder muss ich woanders hin springen?

Ich blicke beim verschachtelten Dialplan noch nicht ganz durch

Code:
;-------------------------------------------------------------------------------
; from-trunk:
;
; Context is really just an aliax of from-pstn
;
[from-trunk]
include => from-pstn
;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------
; from-pstn:
;
; Entry context for calls from the outside world to hit FreePBX
[from-pstn]
include => from-pstn-custom        ; create this context in extensions_custom.conf to include customizations
include => ext-did
include => ext-did-post-custom
include => from-did-direct
include => ext-did-catchall        ; THIS MUST COME AFTER ext-did
;-------------------------------------------------------------------------------
 
Die Prioritäten sind syntaktisch nicht ganz richtig. So könnte es funktionieren:

extensions-custom.conf
Code:
[from-pstn-custom]
exten => _X./_+49ZXX.,1,Goto(callerid-anpassen,${EXTEN},1)
exten => _X./_+ZXX.,1,Goto(callerid-anpassen,${EXTEN},1)

[callerid-anpassen]
exten => _X./_+49ZXX.,1,Set(CALLERID(number)=0${CALLERID(number):3})
exten => _X./_+ZXX.,1,Set(CALLERID(number)=00${CALLERID(number):1})
exten => _X.,1,Noop()  ; X. Prio 1 ohne CID match kann eigentlich nicht vorkommen, aber sicherheitshalber
exten => _X.,2,Goto(from-pstn,${EXTEN},1)

Asterisks Verhalten bei Callerid-spezifischen Prioritäten ist etwas undurchsichtig. Deshalb auch "könnte", weil ich mir gerade nicht sicher bin, ob die Prio 2 in callerid-anpassen wirklich nach den 1ern angesprungen wird.

Der Gedanke hinter dem getrennten Context wäre jedenfalls der, dass das Goto auf jeden Fall ausgeführt wird, nachdem die Callerid umgeschrieben wurde, und Asterisk nicht auf Grund longest match direkt mit einer 2 im nächsten Context weiter macht. Außerdem wird dadurch eine Endlosschleife vermieden, weil callerid-anpassen sonst im from-pstn nicht vorkommt.

Oh je, ich glaube ich denke schon wieder viel zu kompliziert.

Es gibt übrigens ein Modul zum Umschreiben der Callerid. http://wiki.freepbx.org/display/FPG/Set+CallerID+User+Guide
Da ich selbst kein FreePBX nutze habe ich aber keine Ahnung, was das alles kann.
 
Ok, danke, schaue ich mir mal an.

Das FreePBX Modul hatte ich mal installiert, aber so richtig schlau draus geworden bin ich nicht.
Es kann wohl immer nur in 1 Format gewandelt werden und zugleich muss ich eine Extension angeben (was ja schon die InboundRoute macht)

Hat fast funktioniert, EDIT: ((der Sprung zu from-pstn hat aber wieder nicht funktioniert. Mit dem Sprung zu ext-did geht es aber:
exten => _X.,2,Goto(ext-did,${EXTEN},1) ))
) Fehler in der Config gefunden: Ich hatte die Angabe des Contextes "from-pstn" nicht in der Trunk Konfiguration.
Jetzt funktioniert es auch mit dem Sprung zu "from-pstn"!!!!

PS: ext-did ist mein Context von der Inbound Route
 
Zuletzt bearbeitet von einem Moderator:
Das freut mich. Wenn das Thema damit gelöst ist, könntest Du bitte den Thread Titel um das entsprechende Prefix ergänzen, dazu den 1. Beitrag bearbeiten und auf Erweitert.
 
Kostenlos!

Statistik des Forums

Themen
249,052
Beiträge
2,309,534
Mitglieder
378,850
Neuestes Mitglied
IchBinEsDoch