Как я могу автоматически отправлять текст через Messages.app независимо от операционной системы получателя? - PullRequest
0 голосов
/ 09 мая 2018

Моя цель - отправлять автоматизированные тексты в macOS на телефонный номер в записи FileMaker, используя шаг Perform AppleScript FileMaker (поэтому tell app "FileMaker" отсутствует в приведенном ниже сценарии).

Это контакты, которых нет в базе данных Contacts.app, поэтому tell app "Messages" to send ... не вариант, по крайней мере, напрямую.

Вот мой текущий сценарий.

set _delay to 0.5

set _phone_number to repetition 1 of cell "APPLESCRIPT_PIPE" of layout "DEV"
set the clipboard to _phone_number

set _msg to repetition 2 of cell "APPLESCRIPT_PIPE" of layout "DEV"

tell application "System Events"
  tell process "Messages"
    set frontmost to true
    keystroke "n" using {command down}
    delay _delay

    keystroke "v" using {command down}
    delay _delay

    keystroke return
    delay _delay

    tell text area 1 of scroll area 4 of splitter group 1 of window 1
      set value to _msg
      delay _delay

      keystroke return

    end tell

  end tell
end tell

activate

Это работает безупречно при отправке текста на iPhone, но когда получатель использует телефон без iMessages, иногда он не доставляется.

enter image description here

Нажатие на кнопку «Не доставлено», а затем «Попробовать еще раз» отправляет ее по SMS.

tell app "Messages" to send... работает, если номер телефона находится в базе данных Contacts.app, по крайней мере, он есть на нескольких, которые я тестировал, но добавление контакта в базу данных и затем попытка отправить этот контакт текст не Работа. Вот сценарий, который я попробовал:

tell application "Contacts"
  set _person to make new person with properties¬
    {first name:"Bruce", last name:"Wayne"}
  tell _person
    make new phone at end of phones of _person with properties¬
      {label:"mobile", value:"1234567890"}
  end tell
  save
end tell

tell application "Messages"
  send "Chuck's test" to buddy "1234567890" of service "SMS"
end tell

Контакт добавляется в базу данных, но сообщение не отправляется. Ошибка не генерируется, просто не отправляется.

У кого-нибудь есть идея, как сделать так, чтобы тексты на телефонах Android проходили в первый раз, или, в качестве запасного варианта, способ определить, когда они этого не делают?

1 Ответ

0 голосов
/ 06 сентября 2018

Я разработал скрипт Filemaker, который работает для меня, чтобы отправлять сообщения через iMessage или SMS (без необходимости добавлять собеседника в приложение контактов). Поскольку вы знакомы с Filemaker, вы можете

  1. Установить переменную $ Message с текстом для отправки
  2. Установить переменную $ PhoneNumber с номером телефона (отфильтровано по "+0123456789")
  3. Используйте шаг Perform Applescript с вычисленным Applescript, как показано ниже:

"display dialog \"Send SMS?\" default answer \"" & $Message & "\" buttons {\"Cancel\", \"OK\"} default button 2" & ¶ & "copy the result as list to {button_pressed, text_returned}" & ¶ & "if button_pressed is \"OK\" then" & ¶ & "tell application \"Messages\"" & ¶ & "send text_returned to buddy \"" & $PhoneNumber & "\" of service \"SMS\" " & ¶ & "end tell" & ¶ & "end if"

Я добавил диалоговое окно, чтобы иметь возможность редактировать автоматически отформатированные сообщения в моей базе данных Filemaker. Следующим шагом для меня будет возможность добавить событие в отправленное смс ... Любая идея приветствуется; -)

...