Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trying to receive a message from os x message w/ applescript

Hey I'm running the following script:

using terms from application "Messages"
    on message received this_message from this_buddy for this_chat
        display dialog "test"
    end message received
end using terms from

But I get the following error every time in Messages when i get a message:

Event: Message Received in Active Chat
File: registerToReceiveMessages.applescript
Error: Error -1708

I can't find that error anywhere on the internet. It seems to work for every chat except the active chat. Any ideas?

Also I'm trying to add the events for "addressed message received" but everytime I compile applescript replaces that to "received remote screen sharing invitation"

like image 216
mike Avatar asked Sep 11 '12 20:09

mike


1 Answers

You will get an Error -1708 whenever you have chosen an AppleScript which doesn't handle the specified event.

For example, if your script has only implemented on message sent, but you set this script to run every time you receive a message, you will get Error -1708. This is because your script only knows how to handle outgoing, not incoming messages, therefore, Error -1708.

Now here is something interesting...

If you attempt to use the default script Mix Message Case.applescript for the events Message Received, Message Received in Active Chat, and Message Sent. The first and last work fine, but you will get a -1708 error for the active chat event. We can deduce that this means the script isn't handling the event Message Received in Active Chat. And so it appears that not even Apple can handle this event right now.

OS X Mavericks Update:

This update fixes the previously mentioned bug. If you select Apple's sample script Speak Events.applescript, you will notice that it handles messages received to the active chat room flawlessly. If you examine the code, you will notice that it is using the on active chat message received method. We can now use that in our scripts. Since I no longer have the old version installed, I cannot test if this same method works in the previous version.

Here is the code from Speak Events.applescript:

on active chat message received with eventDescription
    say eventDescription
end active chat message received

Also notice how you no longer specify individual scripts to be run for specific events. Instead, you specify a single script handler for Messages events. This means that you must implement all the events in order to avoid getting -1708 methods. Notice how in the sample scripts, Apple even has the comment # The following are unused but need to be defined to avoid an error. Here is a template which can be used as a starting point for scripts:

using terms from application "Messages"
    # The following are unused but need to be defined to avoid an error

    on message sent theMessage with eventDescription
    end message sent

    on message received theMessage with eventDescription
    end message received

    on chat room message received with eventDescription
    end chat room message received

    on active chat message received with eventDescription
    end active chat message received

    on addressed message received theMessage from theBuddy for theChat with eventDescription
    end addressed message received

    on received text invitation with eventDescription
    end received text invitation

    on received audio invitation theText from theBuddy for theChat with eventDescription
    end received audio invitation

    on received video invitation theText from theBuddy for theChat with eventDescription
    end received video invitation

    on received local screen sharing invitation from theBuddy for theChat with eventDescription
    end received local screen sharing invitation

    on buddy authorization requested with eventDescription
    end buddy authorization requested

    on addressed chat room message received with eventDescription
    end addressed chat room message received

    on received remote screen sharing invitation with eventDescription
    end received remote screen sharing invitation

    on login finished with eventDescription
    end login finished

    on logout finished with eventDescription
    end logout finished

    on buddy became available with eventDescription
    end buddy became available

    on buddy became unavailable with eventDescription
    end buddy became unavailable

    on received file transfer invitation theFileTransfer with eventDescription
    end received file transfer invitation

    on av chat started with eventDescription
    end av chat started

    on av chat ended with eventDescription
    end av chat ended

    on completed file transfer with eventDescription
    end completed file transfer

end using terms from

If you begin with this script and implement only the methods you need (while leaving the rest intact), then you should avoid all -1708 errors.

like image 147
Senseful Avatar answered Nov 14 '22 00:11

Senseful