Взаимодействие с Siri через командную строку в macOS

Я использую Siri на своем телефоне и смотрю, чтобы создавать напоминания на ходу. Когда я нахожусь в офисе, я не хочу нарушать тишину с помощью Siri, поэтому я обычно использую рабочий процесс Alfred, интегрированный с приложением «Напоминания», или использую приложение «Напоминания» напрямую.

Однако у обоих довольно неуклюжий интерфейс, и было бы намного проще, если бы я мог просто набрать в командной строке:

$ siri "remind me to check stack overflow for responses to my question in 15 minutes"

macOS Sierra представила Siri на рабочем столе, но до сих пор мне не удалось найти способ взаимодействовать с Siri каким-либо другим способом, кроме как буквально говорить вслух, а Spotlight не сопоставляет Siri с естественным языком. понимание.

Apple анонсировала Siri SDK, но, похоже, он в первую очередь связан с добавлением функциональности к Siri, а не с раскрытием Siri API.

Предоставляет ли Apple какой-либо API для Siri в macOS, чтобы можно было отправлять запросы Siri через командную строку, системный вызов или другой исполняемый файл?

Примечание: я понимаю, что этот вопрос мог бы найти лучший ответ на Ask Different, Super User или Unix & Linux. В конце концов я решил, что некоторая программная интеграция с API или SDK была бы наиболее вероятным решением, и поэтому Stack Overflow показался мне наиболее подходящим местом для публикации. Если моды не согласны, пожалуйста, перейдите к тому сообществу, которое лучше.


person Cory Klein    schedule 28.09.2016    source источник
comment
Только что установил обновление Sierra и подумал так же, как и вы. Не хочу разговаривать с Сири в офисе. Лучше просто вводить команды в bash. Это должно быть естественной функцией, поскольку первая работа Siri, когда она слышит команду, скорее всего, включает в себя преобразование этой команды в текст.   -  person rtm    schedule 11.10.2016


Ответы (4)


Это не из командной строки, но ближе... и я не проверял это, но в High Sierra есть способ использовать настройки специальных возможностей, чтобы вы могли использовать клавиатуру, чтобы задавать вопросы Siri.

Как включить:

  • Системные настройки › Специальные возможности › Siri.
  • Щелкните поле рядом с Enable Type to Siri, чтобы появилась галочка.
  • Теперь, когда вы запускаете Siri, появится клавиатура, на которой вы можете ввести свой запрос.

Взято отсюда: https://www.macworld.co.uk/news/mac-software/how-use-siri-on-mac-3536158/

person Brad Parks    schedule 28.02.2018


Как упомянул Брэд Паркс, вы можете включить «Тип для Siri» в меню «Доступность». Вы можете использовать это для взаимодействия с Siri с помощью имитации нажатия клавиш.

Я создал простой скрипт Python, который ведет себя так, как запрошено в вашем вопросе, при вызове из командной строки.

Сценарий использует модуль Python keyboard.

#!/usr/bin/python
import sys
import time
import keyboard

def trigger_siri():
    keyboard.press('command+space')
    time.sleep(0.3)
    keyboard.release('command+space')
    time.sleep(0.2)  # Wait for Siri to load

if __name__=='__main__':
    trigger_siri()
    keyboard.write(sys.argv[1])
    keyboard.send('enter')
person Roman    schedule 24.01.2019
comment
Эта библиотека клавиатуры, кажется, загружает весь реестр pypi.... - person sorin; 01.10.2020

Cliclick — отличный (и бесплатный) инструмент для запуска событий мыши и клавиатуры с помощью командная строка. После установки Cliclick я включил «Тип для Siri» («Системные настройки»> «Специальные возможности»> «Siri»). Я также изменил сочетание клавиш Siri на «Нажмите Fn (функция) Space» (Системные настройки > Siri). Другие варианты сочетания клавиш требуют, чтобы вы «удерживали» клавишу, что можно сделать, но это немного усложняет задачу.

После всего этого я могу вызвать Siri из терминала примерно так:

$ cliclick kd:fn kp:space ku:fn w:250 t:"turn on the living room lights" kp:return

Идем дальше, если вы знакомы с терминальными псевдонимами и функции, вы можете создать функцию "siricli":

siricli(){
    cliclick kd:fn kp:space ku:fn w:250 t:"$1" kp:return
}

Откройте новое окно терминала после добавления этой функции, и теперь вы можете вызывать Siri из командной строки следующим образом:

siricli "turn on the living room lights"
person user3561812    schedule 09.10.2019
comment
Это мое любимое решение. Спасибо! - person Chris; 23.06.2021