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

cmd Authenticate Eingabe per variable übergeben

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von Crackstar, 15 Sep. 2008.

  1. Crackstar

    Crackstar Neuer User

    Registriert seit:
    20 Dez. 2006
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallöche liebe Gemeinde :)

    folgendes Attentat:

    Ich versuche eine Zeiterfassung durch Pineingabe zu realisieren.

    Das heisst, ein Mitarbeiter ruft Nummer xy an und gibt seine spezielle PIN ein.

    Diese Pin wird dann mittels AGI an ein PHP Script übergeben und in eine Datenbank mit timestamp geschrieben, später werden aus der sql datenbank csv's exportiert und anhand der Werte die Zeiten für die Lohnabrechnung ermittelt.

    Nun hänge ich bei der übergabe der eingegebenen PIN.

    Die PIN wird über authenticate aus einer Datei gelesen und gegengeprüft.

    Wie kann ich nun die Eingabe bei authenticate mittels Variable an ein php script weiter schicken?

    Mein Kontext sieht in etwa so aus

    [zeiterfassung]
    exten => s,1,GotoIf($["${CALLERID(num)}" = "0101213" | "${CALLERID(num)}" = "4711"]?3:7)
    exten => s,3,Playback(Willkommen_Bitte_Pin_Eingeben)
    exten => s,4,Authenticate(/usr/share/asterisk/agi-bin/mapins.txt|${PINUEBER})
    exten => s,5,AGI(push.php,${PINUEBER})
    exten => s,7,Playback(Viel_Spass_Bei_Der_Arbeit)

    Hat jemand einen Lösungsvorschlag vielleicht für mich?
     
  2. Arcon

    Arcon Aktives Mitglied

    Registriert seit:
    15 Jan. 2006
    Beiträge:
    1,164
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Peine
    is jetzt eine gedanken spielerei, hab mich damit noch nich beschäftigt..

    könnte man nicht denn Pin an ein PHP script übergeben (per system, agi oder so) und per gotoIF überprüfen lassen ob er richtig ist und dann weitergeben zur push.php?
     
  3. Crackstar

    Crackstar Neuer User

    Registriert seit:
    20 Dez. 2006
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Naja, der Haken an der Sache ist ja, das es mehrere PINS sind, je Mitarbeiter eine Kennung/PIN und die müssen ja differenziert werden.
     
  4. Arcon

    Arcon Aktives Mitglied

    Registriert seit:
    15 Jan. 2006
    Beiträge:
    1,164
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Peine
    das ist doch kein problem
    also, er ruft an und gibts sein pin ein, die erste übergabe überprüft ob der pin existiert, und gibt true oder false wieder.
    Per gotoif wirds ausgewertet, und bei true, wird z.b. push.php?pin=$PINUEBER aufgerufen.
    über die Pin kannst ja rausfinden wer der anrufer ist, und denn timestamp enstprechen zuordnen lassen
     
  5. Crackstar

    Crackstar Neuer User

    Registriert seit:
    20 Dez. 2006
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Stimmt, wäre auch eine möglichkeit :)

    Nur würde der Kontext dann was groß werden bei 30 Mitarbeitern vorallem wenn ein Mitarbeiter kommt oder den Betrieb verlässt müsste ich die extensions auch immer mitpflegen ..... Wäre aber Quick 'N Dirty ;)
     
  6. Arcon

    Arcon Aktives Mitglied

    Registriert seit:
    15 Jan. 2006
    Beiträge:
    1,164
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Peine
    würde er nich. sind doch nur 6 oder 7 zeilen.

    wird doch alles über PHP und mysql gemacht, die extension muss nur einmal drinn stehen
     
  7. Crackstar

    Crackstar Neuer User

    Registriert seit:
    20 Dez. 2006
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hättest du da vielleicht n Codeschnipsel für mich als grober Leitpfaden wie ich das aufbauen könnten?

    Gruss
     
  8. Arcon

    Arcon Aktives Mitglied

    Registriert seit:
    15 Jan. 2006
    Beiträge:
    1,164
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Peine
    ist jetzt ungetestet
    Code:
    exten => s,1,GotoIf($["${CALLERID(num)}" = "0101213" | "${CALLERID(num)}" = "4711"]?3:7)
    exten => s,3,Playback(Willkommen_Bitte_Pin_Eingeben)
    exten => s,4,GotoIf($["System(/usr/local/bin/php -f /var/pincheck.php?pin=${PINUEBER})" = "true"]?5:1); 
    exten => s,5,System(/usr/local/bin/php -f /var/push.php?pin=${PINUEBER});
    exten => s,7,Playback(Viel_Spass_Bei_Der_Arbeit)
    mußt natürlich das php script noch schreiben, das dann true oder false liefert.

    achja, wo wird bei dir eigentlich PINUEBER definiert?
     
  9. Crackstar

    Crackstar Neuer User

    Registriert seit:
    20 Dez. 2006
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    PINUEBER Hab ich wie folgt definiert, was aber eben nicht funktioniert

    Code:
    exten => s,4,Authenticate(/usr/share/asterisk/agi-bin/mapins.txt|${PINUEBER})
    Mein Problem ist ja schlichtweg das ich die Eingabe bei Authenticate nicht ermittelt und per Variable übergeben kann.
     
  10. Crackstar

    Crackstar Neuer User

    Registriert seit:
    20 Dez. 2006
    Beiträge:
    22
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    So ich bin nun einen Schritt weiter :)

    Habs nun mit:

    Code:
    exten => s,4,Authenticate(/usr/share/asterisk/agi-bin/mapins.txt|a)
    Hinbekommen .... |a gibt die Eingabe in {ACCOUNTCODE} weiter und damit kann ich dann ja weiter arbeiten :)
     
  11. Arcon

    Arcon Aktives Mitglied

    Registriert seit:
    15 Jan. 2006
    Beiträge:
    1,164
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Peine
    ja ok, so gehts auch :)

    geht aber auch anders ;-)

    Code:
    exten => s,1,GotoIf($["${CALLERID(num)}" = "0101213" | "${CALLERID(num)}" = "4711"]?3:7)
    exten => s,3,Playback(Willkommen_Bitte_Pin_Eingeben)
    exten = s,4,Read(PINUEBER,beep,4); 4stelliger pin wird erwartet
    exten => s,5,GotoIf($["System(/usr/local/bin/php -f /var/pincheck.php?pin=${PINUEBER})" = "true"]?5:1); 
    exten => s,6,System(/usr/local/bin/php -f /var/push.php?pin=${PINUEBER});
    exten => s,7,Playback(Viel_Spass_Bei_Der_Arbeit)
    ist zwar alles ungetestet, sollte aber funktionieren