WikiTwist France

Click2Call OVH et Carnet d’adresses Mac

Logo OVH

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 :)

Quitter la version mobile