Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

if Abfrage bei bei mehrern gleichen eingaben nur einmal

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
zyrus
•->
•->


Anmeldedatum: 19.08.2008
Beiträge: 13
Wohnort: Wien

BeitragVerfasst am: 21.08.2012 - 20:59    Titel: if Abfrage bei bei mehrern gleichen eingaben nur einmal Antworten mit Zitat

hallo,
folgendes Problem kann ich nicht lösen.
Bei einer Bedingung soll die if Abfrage (automatische Antwort) funktionieren (BluePhone Elite; SMS erfüllt Bedingung). wenn ein gleiches SMS vom gleichen Teilnehmer (am gleichen Tag) kommt, soll die if Abfrage übersprungen werden.
Es soll nur einmal die Antwort auf das SMS gesendet werden. Sonst schickt er wieder das gleiche und bekommt wieder die Aufforderung zwei messungen zu schicken usw.

if theWert ≥ 180 then
tell application "BluePhoneElite 2"
send message " In der nächsten Stunde noch zwei Messungen schicken. "to¬
theSender using the device thePhone
end tell

Danke für jede Anregung
Gustav
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 21.08.2012 - 21:29    Titel: Re: if Abfrage bei bei mehrern gleichen eingaben nur einma Antworten mit Zitat

Entschuldige, zyrus, aber bei Deinem Text sitze ich hier und denke "HÄ?". Tut mir echt leid, aber das ist absolut unverständlich.
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
zyrus
•->
•->


Anmeldedatum: 19.08.2008
Beiträge: 13
Wohnort: Wien

BeitragVerfasst am: 21.08.2012 - 22:31    Titel: schnell erklärt Antworten mit Zitat

zum Verständnis:
Wenn jemand seinen Blutdruckwert per SMS schickt, der den Grenzwert um vieles übersteigt, soll er eine Antwort bekommen, dass er noch zweimal messen und diese Werte schicken soll. Wenn er nun bei den nächsten Messungen die gleichen Werte wieder schickt, bekommt er wieder die Antwort, er soll noch zwiemal messen und diese Werte schicken. Das würde sich immer wieder wiederholen.
Er soll aber nur einmal die Antwort bekommen, denn, wenn er die gleichen Messerte wieder schickt, kann angenommen werden, dass sie richtig sind und die erste Messung keine Fehlmessung war.

G.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 22.08.2012 - 06:23    Titel: Antworten mit Zitat

Das hilft auch nicht weiter. Du mußt schon mehr an Script Informationen rausrücken. Es muß schließlich mehr Scriptkontext bekannt sein um helfen zu können. Wo kommt "theWert" her? Wo "theSender"? Du mußt doch irgendwo eine Liste der Sender und deren gespeicherter Werte haben? Wie greift man darauf zu.
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
zyrus
•->
•->


Anmeldedatum: 19.08.2008
Beiträge: 13
Wohnort: Wien

BeitragVerfasst am: 22.08.2012 - 09:48    Titel: ganzes script Antworten mit Zitat

Hallo Skeeve,
das ist das ganze Script:

Ich bekomme aber immer noch eine Fehlermeldung, -1700: "s" kann nicht in Typ number umgewandelt werden. Es funktioniert aber trotzdem.

using terms from application "BluePhoneElite 2"


on incoming message theMessage

tell theMessage
set theContent to the content

set theString to theContent

--Trimmen der Eingabe, Löschen der Leerzeichen

set L to length of theString
set P to the offset of space in theString
repeat until P = 0
if P = 1 then
set theString to "" & rich text 2 through -1 of theString
else if P = L then
set theString to rich text 1 through (L - 1) of theString & ""
else
set theString to rich text 1 through (P - 1) of theString & "" & rich text (P + 1) through -1 of theString
end if
set P to the offset of space in theString
end repeat

set theContent to theString
set theSender to the phone number of the sender
set thePhone to the "Gustav"


--systolisch

set theBD to (items 1 thru 1 of (theContent as string) as string) as number
if theBD = 1 or theBD = 2 or theBD = 3 then
set theSys to (items 1 thru 3 of (theContent as string) as string) as number
end if

set theBD to (items 1 thru 1 of (theContent as string) as string) as number
if theBD > 3 then
set theSys to (items 1 thru 2 of (theContent as string) as string) as number

end if

--diastolisch

if theSys > 99 then
set theDia to (items 4 thru 6 of (theContent as string) as string) as number
else
set theDia to (items 3 thru 5 of (theContent as string) as string) as number

end if

if theDia > 99 and theDia < 200 then
set theDia to (items 1 thru 3 of (theDia as string) as string) as number
else
set theDia to (items 1 thru 2 of (theDia as string) as string) as number

end if

--set theAnzahl to count theContent

--sysLength

if theSys > 99 then
set sysLength to 3
else
set sysLength to 2
end if

--diaLength

if theDia > 99 then
set diaLength to 3
else
set diaLength to 2
end if

--gesLength

set gesLength to number of theContent

--pulsLength

gesLength - diaLength - sysLength

--puls
set thePuls to (items (diaLength + sysLength + 1) thru gesLength of (theContent as string) as string) as number


set theBlutdruck to (theSys & theDia & thePuls)

--Antwort bei unwahrscheinlichen Blutdruckwerten

if theSys > 249 or theDia > 149 or thePuls > 149 then
set theSMSText to "sys " & theSys & " dia " & theDia & " puls " & thePuls & ": Angabe ist unglaubwürdig ! Messung wiederholen."
tell application "BluePhoneElite 2"
send message theSMSText to theSender ¬
using the device thePhone
end tell

--Antworten bei abnormen Blutdruckwerten


else if theSys ≥ 165 and theSys < 250 or theSys ≤ 100 or thePuls > 100 and thePuls < 150 or thePuls < 40 then
set theSMSText to {"sys " & theSys & " dia " & theDia & " puls " & thePuls & " als Blutdruck eingelangt. In der nächsten Stunde noch zwei Messwert schicken. "}

tell application "BluePhoneElite 2"

send message theSMSText to theSender ¬
using the device thePhone
end tell
end if

end tell


end incoming message

end using terms from
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 22.08.2012 - 19:10    Titel: Antworten mit Zitat

Okay. Damit kann man schon ein bischen was anfangen. Allerdings kannst Du Deine gewünschte Funtionalität so nicht erreichen. Du mußt irgendwie die Werte aller Sender zwischenspeichern, damit Du feststellen kannst, ob dieselben Werte nocheinmal gekommen sind.

Man könnte das zum Beispiel mit property Einträgen erledigen, aber abhängig vom Datenvolumen bist Du mit einer (kleinen) Datenbank sicher besser beraten.
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
zyrus
•->
•->


Anmeldedatum: 19.08.2008
Beiträge: 13
Wohnort: Wien

BeitragVerfasst am: 22.08.2012 - 21:19    Titel: Antworten mit Zitat

Hallo Skeeve,
es soll nur ausgeschlossen werden dass der gleiche Absender bei zu grossem Wert am gelichen Tag wieder eine Antwort bekommt, dass er noch werte schicken soll.
Mit der Datenbank scheint es mir nicht einfacher, da die Antwort unmittelbar nach Eingang des SMS automatisch mit einem SMS erfolgen soll.
Wenn man die Anrufe in einer DB auslagern kann und dann wieder per Script abfragen kann und prüfen, ob der Absender schon ein SMS an diesem Tag bekommen hat, wäre ich sofort dabei.

Dennoch vielen dank für deine Aufmerksamkeit.
G.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 22.08.2012 - 22:40    Titel: Antworten mit Zitat

zyrus hat Folgendes geschrieben:
Hallo Skeeve,
Wenn man die Anrufe in einer DB auslagern kann und dann wieder per Script abfragen kann und prüfen, ob der Absender schon ein SMS an diesem Tag bekommen hat, wäre ich sofort dabei.

Klar. Das ist der Sinn der Übung.

Vielleicht kannst Du hiermit was anfangen?


Code:

property database : POSIX path of (path to home folder) & "blutdruck"

to get_last_value(theSender)
   return (do shell script "perl -e " & (quoted form of "
   my($dbname, $sender, $value)= @ARGV;
   dbmopen my %bd, $dbname, 0600;
   print $bd{$sender};
   dbmclose %bd;
   ") & " " & quoted form of database & " " & (quoted form of theSender))
end get_last_value

to set_last_value(theSender, theValue)
   do shell script "perl -e " & (quoted form of "
   my($dbname, $sender, $value)= @ARGV;
   dbmopen my %bd, $dbname, 0600;
   $bd{$sender}= $value;
   dbmclose %bd;
   ") & " " & quoted form of database & " " & (quoted form of theSender) & " " & (quoted form of (theValue as text))
end set_last_value


Aufzurufen mit:

Code:
set lastValue to get_last_value(theSender)
-- vergleichen mit dem momentanen
-- anschließend
set_last_value(theSender, theValue)


Gespeichert wird im Homedirectory in 2 Dateien "blutdruck.pag" und "blutdruck.dir". theSender plus theValue dürfen m.W. zusammen bis ca 1024 Zeichen lang sein.
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
zyrus
•->
•->


Anmeldedatum: 19.08.2008
Beiträge: 13
Wohnort: Wien

BeitragVerfasst am: 24.08.2012 - 09:26    Titel: gelöst ? Antworten mit Zitat

Hallo Skeeve,
vorerst danke für die schnelle Hilfe.
Ich werde aber erst (als Beginner) etwas do Shell lernen müssen und es dann ausprobieren.

G.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 24.08.2012 - 12:30    Titel: Re: gelöst ? Antworten mit Zitat

zyrus hat Folgendes geschrieben:
Hallo Skeeve,
vorerst danke für die schnelle Hilfe.
Ich werde aber erst (als Beginner) etwas do Shell lernen müssen und es dann ausprobieren.

G.


Das ist AppleScript. Den shell-Teil kannst Du ignorieren. Der ist ja fertig eingebaut. Damit mußt Du nix machen. einfach übernehmen und die 2 Handler verwenden.
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter