Line 7: | Line 7: | ||
Um über ein Klick den im OS X Adressbuch geöffneten Kontakt anzuwählen kann folgendes AppleScript verwendet werden, es kann als <tt>Call with IP Phone.scpt</tt> in <tt>~/Library/Address Book plugins/</tt> gelegt werden. Voraussetzung für das Funktionieren des Scripts ist, dass man schon die Sicherheitszertifikate der Webdialer-URL mit Safari importiert hat und dass man in dort schon eingeloggt ist (Login muss beim [[SCC-Services|SCC]] beantragt werden). | Um über ein Klick den im OS X Adressbuch geöffneten Kontakt anzuwählen kann folgendes AppleScript verwendet werden, es kann als <tt>Call with IP Phone.scpt</tt> in <tt>~/Library/Address Book plugins/</tt> gelegt werden. Voraussetzung für das Funktionieren des Scripts ist, dass man schon die Sicherheitszertifikate der Webdialer-URL mit Safari importiert hat und dass man in dort schon eingeloggt ist (Login muss beim [[SCC-Services|SCC]] beantragt werden). | ||
< | <syntaxhighlight lang="applescript"> | ||
-- AppleScript(+JavaScript) to dial phone numbers with a Cisco IP Phone from the Mac OS Address Book via the Webdialer URL | -- AppleScript(+JavaScript) to dial phone numbers with a Cisco IP Phone from the Mac OS Address Book via the Webdialer URL | ||
-- 2011 Max Neupert, Bauhaus-Universität Weimar with the help of the world wide web and Google | -- 2011 Max Neupert, Bauhaus-Universität Weimar with the help of the world wide web and Google | ||
Line 27: | Line 27: | ||
on perform action for p with e | on perform action for p with e | ||
set safariWasRunning to false | set safariWasRunning to false | ||
set iTunesWasPlaying to false | |||
if appIsRunning("Safari") then | if appIsRunning("Safari") then | ||
set safariWasRunning to true | set safariWasRunning to true | ||
Line 32: | Line 33: | ||
tell application "Safari" | tell application "Safari" | ||
activate | activate | ||
delay | delay 0.5 | ||
end tell | end tell | ||
end if | end if | ||
Line 66: | Line 67: | ||
-- the following line adds a 0 to get the outside line = “Amtsholung” | -- the following line adds a 0 to get the outside line = “Amtsholung” | ||
set theNumber to "0" & theNumber as text | set theNumber to "0" & theNumber as text | ||
end if | |||
if appIsRunning("iTunes") then | |||
tell application "iTunes" to if player state is playing then set iTunesWasPlaying to true | |||
if iTunesWasPlaying then | |||
tell application "iTunes" to pause | |||
end if | |||
end if | end if | ||
tell application "Safari" | tell application "Safari" | ||
Line 72: | Line 79: | ||
-- wait until page is completely loaded | -- wait until page is completely loaded | ||
-- taken from http://www.mactipper.com/2009/10/run-applescript-when-webpage-is-done.html | -- taken from http://www.mactipper.com/2009/10/run-applescript-when-webpage-is-done.html | ||
delay | delay 1 | ||
repeat until ((do JavaScript "document.readyState" in document 1) is "complete") | repeat until ((do JavaScript "document.readyState" in document 1) is "complete") | ||
delay 0. | delay 0.5 | ||
end repeat | end repeat | ||
delay 1 | |||
do JavaScript "document.forms['loginForm'].elements['destination'].value ='" & theNumber & "'" in document 1 | do JavaScript "document.forms['loginForm'].elements['destination'].value ='" & theNumber & "'" in document 1 | ||
do JavaScript "document.forms['loginForm'].elements['dial'].click()" in document 1 | do JavaScript "document.forms['loginForm'].elements['dial'].click()" in document 1 | ||
if safariWasRunning is false then | --if safariWasRunning is false then | ||
--delay 8 | |||
--tell application "Safari" | |||
-- quit | |||
--end tell | |||
end if | --end if | ||
end tell | end tell | ||
return true | return true | ||
Line 94: | Line 101: | ||
tell application "System Events" to (name of processes) contains appName | tell application "System Events" to (name of processes) contains appName | ||
end appIsRunning | end appIsRunning | ||
</ | </syntaxhighlight> | ||
Known Bugs: | Known Bugs: |
Revision as of 17:44, 28 July 2011
Kontextmenü in OS X Address Book
Um über ein Klick den im OS X Adressbuch geöffneten Kontakt anzuwählen kann folgendes AppleScript verwendet werden, es kann als Call with IP Phone.scpt in ~/Library/Address Book plugins/ gelegt werden. Voraussetzung für das Funktionieren des Scripts ist, dass man schon die Sicherheitszertifikate der Webdialer-URL mit Safari importiert hat und dass man in dort schon eingeloggt ist (Login muss beim SCC beantragt werden).
-- AppleScript(+JavaScript) to dial phone numbers with a Cisco IP Phone from the Mac OS Address Book via the Webdialer URL
-- 2011 Max Neupert, Bauhaus-Universität Weimar with the help of the world wide web and Google
-- some snippets are taken from http://www.mactech.com/articles/mactech/Vol.21/21.10/ScriptingAddressBook/index.html
using terms from application "Address Book"
on action property
return "phone"
end action property
on action title for p with e
return "mit IP Phone wählen"
end action title
on should enable action for p with e
return true
end should enable action
on perform action for p with e
set safariWasRunning to false
set iTunesWasPlaying to false
if appIsRunning("Safari") then
set safariWasRunning to true
else
tell application "Safari"
activate
delay 0.5
end tell
end if
set theNumber to value of e
set amtsholung to true
set theNumber to theNumber's words as string
set lengthOfNumber to length of theNumber
-- the following lines replace the international prefix for germany (+49, or 0049) with 0
if theNumber begins with "+49" then
set theNumber to "0" & characters -1 thru -(lengthOfNumber - 3) of theNumber
else if theNumber begins with "0049" then
set theNumber to "0" & characters -1 thru -(lengthOfNumber - 4) of theNumber
-- or any other international prefix
else if theNumber begins with "+" then
set theNumber to "00" & characters -1 thru -(lengthOfNumber - 1) of theNumber
end if
set lengthOfNumber to length of theNumber
ignoring white space, punctuation, diacriticals and case
-- in case it's a local number ommit the prefix for weimar
if theNumber begins with "03643" then
set theNumber to characters -1 thru -(lengthOfNumber - 5) of theNumber as text
--in case it's an internal number ommit the prefix
if theNumber begins with "58" then
set theNumber to characters 3 thru 6 of theNumber as text
set amtsholung to false
end if
end if
end ignoring
if amtsholung is true then
-- the following line adds a 0 to get the outside line = “Amtsholung”
set theNumber to "0" & theNumber as text
end if
if appIsRunning("iTunes") then
tell application "iTunes" to if player state is playing then set iTunesWasPlaying to true
if iTunesWasPlaying then
tell application "iTunes" to pause
end if
end if
tell application "Safari"
open location "https://telefon.uni-weimar.de/webdialer/Webdialer"
-- wait until page is completely loaded
-- taken from http://www.mactipper.com/2009/10/run-applescript-when-webpage-is-done.html
delay 1
repeat until ((do JavaScript "document.readyState" in document 1) is "complete")
delay 0.5
end repeat
delay 1
do JavaScript "document.forms['loginForm'].elements['destination'].value ='" & theNumber & "'" in document 1
do JavaScript "document.forms['loginForm'].elements['dial'].click()" in document 1
--if safariWasRunning is false then
--delay 8
--tell application "Safari"
-- quit
--end tell
--end if
end tell
return true
end perform action
end using terms from
--from http://codesnippets.joyent.com/posts/show/1124
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
Known Bugs:
- browser window opens and resizes
stopped working after internal call fixfixed, works againUniversity numbers like +49 3643 583872 will be called externally, that means it will cost money! (surprisingly the cisco phone system isn't that smart to correct that internally)fixeddoesn't work with phone number which start like 0049...., (0049), (49)fixedonly works with phone numbers in Germany so farfixeddoesn't work if page loading in browser takes longer than 1 sec.fixed.