У меня есть следующая функция обратного вызова в файле конфигурации Hammerspoon:
function usbDeviceCallback(data)
if (data["productName"] == "Polycom CX300") then
if (data["eventType"] == "added") then
log = hs.osascript.applescriptFromFile("skype4b.applescript")
print("OSASCRIPT log: "..log)
elseif (data["eventType"] == "removed") then
apps = hs.application.applicationsForBundleID("com.microsoft.SkypeForBusiness")
for i, app in ipairs(apps) do
app:kill()
end
end
end
end
Вызов следующего яблочного сценария:
tell application "Skype for Business" to activate
tell application "System Events"
tell process "Skype for Business"
keystroke 53
click menu item "Preferences…" of menu "Skype for Business" of menu bar 1
tell application "Skype for Business" to activate
click button "Audio/Video" of toolbar 1 of window 1
tell window "Audio/Video"
click pop up button 1 of group 1
click menu item "Polycom CX300" of menu of pop up button 1 of group 1
click pop up button 2 of group 1
click menu item "Polycom CX300" of menu of pop up button 2 of group 1
click pop up button 3 of group 1
click menu item "Polycom CX300" of menu of pop up button 3 of group 1
click button 1
keystroke "h" using command down
end tell
end tell
end tell
Это должно запускать Skype для бизнеса и переключать его настройки звуковой карты каждый раз, когда я подключаю внешнее устройство IP-телефона. Но, насколько я понимаю, запускается только первый из appleScriptcript, а остальное игнорируется в тишине (хотя я получаю «false» в качестве вывода команды osascript). Яблочный скрипт отлично работает, запустив его из редактора скриптов или где-то еще. Я также пытался вставить задержки в разных частях скрипта, но безрезультатно.
С другой стороны, это работает:
function usbDeviceCallback(data)
if (data["productName"] == "Polycom CX300") then
if (data["eventType"] == "added") then
log = os.execute("osascript skype4b.applescript")
print("OSASCRIPT log: "..log)
elseif (data["eventType"] == "removed") then
apps = hs.application.applicationsForBundleID("com.microsoft.SkypeForBusiness")
for i, app in ipairs(apps) do
app:kill()
end
end
end
end
Интересно, сталкивается ли сценарий с проблемами разрешения, но у меня нет достаточной информации о том, как Hammerspoon использует osa-скрипты, чтобы сделать обоснованное предположение об этом.
Есть идеи, можно ли это исправить? 1014 *