S’il y a un truc que j’aime bien chez OVH (enfin , un des trucs) c’est l’API qui permet notamment de déclencher des actions sur les téléphones VoIP que fournit .. OVH. Et j’aime une autre chose : mon Mac. Donc on peut les marier pour que quand vous voulez appeler quelqu’un depuis votre .. Mac, cela soit possible et carrément intégré avec le carnet d’adresses.
L’idée c’est donc de faire fonctionner de concert le Click2Call d’OVH et le carnet d’adresse Mac OS. Cela marche en deux parties.
Le click2Call permet de composer (émettre) des appels depuis un poste IP OVH MCGP tel que le Thomson ST2030 depuis – entre autres – une interface web ou un programme pour peu que vous fassiez l’interface. Cet article vise à « interfacer » le Carnet d’Adresses Mac OS X avec votre téléphone. Enfin cette interface n’est que dans l’optique de composer des appels je ne sais pas faire autre chose :mrgreen:
D’abord un petit PHP
La première partie est un script PHP à héberger sur un serveur OVH de préférence (d’ailleurs je ne sais même pas si ça marche ailleurs, pas essayé. Bref jouons la simplicité : ça marche même sur les mutualisés). Ce script est celui qui va faire appel à l’API OVH et indiquer quel numéro il faut appeler. C’est notre second script qui lui transmettra le paramètre du numéro à joindre.
Voici le script :
';
try {
$soap = new SoapClient("https://www.ovh.com/soapi/soapi-re-1.14.wsdl");
//telephonyClick2CallDo si tout va bien ...
$soap->telephonyClick2CallDo("userclick2call", "passclick2call", "phone",$_REQUEST['n'], "phone"); // paramétrer ses identifiants Click2Call : ils se créent dans le manager puis ligne => appeler en un clic => modifier => nouvelle autorisation.
echo "telephonyClick2CallDo successfull\n";
} catch(SoapFault $fault) {
// si erreur on explique .. et pour débuguer : emailez vous le résultat :)
echo $fault;
}
?>
Renseignez les 4 paramètres du script ( userclick2call, passclick2call et phone 2 fois ) en allant paramétrer vos identifiants Click2Call : ils se créent dans le manager puis ligne => appeler en un clic => modifier => nouvelle autorisation.
Un minimum vital de sécurité
Protégez l’exécution par n’importe qui avec un .htaccess limitant l’accès à votre / vos IPs qui contiendra par exemple :
Options -Indexes
# Bloquage d’ip des extens
Order Deny,Allow
Deny from all
# Autorisation de mes IPs
Allow from 81.XX.XX.XX
Le coup de grâce, l’Apple Script
La deuxième partie de notre affaire est un Apple Script un peu costaud. En effet pour le fun et pour le confort, ce script détecte et met en pause iTunes et Spotify s’ils sont actifs et fait un fondu « sortant » du son puis met en pause en restaurant le volume initial de lecture. A la fin de votre appel, il suffit de cliquer sur une boite de dialogue pour reprendre la lecture du son endiablé que vous écoutiez avant d’appeler Mme Michu.
Merci à Michel Poulain qui a ajouté une petite boucle qui efface les espaces des numéros de téléphones et remplace les + par des 00 pour OVH.
Attention : il y a une personnalisation à faire dans ce fichier à savoir remplacer http://serveur.fr/appel.php par l’URL de votre script appel.php .. script dans lequel vous aurez renseigné vos identifiants click2Call OVH :-)
using terms from application "Address Book"
on action property
return "phone"
end action property
on action title for p with e
return "Appeler avec OVH - v3"
end action title
on should enable action for p with e
if value of e is missing value then
return false
else
return true
end if
end should enable action
on perform action for p with e
tell application "GrowlHelperApp"
set the allNotificationsList to {"Telephonie"}
set the enabledNotificationsList to {"Telephonie"}
register as application ¬
"Telephonie" all notifications allNotificationsList ¬
default notifications enabledNotificationsList ¬
icon of application "Telephone"
notify with name "Telephonie" title "Téléphonie IP" description "Appel en cours" application name "Telephonie" --identifier "New Mail"
end tell
set Numero to the value of e
set Numero to replace_chars(Numero, "+", "00")
set Numero to replace_chars(Numero, " ", "")
if ApplicationIsRunning("iTunes") then
tell application "iTunes"
set volumeitunes to the sound volume
if player state is paused then
""
else
tell application "GrowlHelperApp"
notify with name "Telephonie" title "Téléphonie IP" description "Mise en pause de iTunes" application name "Telephonie"
end tell
set pauseitunes to true
repeat
--Fade down
repeat with i from volumeitunes to 0 by -1 --try by -4 on slower Macs
set the sound volume to i
delay 0.03 -- Adjust this to change fadeout duration (delete this line on slower Macs)
end repeat
pause
--Restore original volume
set the sound volume to volumeitunes
exit repeat
end repeat
end if
end tell
end if
if ApplicationIsRunning("Spotify") then
tell application "Spotify"
set volumespotify to the sound volume
if player state is not paused then
tell application "GrowlHelperApp"
notify with name "Telephonie" title "Téléphonie IP" description "Mise en pause de Spotify" application name "Telephonie"
end tell
set pausespotify to true
repeat
--Fade down
repeat with i from volumespotify to 0 by -1 --try by -4 on slower Macs
set the sound volume to i
delay 0.03 -- Adjust this to change fadeout duration (delete this line on slower Macs)
end repeat
pause
--Restore original volume
set the sound volume to volumespotify
exit repeat
end repeat
end if
end tell
end if
tell application "Finder"
say "telephone: call in progress"
end tell
tell application "GrowlHelperApp"
notify with name "Telephonie" title "Téléphonie IP" description "Appel du " & Numero & " en cours" application name "Telephonie"
end tell
do shell script "curl -d c=\"XXXXXXXXXX\" -d n=\"" & Numero & "\" http://serveur.fr/appel.php | textutil -stdin -stdout -format html -convert txt -encoding UTF-8 "
delay 15
repeat
set question to display dialog "Avez vous terminé votre appel? " buttons {"Oui", "Non"} default button 1
set answer to button returned of question
if answer is equal to "Oui" then exit repeat
if answer is not equal to "Oui" then
delay 30
end if
end repeat
if pauseitunes then
tell application "iTunes"
play
end tell
end if
if pausespotify is true then
tell application "Spotify"
play
end tell
end if
end perform action
end using terms from
on ApplicationIsRunning(appName)
tell application "System Events" to set appNameIsRunning to exists (processes where name is appName)
return appNameIsRunning
end ApplicationIsRunning
to replace_chars(this_text, search_string, replacement_string)
set AppleScript's text item delimiters to the search_string
set the item_list to every text item of this_text
set AppleScript's text item delimiters to the replacement_string
set this_text to the item_list as string
set AppleScript's text item delimiters to ""
return this_text
end replace_chars
Ce bel Apple Script – pour fonctionner – doit être placé dans le dossier « Address Book Plug-Ins » de votre dossier utilisateur Library ( en gros si votre utilisateur s’appelle gonzague sur le mac dans Utilisateurs/gonzague/Bibliothèque/Address Book Plug-Ins/ ) :-)
Le résultat ?
Un clic droit sur un numéro de téléphone dans le carnet d’adresses et voilà :
Notes de fin:
– Marche sous OS X Lion
– Contient probablement un tas d’imperfections voir des bugs, je ne suis pas développeur mais si vous voulez l’améliorer, les commentaires sont à votre dispo :)
5 réponses sur « Click2Call OVH et Carnet d’adresses Mac »
Toutes ces références à mon humble personne ne peuvent que me faire rougir. ;-) Bravo pour ce script qui rend OVH, une fois de plus, tellement pratique d’usage.
si d’aventure tu l’améliores encore, fais le moi savoir :P
Bonjour et merci pour votre post.
Je suis sous LION et je n’ai donc pas de dossier utilisateurs. Du coup, en allant dans le dossier Bibliotheque à la racine, je n’ai pas de dossier Adress Book Plug-Ins. Je dois donc le créer.
Une fois le script placé dans ce dossier, que dois-je faire ? Pour l’instant, aucune option supplémentaire n’pparait dans le menu contextuel du carnet d’adresse.
Merci !
Bonjour,
ce scripts fonctionne-t-il sur Mountain Lion ?
Merci
Quelqu’un peut-il m’aider à mettre ça en place, il me manque 2-3 infos. Je suis vigneron, je propose l’envoi de quelques bouteilles en échange.