web-dev-qa-db-fra.com

Comment envoyer un texte iMessage avec applescript, uniquement dans le service fourni?

Quelqu'un peut-il me montrer comment envoyer un message directement à l'utilisateur d'iMessage via l'application Messages?

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

Je dois envoyer un message à un compte uniquement via iMessage, pas via google talk, AIM, bonjour. Je vous remercie!

18
cre8eve

Au lieu d'avoir à coder en dur le service iMessage, vous pouvez le trouver automatiquement:

  1. Enregistrez le script suivant sous sendMessage.applescript (Remarque: assurez-vous de choisir l'option Texte).
  2. Exécutez-le en exécutant: osascript sendMessage.applescript 1235551234 "Hello there!".
  3. Cela enverra un iMessage au numéro de téléphone 123-555-1234 contenant le texte "Bonjour là!".

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
45
Senseful

Pour autant que je le comprends, vous ne pouvez pas démarrer une nouvelle conversation via AppleScript. Ainsi, le copain et le service doivent s'emboîter et doivent avoir une conversation continue.

Si vous avez le nom du copain, vous pouvez faire ce qui suit

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

Cela renverra le nom du service qui correspond au copain. Bien sûr, vous pouvez également utiliser l'ID du service. Mais j'aime utiliser le nom.

À la fin, vous pourrez envoyer un message avec

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

Ce script enverra un message toutes les 10 ~ 30 secondes

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
7
Vitim.us
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

J'avais la même question et après quelques recherches, j'ai trouvé la réponse. Pour que le "premier service" soit iMessage, vous devrez vous rendre dans les comptes de préférences iMessage et réorganiser le compte iMessage pour qu'il soit le premier. Après cela, cela fonctionne comme un charme.

Cela démarrera également une conversation s'il n'en existe pas.

J'espère que cela pourra aider!

3
DigiLord

Exemples:

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

Votre ligne:

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

semble fonctionner si "copain" et "service" sont valides.

J'ai mon iMessage avec mon identifiant Apple enregistré, donc quand j'exécute "obtenir le nom des services" j'obtiens pour ce service une chaîne comme

"E: [email protected]"

que je peux utiliser pour "service". Copain n'est que le nom de votre copain, également sous forme de texte pur. Voir "obtenir le nom des copains".

Esperons que ça marche!

3
osxgeek

Ok, je viens de faire ce qui suit en une action Automator qui saisit le nom complet de l'utilisateur connecté, trouve le numéro d'iPhone correspondant dans les contacts, le nom du service et enfin, il envoie le texte entrant (de l'action précédente) à .. .moi sur iMessage. Pas très utile, du moins pour moi en ce moment, mais j'ai prouvé que c'était possible en quelque sorte :)

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
0
Andreas