.titleBar { margin-bottom: 5px!important; }

CallerID in Callfile setzen?

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von e18, 20 Sep. 2006.

  1. e18

    e18 Mitglied

    Registriert seit:
    9 Sep. 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 e18, 20 Sep. 2006
    Zuletzt bearbeitet: 21 Sep. 2006
    Szenario:

    Ich will, dass ein Kunde seine Rufnummer auf meiner Webseite eingibt und auf Submit drückt, und es wird sofort ein Anruf an diese Nummer initiiert.

    Geht mit callfile, soweit kein Problem, ich rufe den Kunden an und verbinde ihn mit unserer Zentrale. Wie bekomme ich es aber hin, dass die Zentrale seine Rufnummer auf dem Display (als CallerID) sieht?

    Wo muss ich das im Callfile eintragen? Bisher wird die unter callerid-eingetragene Nummer angezeigt, die auch die callerid des ausgehenden Anrufs ist (meine Rufnummer)

    Code:
    Channel: SIP/provider/kundenrufnummer
    Callerid: 030meinenummer
    MaxRetries: 3
    RetryTime: 10
    WaitTime: 60
    Context: from-trunk
    Extension: 4930meinenummer
    Priority: 1
    
    Habe schon SetVar: CALLERIDNUM=4930meinenr
    unter Extension probiert, ohne Erfolg.
     
  2. Mathias-R

    Mathias-R Neuer User

    Registriert seit:
    20 Juli 2005
    Beiträge:
    161
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Königstein im Taunus
    Der Weg ist richtig, die unter Callerid stehende Nummer wird verwendet. Sofern Du sie nicht im Context from-trunk wieder umsetzt sollte das auch funktionieren. Du kannst die Zentrale aber natürlich nur DIREKT über VoIP oder intern anrufen, denn wenn Du über einen Provider oder das Telefonnetz gehst kannst Du keine "fremden" Rufnummern als Absender übertragen.
     
  3. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Da Du zuerst den Kunden über das callfile anrufst, wirkt sich die im callfile gesetzte "Callerid: 030meinenummer" auf den Anruf zum Kunden aus - was ja wohl auch so gewollt und richtig ist.

    Nimmt der Kunde ab, landet der Anruf im "from-trunk" und genau dort mußt Du vor dem Dial zu Deinem SIP Anschluß ein:

    Set(CALLERID(number)=Kundenrufnummer)

    einfügen.

    hth,
    Tin
     
  4. Mathias-R

    Mathias-R Neuer User

    Registriert seit:
    20 Juli 2005
    Beiträge:
    161
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Königstein im Taunus
    Das ist so nicht ganz richtig. Das Callfile baut einen Channel auf und im Context from-trunk steht diese Nummer bereits als Callerid zur Verfügung. Die meisten SIP-Provider ignorieren ungültige Caller-IDs so dass siese nicht zum Kunden signalisiert wird. Andernfalls musst Du mit

    Channel: LOCAL/Kundenrufnummer

    aus dem default context heraus den Kunden anrufen. Im default heißt es dann:

    exten => _X.,1,Set(CALLERID(number)=030meinenummer)
    exten => _X.,n,Dial,SIP/${EXTEN}@provider

    Dann sollte der Kunde Deine Nummer und Du seine sehen.
     
  5. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Matthias,

    ich gehe davon aus, dass die "Zentrale" per SIP-Endgerät mit dem * verbunden ist, also wird nicht über einen Provider gewählt, sondern das SIP-Endgerät (oder eine Warteschleife) direkt angewählt. Mit LOCAL channels mußt Du da auch nicht arbeiten.

    Code:
    [from-trunk]
    exten => 4930meinenummer,1,Set(CALLERID(number)=Kundenrufnummer)
    exten => 4930meinenummer,2,Dial(SIP/100)
    
    Wobei SIP/100 dann die "Zentrale" ist.

    Auf den default context wird überhaupt nicht zugegriffen, wie kommst Du denn auf sowas ?

    Gruß,
    Tin
     
  6. Mathias-R

    Mathias-R Neuer User

    Registriert seit:
    20 Juli 2005
    Beiträge:
    161
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Königstein im Taunus
    Hallo Tin,

    Du hast offensichtlich nicht die Frage gelesen. Es geht darum die CallerID im callfile zu setzen. Die Website erzeugt ein Callfile - somit muss die Variable in diesem File mit übergeben werden. Änderungen im Context scheiden somit aus.

    Variante 1) Anwahl des Kunden über einen Provider, der eine (falsche) callerid ignoriert (Wie bei 1und1, Sipgate etc.):

    Callerid: kundenrufnummer

    Zum Kunden wird diese Nummer ignoriert, die (interne) Zentrale hingegen sieht die Kundenrufnummer.

    Variante 2) Bei der Anwahl des Kunden muss eine korrekte CallerID angegeben werden da der SIP-Provider diese auswertet:

    Callerid: Kundenrufnummer
    Channel: LOCAL/Kundenrufnummer

    Somit wird der Anruf zum Kunden im default context ausgeführt und dort kann für den zum Kunden gehenden Ruf eine gültige CallerID gesetzt werden.

    MfG
    Mathias
     
  7. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich habe die Frage gelesen ;)

    e18 will, dass es zuerst beim Kunden klingelt (Call Leg 1), so ist jedenfalls sein Callfile aufgebaut. Channel und Callerid stimmen, dem Kunden wird auch die Nummer der Zentrale angezeigt. Dieser Teil (Call Leg 1) hat also keine Probleme.

    Nachdem der Kunde abgenommen hat, springt * aus dem Callfile in den Context [from-trunk] und zwar zur extension 4930meinenummer priority 1, so steht es im Callfile. Den [from-trunk] Context hat er hier nicht geposted aber dort wird ein Dial (Call-Leg 2) zur Zentrale stehen.

    Die einzige Frage, die offen bleibt ist, ob die Zentrale direkt per SIP-Endgerät am * angebunden ist oder ob sie via VoIP Provider angewählt wird. Ist sie per SIP angebunden, was ich vermute, dann ist die Lösung seines Problems genau das, was ich geposted habe. Wählt er die Zentrale über einen VoIP Provider aus [from-trunk] heraus an, dann kann er die CallerID in der Regel nicht setzen (Ausnahme z.B. voipjet.com)

    Wenn er im Callfile schon die Variable setzen will (damit der gleiche Context [from-trunk] von mehreren Callfiles genutzt werden kann), kann er das natürlich auch:

    Callfile:
    Code:
    Channel: SIP/provider/kundenrufnummer
    Callerid: 030meinenummer
    SetVar: KDNR=kundenrufnummer
    MaxRetries: 3
    RetryTime: 10
    WaitTime: 60
    Context: from-trunk
    Extension: 4930meinenummer
    Priority: 1
    
    extensions.conf
    Code:
    [from-trunk]
    exten => 4930meinenummer,1,Set(CALLERID(number)=${KDNR})
    exten => 4930meinenummer,2,Dial(SIP/100)
    
    Na, vielleicht schreibt e18 ja auch nochmal was dazu...

    Gruß,
    Tin
     
  8. Mathias-R

    Mathias-R Neuer User

    Registriert seit:
    20 Juli 2005
    Beiträge:
    161
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Königstein im Taunus
    Das ist natürlich besser. Die Syntax für das SetVar im Callfile war mir neu. Ich hatte schon mal vergeblich danach gesucht. So lässt sich das natürlich besser lösen.

    MfG Mathias
     
  9. e18

    e18 Mitglied

    Registriert seit:
    9 Sep. 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hallöle, da bin ich wieder.....

    vielen Dank TinTin! Zentrale ist in der Tat direkt per SIP am * und die Lösung mit der Variablen im Callfile gefällt mir am besten.

    Danke und Gruss aus Berlin
    e18