2012-08-04 10 views
11

Czy ktoś może mi pokazać, jak wysłać wiadomość bezpośrednio do użytkownika iMessage za pomocą aplikacji Wiadomości?Jak wysłać tekst z imieniem z apokalipsą tylko w świadczonych usługach?

tell application "Messages" 
    if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 1 
    if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 2 
    if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 3 

    send "Message" to buddy "mail of name" of service x 
end tell 

Muszę wysłać wiadomość na konto tylko przez iMessage, a nie przez Google Talk, AIM, bonjour. Dziękujemy!

Odpowiedz

32

Zamiast twardego kodu usługę iMessage, można go znaleźć automatycznie:

  1. Zapisz poniższy skrypt jako sendMessage.applescript (Uwaga: upewnij się, aby wybrać opcję Text).
  2. Wykonaj go, uruchamiając: osascript sendMessage.applescript 1235551234 "Hello there!".
  3. Spowoduje to wysłanie wiadomości iMessage na numer telefonu 123-555-1234 zawierającej tekst "Hello there!".

sendMessage.applescript:

on run {targetBuddyPhone, targetMessage} 
    tell application "Messages" 
     set targetService to 1st service whose service type = iMessage 
     set targetBuddy to buddy targetBuddyPhone of targetService 
     send targetMessage to targetBuddy 
    end tell 
end run 
+3

Uwaga: nie możesz się/iMessage ** siebie **! – fabian789

+0

@ fabian789 Dzięki za podpowiedź. Czy znasz sposób obejścia tego ograniczenia? Ponieważ możesz wysłać iMessage do siebie (ręcznie z Messages.app), nie ma sposobu, aby to zrobić za pomocą skryptu? – Chris

+1

@Chris Nie, nie sądzę, że to możliwe – fabian789

2

Przykłady:

get services 
get name of services 
get buddies 
get name of buddies 

linia:

send "Test-Message" to buddy "buddy" of service "service" 

wydaje się działać, jeśli "kumpel" i "usługa" jest prawidłowy.

mam iMessage z moim zarejestrowany Apple ID, więc kiedy mogę wykonać „dostać nazwę usługi” I dostać za tę usługę ciąg jak

"E:[email protected]"

które mogę wykorzystać do „służby”. Buddy to po prostu nazwa twojego kumpla, również jako czysty tekst. Zobacz "poznaj znajomych".

Mam nadzieję, że to działa!

7

O ile rozumiem, nie można rozpocząć nowej rozmowy za pośrednictwem AppleScript. Zatem Buddy i usługa muszą pasować do siebie i muszą prowadzić ciągłą rozmowę.

Jeśli masz nazwę kumpla można wykonać następujące czynności

tell application "Messages" 
    get name of service of buddy "Buddy Name" 
end tell 

ta zwróci nazwę usługi, która pasuje do kumpla. Oczywiście możesz również użyć identyfikatora usługi. Ale lubię używać tego imienia.

W końcu będzie można wysłać wiadomość z

tell application "Messages" 
    send "Text of Message" to buddy "+43 555 XXXXXXX" of service "E:[email protected]" 
end tell 
+1

Aby rozpocząć nową rozmowę, wykonaj to - http://stackoverflow.com/questions/39027839/how-to-start-new-conversation-in-imessage-using-applescript. Pracowałem dla mnie – mac

+0

@mac to już nie działa .. – andi

3
tell application "Messages" 
    set myid to get id of first service 
    set theBuddy to buddy "[email protected]" of service id myid 
    send "Washer Done!" to theBuddy 
end tell 

Miałem to samo pytanie i po poszukiwaniach znalazłem odpowiedź. Aby "pierwsza usługa" była iMessage, musisz przejść do Konta Preferencje iMessage i zmienić kolejność konta iMessage na pierwszą. Potem działa to jak urok.

Spowoduje to również rozpoczęcie konwersacji, jeśli jej nie ma.

Nadzieję, że pomaga!

6

Ten skrypt wyśle ​​wiadomość co 10 ~ 30 sekund

tell application "Messages" 

    set targetBuddy to "+12025551234" 
    set targetService to id of 1st service whose service type = iMessage 

    repeat 

     set textMessage to "Hi there!" 

     set theBuddy to buddy targetBuddy of service id targetService 
     send textMessage to theBuddy 

     delay (random number from 10 to 30) 

    end repeat 

end tell 
+0

Możesz zajrzeć na https://stackoverflow.com/questions/39027839/how-to-start-new-conversation-in-imessage-using-applescript – andi

0

Ok, ja po prostu się na następujące działania Automator który chwyta zalogowany ytkowania imię i nazwisko, znajduje pasujący numer iPhone'a z Kontaktów, nazwę usługi, a na końcu wysyła przychodzący tekst (z poprzedniej akcji) do ... ja na iMessage. Nie bardzo przydatny, przynajmniej dla mnie w tej chwili, ale okazało się, że jest to możliwe w drodze :)

set input to "Testing 123" **//This line is just for testing** 
tell application "System Events" 
    set MyName to get full name of current user 
end tell 
    tell application "Contacts" 
     set myPhone to value of phone 1 of (person 1 whose name = MyName) 
     whose label = "iPhone" 
    end tell 
tell application "Messages" 
    set MyService to get name of service of buddy MyName 
    send input to buddy myPhone of service MyService 
end tell 
Powiązane problemy