2012-09-11 19 views
8

Hej Używam następujący skrypt:Próbuje odebrać wiadomość od OS X wiadomości w/AppleScript

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 

Ale pojawia się następujący błąd za każdym razem, gdy w wiadomościach pojawia się komunikat:

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

Nie mogę znaleźć tego błędu w Internecie. Wydaje się działać dla każdego czatu poza aktywnym czatem. Jakieś pomysły?

Również staram się dodawać wydarzenia do „skierowany komunikat odebrany”, ale za każdym razem kompilowania applescript zastępuje się „otrzymał zaproszenie do udostępniania zdalnego ekranu”

+0

Czy kiedykolwiek to rozgryzłeś? –

+1

Haha, ten sam problem tutaj. AppleScript, język z takimi nowoczesnymi koncepcjami, ale z komunikatami o błędach, które przypominają o latach osiemdziesiątych! – Feuermurmel

+0

Błąd mówi "Nieobsługiwane zdarzenie" [Ref] (http://developer.apple.com/legacy/library/#documentation/Carbon/Reference/Apple_Event_Manager/Reference/reference.html), ale nie mogę znaleźć zdarzenia dla wiadomości odebranej w czacie aktywnym – drinchev

Odpowiedz

0

I patrzy na mnie jak procedury obsługi zdarzeń message received działa tylko wtedy, gdy czuje się tak w Wiadomościach. Miałem ten sam problem z nieco innym skryptem. Po znalezieniu innego przykładu na innej stronie, skopiowanie go do nowego okna edytora AppleScript i zapisanie go w pliku AppleScript skopiowanym do ~/Library/Scripts/Messages przez Messages, zaczęło działać.

Nie ma problemu ze skryptem. Jeśli zamieniam bieżący skrypt na kod i zapiszę skrypt, działa on zgodnie z oczekiwaniami, wyświetlając okno dialogowe zawierające tekst: test.

Może to również wystarczyć, aby ustawić skrypt tak, aby działał pod numerem None i wracał do skryptu utworzonego w Ustawieniach wiadomości.

7

Otrzymasz Błąd -1708 po wybraniu AppleScript, który nie obsługuje określonego zdarzenia.

Na przykład, jeśli skrypt został wdrożony tylko on message sent, ale można ustawić, aby uruchomić ten skrypt za każdym razem otrzymałeś wiadomość, dostaniesz błąd -1708. Dzieje się tak dlatego, że twój skrypt wie tylko jak obsługiwać wiadomości wychodzące, a nie przychodzące, stąd błąd -1708.

Teraz jest tu coś ciekawego ...

Jeśli spróbujesz użyć domyślnego skryptu Mix Message Case.applescript dla zdarzeń Message Received, Message Received in Active Chat i Message Sent. Pierwsza i ostatnia praca w porządku, ale otrzymasz błąd -1708 dla aktywnego wydarzenia na czacie. Możemy wywnioskować, że oznacza to, że skrypt nie obsługuje zdarzenia Message Received in Active Chat. Wygląda więc na to, że nawet Apple nie poradzi sobie z tym wydarzeniem już teraz.

OS X Mavericks Aktualizacja:

Ta aktualizacja rozwiązuje wcześniej wspomniany błąd. Jeśli wybierzesz przykładowy skrypt Apple Mów Events.applescript, zauważysz, że bezbłędnie obsługuje wiadomości odebrane do aktywnego pokoju rozmów. Jeśli przeanalizujesz kod, zauważysz, że używa on metody on active chat message received. Możemy teraz użyć tego w naszych skryptach. Ponieważ nie mam już starej wersji zainstalowanej, nie mogę przetestować, czy ta sama metoda działa w poprzedniej wersji.

Oto kod od słów mów.applescript:

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

Zauważ, że nie określasz już poszczególnych skryptów uruchamianych dla określonych zdarzeń. Zamiast tego należy określić jedną procedurę obsługi skryptów dla zdarzeń komunikatów. Oznacza to, że musisz wdrożyć wszystkie zdarzenia, aby uniknąć uzyskania -1708 metod. Zauważ, jak w przykładowych skryptach Apple ma nawet komentarz # The following are unused but need to be defined to avoid an error. Oto szablon, który może być używany jako punkt wyjścia dla skryptów:

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 

Jeśli zaczynasz z tym skryptem i wdrożyć tylko metod musisz (pozostawiając resztę w stanie nienaruszonym), a następnie należy unikać wszelkiego -1708 błędy.