Ausgehende Rufnummer automatisch ändern

  • Hi zusammen,


    ich steh gerade vor der Aufgabe das ausgehende Rufnummern sich dementsprechend automatisch mitändern sollen. Das heißt, z.B. ich habe 3 verschiede Trunks, 1x Österreich, 1x Deutschland, 1x Italien und möchten unseren Kunden entgegenkommen und ihnen anbieten uns günstig anzurufen und genauso möchten wir günstig rausrufen können. Wenn ich jetzt nach Italien raus rufe, soll halt auch eine italienische Rufnummer angezeigt werden. (Ich weiß, ich könnte es mit Funktionstasten machen, aber es kann ja drauf vergessen werden umzuschalten)


    Ich hab dazu ein Modul gebastelt. Im Prinzip funktioniert es ja. Mein Problem ist nur das ich nicht weiß wie ich die Variable richtig setzen sollen und welche ich von den vielen verwenden soll. Mit Wildcard hab ich es auch schon versucht, aber es geht trotzdem nur in eine Richtung. die andere wird prinzipiell übersprungen. Vlt könnt ihr mir da ja weiterhelfen.


    Modul.PNG
    ModulSettings.PNG


    Log-Daten:
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (noop) Options: (---[AGIKernel]---PostLineSelection: Calling module hook 'test' )
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Set) Options: (CALLERID(all)=00431907*******: TEST_OJA 004372078****<004372078****>)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Set) Options: (__SFCLIDNUM=004372078****)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Set) Options: (__SFCLIDINTNUM=500)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Set) Options: (__SFCLIDNAME=TEST_OJA)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Set) Options: (CDR(userfield)=1920)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (noop) Options: (---[info]---New CallerID for Outgoing Call 004372078**** )
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (SIPRemoveHeader) Options: (P-)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (SIPRemoveHeader) Options: (privacy)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (SIPAddHeader) Options: (P-Preferred-Identity: "TEST_OJA" <sip:004372078****@starface.de>)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Set) Options: (CALLERID(all)=TEST_OJA <004372078****>)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (noop) Options: (---[info]---for call over line UPC )
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (noop) Options: (---[info]---outgoingExten(formated from line): 01907******* )
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (ResetCDR) Options: ()
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Set) Options: (EXTEN=01907*******)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (noop) Options: (---[info]---Trying to place an outgoing call on line: UPC )
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (ChanIsAvail) Options: (SIP/072089****)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (noop) Options: (---[info]--- AvailChan: SIP/072089****-00000130 )
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (set) Options: (AVAILCHAN="")
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (UserEvent) Options: (OutgoingCall|Channel: SIP/1003.snom360-0000012f|Uniqueid: asterisk-1402579049.339|Data: SIP/072089****,01907*******)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Set) Options: (CDR(accountcode)=1)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- AGI Script Executing Application: (Dial) Options: (SIP/072089****/01907*******|45|wWtT)
    [Jun 12 15:17:29] VERBOSE[18573] logger.c: -- Called SIP/072089****/01907*******


    Ich bin für jeden Vorschlag dankbar. Hab so nicht viel mit Programmieren am Hut.


    Danke euch jetzt schon.

  • Versuche mal die Rufnummerformate in deinem Modul. Ich glaube, dass die führenden Nullen da nicht hin müssen... Ich habe damit mal eine einheitliche Präsenz mit Clip No-Screening gebaut. Da ist bei mir die Nummer ohne die beiden Nullen der Ländervorwahl drin.

  • Wie meinst du die Rufnummerformate?


    Ich hab jetzt mal versucht mit


    IsNumeric('431') --> _result
    if(?(_result))
    SetCaller(---,'TEST_UPC','00437208xxxxx','','true')
    else
    SetCaller(---,'TEST_OJA','00437207xxxx','','true')
    return


    also das funkt irgendwie nicht. Keiner eine Idee?


    Muss ich da vlt bei "IsNumeric" eine Wildcard setzen?


    Danke für die Hilfe!

  • Setz mal einfach SetCaller(---,'TEST_UPC','437208xxxxx','','true') bzw. SetCaller(---,'TEST_OJA','437207xxxx','','true')

  • Setz mal einfach SetCaller(---,'TEST_UPC','437208xxxxx','','true') bzw. SetCaller(---,'TEST_OJA','437207xxxx','','true')


    Nop, die zwei 00 vor SetCaller(---,'TEST_UPC','437208xxxxx','','true') haben schon gepasst. Ohne die sendet er mir die Nummer total vermurkst mit "00720437208xxxxxx"


    Ich hab ja auch nicht das Problem das die angezeigte Nummer nicht stimmt, sondern das er die Rufnummer ändern soll sobald ich statt 00431 zb 0049 wähle.


    Ich möchte wenn die Nummer mit 00431* gewählt wird, dann soll die Nummer " SetCaller(---,'TEST_UPC','437208xxxxx','','true')" geschickt werden wenn nicht dann soll die Nummer angezeigt werden "SetCaller(---,'TEST_OJA','437207xxxx','','true') "

  • Du kannst statt der Funktion IsNumeric die Funktion StartsWith nehmen, damit kannst du z.B. überprüfen, ob die Rufnummer mit 0043 oder 00431 oder ... anfängt und je nachdem dein CLIP setzen. Bei mir funktioniert die externe Rufnummer übrigens mit 00 am Anfang.

  • Ich melde mich mal wieder von der Front.


    ich hab jetzt wirklich alles versucht. Ich schaff es nicht, dass die ausgehende Rufnummer geändert wird.


    Mit den COR-Regeln hab ich es auch schon versucht, aber die ausgehende Nummer bleibt immer die gleiche. :(


    Versuchen wir mal einen anderen Weg.


    Kann mir einer von euch sagen, wie ich dem Modul-Designer sage das er bei bestimmten Nummern die ich rauswähle, einen bestimmten Leitungspräfix vorwählen sollen.


    Ich bin keine gelernte Programmiererin, also nicht böse sein, wenn ich nicht alles verstehe.


    Beginnen tu ich mit einem StartsWith. Die zwei Variablen Text und Prefix eingeben. Text ist mir klar, hier wird der Wert verglichen. Aber was macht der Prefix? Ist ne Vorwahl, das is mir schon klar, aber ne Vorwahl für was? Kombinier ich das mit dem GetPrefixForOutgoingCalls?


    Wie man sieht bin ich programmiertechnisch nicht wirklich fit. HELP!!


    Thx

  • Könnte es sein, dass dein SIP Provider nicht zulässt, dass du die ausgehende Nummer frei ändern kannst? Dies war bei mir der Fall und mein SIP Provider musste mir das zuerst freischalten. Ich kann nun an sich jede Nummer als ausgehend angeben...

  • Hallo Fonix,


    hab dir mal ein Screenshot angehängt wie es funktionieren sollte.
    Wichtig ist natürlich das die Rufnummern die du signalisieren möchtest auch als Nummernkreis vorhanden sind.


    Test es mal und gib Bescheid wenn du Hilfe brauchst. Vorallem Thema CLIP no Screening mit den Providern muss abgeklärt werden da du sonst nicht richtig signalisieren kannst.


    lg
    Josip


    module.jpg

  • Guten Morgen,


    Clip no screening hab ich bei beiden Providern aktivieren lassen.


    Danke Josip, ich werds mal nachbauen und schauen ob es funktioniert :)


    lg

  • Funktioniert, danke. ;)


    Aber eine Frage hab ich noch. Wie sag ich dem Modul welche Leitung es nehmen soll? Ich möcht ja nicht nur die Rufnummer ersetzen sondern auch noch über den richtigen Trunk rausgehen.


    Ich hab zwar den Typ CALL_CHANNEL gefunden und diesen auch definiert (hoffentlich richtig :confused:) aber ich kann ihn nicht als Variable vergeben und auch nicht als Return Value.


    LG

  • Bin mir jetzt nicht ganz sicher aber ich glaube wenn du der Leitung die Rufnummer zuordnest dann routet der automatisch über die passende Leitung raus.
    Musst halt im COR sagen das er nicht statisch geht sondern auf Leitung.
    Ansonsten müsste ich schauen wir das funktioniert über die Module.


    lg

  • Ok,
    ich trace mal mit beim testen, dann werd ich es eh sehen ob er über die richtige Leitung geht.


    Thx :)


    UPDATE:
    Hab die COR-REGELN dementsprechend eingerichtet und schau an, es funktioniert alles genau so wie ich es haben will :D


    Coole Sache, großen Dank an morb. Ich werd jetzt mal Java lernen :cool:

    Einmal editiert, zuletzt von Fonix ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!