cmd Authenticate Eingabe per variable übergeben

Crackstar

Neuer User
Mitglied seit
20 Dez 2006
Beiträge
22
Punkte für Reaktionen
0
Punkte
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?
 

Arcon

Aktives Mitglied
Mitglied seit
15 Jan 2006
Beiträge
1,164
Punkte für Reaktionen
0
Punkte
36
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?
 

Crackstar

Neuer User
Mitglied seit
20 Dez 2006
Beiträge
22
Punkte für Reaktionen
0
Punkte
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.
 

Arcon

Aktives Mitglied
Mitglied seit
15 Jan 2006
Beiträge
1,164
Punkte für Reaktionen
0
Punkte
36
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
 

Crackstar

Neuer User
Mitglied seit
20 Dez 2006
Beiträge
22
Punkte für Reaktionen
0
Punkte
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 ;)
 

Arcon

Aktives Mitglied
Mitglied seit
15 Jan 2006
Beiträge
1,164
Punkte für Reaktionen
0
Punkte
36
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
 

Crackstar

Neuer User
Mitglied seit
20 Dez 2006
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hättest du da vielleicht n Codeschnipsel für mich als grober Leitpfaden wie ich das aufbauen könnten?

Gruss
 

Arcon

Aktives Mitglied
Mitglied seit
15 Jan 2006
Beiträge
1,164
Punkte für Reaktionen
0
Punkte
36
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?
 

Crackstar

Neuer User
Mitglied seit
20 Dez 2006
Beiträge
22
Punkte für Reaktionen
0
Punkte
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.
 

Crackstar

Neuer User
Mitglied seit
20 Dez 2006
Beiträge
22
Punkte für Reaktionen
0
Punkte
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 :)
 

Arcon

Aktives Mitglied
Mitglied seit
15 Jan 2006
Beiträge
1,164
Punkte für Reaktionen
0
Punkte
36
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