How to run applescript until message is received - macos

I want to run an applescript script from the command line, and have a loop in it run until the a message is received. I'm updating a variable when a message is received using this:
using terms from application "Messages"
on message received theMessage from targetBuddy
set gotMessage to true
end message received
end using terms from
However, when I place this inside the on run block, I get an error at on message received saying "Expected “end” but found “on”." And when I place it outside the run block the script can be saved and will run, but the on message received handler isn't being called, which I checked by throwing a log statement in there. How can I get the script to check for a message being received while also running another loop?

You cannot run application event handlers outside the application because the event handler needs a target process with an AppleScript scripting definition (dictionary) to register the events and send the apple event to.

Related

Error message : [This stream is not active and must be resumed using the \'forceActive\' parameter. (STREAM_INACTIVE)]

I get the above error message while running replay query. Although in the documentation I could only find this:
“interactions” will contain “FORCE_ACTIVE” (this can be used by clients to detect the inactive stream and stop playback, instead of having to look for specific types).
In my understanding, we can just observe the value of "FORCE_ACTIVE" parameter to stop playback. While in the error message, I am being told to resume the stream by using "FORCE_ACTIVE". I couldn't find out through the documentation about sending the "FORCE_ACTIVE" parameter from my end. Please help me understand the proper course of action if I get the above error message. Thank you.
For now, you should display a message saying "Someone else is listening to your Pandora account. Only one person can listen at a time. Please try again later." We are working on adding a mechanism which would allow users to decide if they want to "take over control" but it's not ready yet. For reference, this is what shows up in the Pandora app when this situation arises:
The option to "Let me listen" is what we're adding. For now, you just have to default to "Let them listen".

Where in the logs is the Status Message of the Background (async) workflow Stop step?

I have a background workflow that ends with a Stop step. This step has an optional Status Message attribute that I populate with some details I need to be logged.
After the workflow has run I can find the workflow Status Reason (="Succeeded") and other details in the corresponding System Job record. I would also expect to find the stored info in the Message field, but it's not there. I've tried static and dynamic Status Messages, but no success with neither.
Does anybody know where that message is stored?
Basically the Message in Details section of System Job is a placeholder for some useful error message/logging tracker to log with the help of ITracingService.Trace by developer or by platform when something breaks/exception captured.
The status reason is not the good place for logging success scenario message, rather for canceled scenario to pop custom message to user & rolling back the transaction.
Not sure why you want to store there, but better use a custom field or even a note (annotation) can help you in better way. Avoid storing successful workflow execution logs anyway.
Check in system jobs:
Also, uncheck this value:
Then, you could try running the workflow sync. I prefer this than waiting for the async service.

Setting message signature of outgoing message using AppleScript

Since I installed Sierra I can't get a piece of AppleScript working which worked before.
I'm trying to create a message (in Apple Mail) with a signature, but keep getting errors.
I used to create/fill the message like this:
set msg to make new outgoing message with properties {content:messageContent}
set message signature of msg to signature "X"
Before Sierra this worked perfect, now I'm getting an error saying: Mail got an error: AppleEvent handler failed.
So I tried several things and ended up (using AppleScript dictionaries) with:
set msg to make new outgoing message with properties {content:messageContent, message signature:signature "X"}
Which ends up in an error saying: Mail got an error: Can’t make class outgoing message.
Anyone who can help me out on this one?
This is a known bug. I had the same issue.
You also failed to mention that this is for Mail in your original reply. Might want to include the application in future posts!
I was having the same problem and came across a working solution. The "button 3" used to be "button 2" until I upgraded to Sierra 10.12.4 this past weekend.
Keystroke "F", is just the first letter of my signature name. Modify that as you wish.
try
set message signature of theMessage to signature "your signature name"
on error
tell application "Mail" to activate
tell application "System Events"
tell process "Mail"
click pop up button 3 of window 1
delay 0.01
keystroke "F"
delay 0.01
keystroke return
delay 0.01
end tell
end tell
end try

Ignore timeout error while executing a javascript automation script on OSX

While converting a document to another document , my script (written in javascript in the Script Editor on OSX 10.10) times out with an error -1712 ("AppleEvent Timed Out").
How can ignore this timeout? Or at least extend the timeout delay.
I found this paragraph inside the Javascript for Automation documentation Timeout, Considering, and Ignoring! You shall pass { timeout: 600 } as last parameter to function calls.

VBScript (Classic ASP ) and multiple ajax calls side by side

I have once ajax call which does connect to database, sets one flag in database and waits for one file to be created by some other process which looks up the flag.
Till the file is created on server, ajax keeps waiting. Once file is created, ajax reads the file and displays the content.
Now issue is that sometime the backend process which creates the file, stuck into socket issue, and never created the file, but ajax keeps waiting in that case, which gets timedout only when its timeout occurs,
What all I want to show a stop request button, which could stop current ajax request as timeout is long, and user could want to stop it prior to timeout.
Here is what I tried, I modified the code which keeps looking the existence of file, and added a session variable check , like if Session("AbortCheck") = true then exitout from the script.
and placed another ajax call to update the sessin variable so that on loop when the script will find session = true it will immediately stop the request.
While debugging I found that my my new ajax request which updates the session variable actually executed only when the first ajax is completed. and therefore its never stopped on user request to stop the request.
Could anyone let me know how to stop a running ajax (which is taking time) on user input ?
Thanks
Maybe you could implement some error management in your AJAX script instead of letting the user manages that.
'Try to open the socket here
on error resume next
if err<>0 then
Response.Write("1")
else
Response.Write(fileContent)
end if
Then you get the caller script notifies the error to the user if the AJAXs script returns 1.
I have fixed the server side execution by removing the loop from server side which continuously checks for file, and put a loop in js file to re check the same, and for handshake , if file is not found on server, I pass message as waiting to ajax and another flag for abort check from jquery, which solved the issue.

Resources