- La téléphonie Internet libre basée sur Asterisk par Sylvain Thérien - http://www.tux89.com -

Intégration Google Voice et Asterisk en mode Trunk

Vous avez lu dans la rubrique Intégration Google Voice à Asterisk [1] comment utiliser Google Voice alors que vous n’habitez pas aux États-Unis d’Amérique. La solution qui était présentée dans cette rubrique exigeait l’utilisation d’un adaptateur téléphonique analogue « ATA » soit le Obi110 [2], afin d’éviter de créer des Trunks vers IPKall et Google Voice. C’est une solution qui selon moi est simple, robuste, fiable et efficace, mais qui cependant exige des frais d’environ 60 $ Canadien pour l’acquisition de l’ATA. Dans cette rubrique, nous verrons comment intégrer Google Voice à Asterisk, mais cette fois-ci sans l’ATA Obi110.

Cette rubrique suppose que vous utilisez PIAF comme distribution (PIAF Gold ou PIAF Silver – Asterisk 1.4). De plus, elle suppose que vous ayez déjà déployé le script « Orgasmotron », pour plus de détails à ce sujet, référez vous aux rubriques « Installation d’applications permettant d’étendre les fonctions de base d’Asterisk [3] » et « Ajouts effectués par le script d’installation Orgasmatron [4] ».

Le principe d’un Trunk entre Asterisk et Google Voice est simple, les appels entrants et sortants sont effectués par votre ligne téléphonique, qui elle est associée à votre compte Google Voice. De plus, les appels sortants sont effectués via une fonction de Google Voice appelé CallBack. En fait, lorsque vous désirez appeler en utilisant GoogleVoice, un script Python sur votre serveur Asterisk nommé « pygooglevoice », communiquera avec votre compte Google Voice et lui demandera de composer le numéro de la destination que vous désirez joindre, en plus de vous appeler sur la ligne téléphonique associée à votre compte Google Voice. Comme nous avons vu dans la rubrique « Intégration Google Voice à Asterisk [1] », vous devez posséder un numéro de téléphone lié au territoire américain. Alors pour obtenir ce numéro téléphonique américain, nous utiliserons les services de IPKall.

L’interconnexion à Google Voice par cette méthode d’appel ne peut supporter qu’un seul appel à la fois. Il n’y a aucun mécanisme empêchant les appels multiples, ce qui peut transgresser les conditions d’utilisation de Google Voice.

Mise en place d’un Trunk IPKall

Première étape – Mise en place d’un nom de domaine dynamique

Si vous n’avez pas d’adresse IP statique ou de nom de domaine permanent, utilisez un service DNS dynamique tel que celui offert par DYNDNS [5]. Ceci vous permettra de définir un nom d’hôte dynamique pointant sur l’adresse IP publique du routeur sur lequel votre système Asterisk est relié.

Assumons que notre nom DNS sera le suivant : « mon-asterisk.dyndns-ip.com ».

La photo ci-dessous représente la configuration du service DNS dynamique sous l’interface du routeur DD-WRT.

Configuration DNS dynamique [6]

 

Deuxième étape – Ajout d’une route entrante SIP pour IPKall

Je suppose que vous avez déjà installé une version de PIAF « Installation d’Asterisk distribution PBX In A Flash [7] », incluant une version d’Orgasmotron « Ajouts effectué par le script d’installation Orgasmatron [4] ». Vous devriez donc observer dans le fichier « /etc/asterisk/extensions_override_freepbx.conf » quelque chose de similaire à ceci :

[from-sip-external]
;give external sip users congestion and hangup
; Yes. This is _really_ meant to be _. – I know asterisk whinges about it, but
; I do know what I’m doing. This is correct.
exten => _.,1,NoOp(Received incoming SIP connection from unknown peer to ${EXTEN})
exten => _.,n,Set(DID=${IF($[« ${EXTEN:1:2} »= » »]?s:${EXTEN})})
exten => _.,n,Goto(s,1)
exten => s,1,GotoIf($[« ${ALLOW_SIP_ANON} »= »yes »]?from-trunk,${DID},1)
exten => nv-demo,1,Goto(app-daynight,2,1)
exten => mothership,1,Goto(app-daynight,1,1)
exten => e164,1,Goto(from-trunk,e164,1)
exten => fax,1,Goto(from-trunk,fax,1)
exten => gv-ringback,1,Goto(from-trunk,gv-ringback,1)
exten => s,n,Set(TIMEOUT(absolute)=15)
exten => s,n,Answer
exten => s,n,Wait(2)
exten => s,n,Playback(ss-noservice)
exten => s,n,Playtones(congestion)
exten => s,n,Congestion(5)
exten => h,1,NoOp(Hangup)
exten => i,1,NoOp(Invalid)
exten => t,1,NoOp(Timeout)

Éditez le fichier « /etc/asterisk/extensions_override_freepbx.conf » et après la ligne

exten => gv-ringback,1,Goto(from-trunk,gv-ringback,1)

Ajoutez-y la ligne suivante :

exten => ipkall-1,1,Goto(from-trunk,701,1)

Remarquez que les appels entrants en provenance de IPKall seront dirigés vers l’extension 701. Si vous désirez les acheminer vers un autre poste, vous n’avez qu’à modifier le nombre 701 par celui du poste sur lequel vous désirez recevoir l’appel.

Pour l’instant, vous devez spécifier un numéro de poste à partir duquel vous pourrez répondre directement, sinon votre activation Google Voice ne pourra fonctionner.

Troisième étape – Activaton d’un compte IPKall

Si vous n’en possédez pas déjà un numéro de téléphone des États-Unis, vous devrez en obtenir un de IPkall.

Inscrivez-vous à Ipkall [8] afin de recevoir gratuitement un numéro de téléphone des États-Unis (US).

Entrez les paramètres suivants et poursuivez :

Création compte IPKall [9]

Prendre note que vous venez de configurer l’envoi SIP pour le numéro attribué par ipkall.com à l’URI SIP « ipkall-1mon-asterisk.dyndns-ip.com » ou encore « ipkall-1@ADRESSEIP_DE_VOTRE_SERVEUR_ASTERISK ».

Vous recevrez par courriel un numéro de téléphone des États-Unis (US). Ce numéro est votre première clé pour activer/utiliser Google Voice en dehors du sol américain. Notez que si la période d’inactivité de votre compte IPkall dépasse 30 jours (aucun accès SIP), votre compte sera automatiquement déactivé et vous perdrez le numéro de téléphone qui vous a été assigné.

Dans notre exemple, ce numéro attribué par IPKall aurait été (253) 785-0717.

Quatrième étape – Ajout d’une route entrante basée sur le numéro SDA ipkall-1

Il faut maintenant créer sous FreePBX, une route entrante pour l’identifiant SIP associé au numéro de téléphone reçu de IPKall.

Sous FreePBX -> Configuration -> Routes Entrantes -> Ajout Route Entrante

Entrez les paramètres suivants :

Édition Route Entrante

Choix Destination

Vous aurez un message vous indiquant ceci :

L’information SDA est normalement juste un numéro d’appel entrant ou pour des utilisateurs experts un masque d’appel valide pour Asterisk.
Vous avez entré un numéro de SDA non standard.
Êtes-vous sûr que c’est correct?

Simplement répondre que vous êtes en accord.

Cinquième étape – Validez la réception d’appel de IPKall

Effectuez maintenant une vérification et composez le numéro obtenu de IPKall. Vérifiez que votre serveur Asterisk est en mesure de recevoir l’appel à l’extension programmé, poste 701 dans notre cas. Dans notre exemple, le numéro à composer aurait été (253) 785-0717. Notez que si vous effectuez cet appel à partir de votre serveur Asterisk, l’appel sortira sur un de vos Trunks associés aux appels interurbains, puisqu’il est question d’appeler un numéro aux États-Unis d’Amérique.

Si l’appel ne fonctionne pas, il est possible que vous ayez besoin d’effectuer les ajustements suivants :

A) Ouverture sur votre routeur des ports 5060 à 5070 UDP vers Asterisk.

Ouverture des ports UDP 5060 a 5070 vers asterisk [10]

B) Si vous avez des problèmes de réception d’appel, ajouter les ligens ci-dessous au fichier « /etc/asterisk/sip_custom.conf » :

[from-trunk]
type=user
nat=yes
insecure=very
dtmfmode=rfc2833
context=from-trunk
canreinvite=no
disallow=all
allow=ulaw
allow=gsm

C) De plus, si vous avez des problème avec la réception ou transmission de l’audio dans un sens ou l’autre, ajouter les lignes ci-dessous au début du fichier « /etc/asterisk/sip_custom.conf » :

externip=mon-asterisk.dyndns-ip.com
localnet=192.168.11.0/255.255.255.0

Notez que externip représente le nom de domaine que vous avez défini au début de cet article. De plus, localnet représente l’adressage IP de votre réseau local.

D) Exécutez la ligne de commande suivante afin de recharger la configuration d’Asterisk.

asterisk -rx « reload »

Vous êtes maintenant prêt à passer à l’étape d’activation Google Voice.

Mise en place d’un Trunk Google Voice

Première étape – Nettoyage au cas où vous auriez une ancienne version de pygooglevoice sur Asterisk

Si vous aviez déjà installé précédemment « pygooglevoice », vous devriez d’abord effectuer un petit nettoyage avant de procéder. Éditez le fichier « /etc/asterisk/extensions_custom.conf » et trouvez la ligne indiquant [custom-gv]. Enlevez toute la section [custom-gv], c’est à dire supprimez les lignes débutant par [custom-gv], incluant la section [custom-park] jusqu’à la section suivante débutant par [], sans toutefois supprimer la ligne de cette dernière section débutant par [].

Dans mon cas, j’ai enlevé ces lignes :

[custom-gv]
exten => _X.,1,Wait(1)
exten => _X.,n,Set(ACCTNAME=gvemail)
exten => _X.,n,Set(ACCTPASS=gvpassword)
exten => _X.,n,Set(RINGBACK=gvringback)
exten => _X.,n,Set(CALLPARK=75)
exten => _X.,n,Playback(pls-wait-connect-call)
exten => _X.,n,System(gvoice -e ${ACCTNAME} -p ${ACCTPASS} call ${EXTEN} ${RINGBACK})
exten => _X.,n,Set(PARKINGEXTEN=${CALLPARK})
exten => _X.,n,Park()

[custom-park]
exten => s,1,Wait(4)
exten => s,2,Set(GVNUM=gvnum)
exten => s,3,Set(CALLPARK=75)
exten => s,4,NoOp(**CALLERID: ${CALLERID(number)})
exten => s,5,GotoIf($[« ${CALLERID(number)} »= »${GVNUM} »]?6:7)
exten => s,6,ParkedCall(${CALLPARK})
exten => s,7,Goto(from-trunk,gv-incoming,1)

Deuxième étape – Activation du service Google Voice en dehors des États-Unis

Si vous avez déjà activé le service Google Voice en dehors des États-Unis, alors vous n’avez qu’à sauter à : « Entrez le numéro de téléphone reçu de IPkall et continuez (étape 3 de 4 de Google Voice – Add a forwarding phone) », situé un peu plus bas.

L’étape la plus fastidieuse est de se connecter à Google Voice et de trouver un serveur Proxy qui permettra d’activer le compte Voix. On ne peut activer son compte Google Voice que si l’on est sur le sol américain, ce qui veut dire en terme plus concret, avoir une adresse IP dont la géolocalisation est traçable des États-Unis. Vous aurez compris que le Proxy est la deuxième clé pour activer son compte Google Voice.

Les critères recherchés pour le Proxy sont les suivants :

Vous pouvez effectuer la recherche suivante sur Google :

transparent USA SSL

Dans mon cas, un des liens proposés par le moteur de recherche de Google a été :

http://www.xroxy.com/proxy1698051.htm [11]

Notez que les Proxy ne sont pas toujours fonctionnels et accessibles. Voici deux Proxy pour vous aider à débuter :

Si vous êtes curieux par rapport à l’endroit physique du Proxy, utilisez ce lien pour trouver sa géolocalisation : http://www.iplocation.net/ [12]

Pour vous assurer que le Proxy est fonctionnel, utilisez ce lien : http://www.myiptest.com/staticpages/index.php/http-proxy-checker-tool.html [13]

Ajustez maintenant les paramètres Proxy de votre fureteur, dans mon cas Opera.

Proxy Opera [14]

Ayant au préalable un compte Google, connectez-vous maintenant à Google Voice : https://www.google.com/voice

PréUpgrade Google Voice [15]

Vous devriez voir le bouton “Upgrade My Account”. Si vous ne voyez pas ce bouton, c’est que votre Proxy ne fonctionne pas et Goggle suppose que vous n’êtes pas sur le sol des États-Unis d’Amérique.

Appuyez sur « Upgrade My Account » afin d’amorcer le processus d’activation de Google Voice et appuyez sur « Get started ».

Étape 1 Google Voice [16]

Spécifiez maintenant un ou plusieurs critères de recherche pour le numéro de téléphone Google que vous recevrez.

Sélection numéro Google Voice [17]

Par exemple, pour le critère tuxme, les choix proposés ont été les suivants.

numéro tuxme Google Voice [18]

Faites votre choix et continuez. Dans notre exemple, le numéro choisi serait (706) 688-9634 ou 706-6TU-XME4.

Entez un mot de passe pour votre boîte vocale et indiquez que vous acceptez les conditions de Google.

Mot de passe Google Voice [19]

Entrez le numéro de téléphone reçu de IPkall et continuez. Dans notre exemple, ce numéro aurait été (253) 785-0717.

Ajout téléphone Google Voice [20]

Dans l’éventualité où le numéro IPkall aurait déjà été attribué dans le passé et qu’un autre utilisateur s’en serait servi pour activer Gogle Voice, vous verrez le message d’erreur suivant.

Erreur de numéro Google Voice [21]

Annulez votre compte IPkall, recréé en un autre, puis poursuivez avec votre nouveau numéro.

Canceler IPKALL.COM [22]

De retour à la configuration de Google Voice, la dernière étape consiste en la vérification. On vous demandera de spécifier un numéro de téléphone valide aux États-Unis. Entrez le numéro reçu précédemment de IPkall. Assurez-vous d’avoir le poste 701 fonctionnel et maintenant, il suffit de cliquer « Call me now ».

Validation Google Voice [23]

Répondez à l’appel entrant sur le poste 701 et tapez les deux chiffres dans le pavé de numérotation correspondant au code que Google Voice vous a indiqué.

Google Voice complété [24]

Vous n’avez maintenant plus besoin d’utiliser de Proxy pour vous connecter à Google Voice. Dans notre exemple, le numéro reçu de Google Voice est (706) 688-9634 ou 706-6TU-XME4.

Vous devez maintenant modifier les paramètres de Google Voice tels que présentés ci-dessous.

Paramètres Google Voice [25]

De plus, vous devez activer la destination IPKall afin que les appels entrants de votre numéro de Google Voice soient acheminés vers votre serveur Asterisk.

Destination IPKALL [26]

Notez que le numéro de l’appelant ne sera pas transmis par IPKall. Si vous désirez que le numéro réel de la personne qui vous appelle soit transmis, vous devrez utiliser un service différent de IPKall.

C’est tout ! Vous avez terminé avec Google Voice

Troisième étape – Trunk custom-gv

Sous FreePBX -> Configuration -> Trunks -> Ajout Trunk Personnalisé, créez un Trunk, s’il n’existe pas déjà, qui sera utilisé pour la communication avec Google Voice.

Trunk Google Voice [27]

Spécifiez le numéro Google Voice reçu  dans le champ « CID sortant », mettez 1 dans le champ « Nombre maximal de canaux » et ajoutez « local/$OUTNUM$@custom-gv » dans le champ « Chaîne de Numérotation Personnalisée »  et appuyez sur « Soumettre ».

Quatrième étape – Route sortante GoogleVoice

Créer maintenant, si elle n’existe pas déjà, sous FreePBX -> Configuration -> Routes Sortantes -> Ajout Route Sortante, une route sortante qui sera utilisée pour les appels vers Google Voice

Route sortante vers Google Voice [28]

Entrez les paramètres suivants et appuyez sur « Soumettre » :

Petit truc mnémotechnique avec 48, notez que le préfixe 48 pour la sélection de la route vers Google Voice représente les lettres G & V sur le clavier de votre téléphone.

Code d'accès Google Voice [29]

Cinquième étape – Destination personnalisée custom-park

Créer maintenant, si elle n’existe pas déjà, sous FreePBX -> Outils -> Destinations personnalisées -> Ajout Destinations personnalisées, une Destination Personalisée. N’oubliez pas que lorsque quelqu’un appellera votre numéro Google Voice, votre numéro IPKall sonnera aussi. Cette destination personnalisée sera utilisée afin de mettre les appels provenant du numéro IPKall en stationnement (Call Park) dans Asterisk.

Call Park Google Voice [30]

Entrez les paramètres suivants et appuyez sur « Soumettre » :

Custom Destination: custom-park,s,1
Description: Custom GV-Park

Sixième étape – Route entrante IPKall

Ensuite, changez sous FreePBX -> Configuration -> Routes Entrantes -> Route Entrante, la route entrante du numéro de téléphone reçu de IPKall afin de pointer sur le Custom Destination GV-Park

Entrez les paramètres suivants et appuyez sur « Soumettre » :

Édition Route Entrante
Nom de la Route : IPKall
Numéro SDA : ipkall-1
Choix Destination
Extensions: 701
Mettre plutôt
Custom Destination: Custom GV-Park

Septième étape – Route entrante gv-incoming

Créez, si elle n’existe pas déjà, sous FreePBX -> Configuration -> Routes Entrantes -> Ajout Route Entrante, une route entrante pour le numéro de téléphone reçu de Google Voice.

Route entrante Google Voice [31]

Entrez les paramètres suivants :

Édition Route Entrante
Nom de la Route : gv-incoming
Numéro SDA : gv-incoming
Choix Destination
Extensions: Changer le # d’extension (701) pour votre menu de RVI péféré.

Appuyez sur « Soumettre » , ensuite sur « Activer nouvelle configuration » située en haut de l’écran (couleur orange) et puis sur « Activer ».

Huitième étape – Dernier Parking Lot disponible

Il faut maintenant trouver le dernier Parking Lot disponible sur votre système Asterisk.

Parking lot [32]

Naviguez sous FreePBX -> Configuration -> Parking Lot, et notez le numéro indiqué en plus du nombre d’espaces disponibles. Dans mon cas, j’ai trouvé ceci :

Parking Lot Extension: 70
Number of Slots: 5

Donc 70 + 5 = 75.

Alors le numéro du lot de stationnement à connaître pour Google Voice est 75.

Neuvième étape – Mise en place du script d’installation Google Voice

Exécutez les lignes de commandes suivantes :

cd /root
mkdir install-gv-new
cd install-gv-new
wget http://bestof.nerdvittles.com/applications/gv/install-gv-new
chmod +x install-gv-new
./install-gv-new

Durant l’installation, vous devrez spécifier les informations suivantes :

Dixième étape – Destination Google Voice CallBack

Comme dernier point, modifiez le fichier « /etc/asterisk/extensions_override_freepbx.conf » et changez la ligne :

exten => ipkall-1,1,Goto(from-trunk,701,1)

Par celle-ci :

exten => ipkall-1,1,Goto(from-trunk,${DID},1)

Notez que le seul changement effectué a été la destination pour les appels CallBack Google Voice initiés à partir du script pygoglevoice. J’ai changé la destination 701 pour ${DID}.

Exécutez la ligne de commande suivante afin de recharger la configuration d’Asterisk.

asterisk -rx « reload »

Bravo !

C’est tout, vous avez terminé. Vous pouvez maintenant recevoir et acheminer des appels avec votre numéro Google Voice en profitant de tous les avantages que cela peut vous permettre.

Si vous désirez une solution plus simple, référez-vous à la rubrique « Intégration Google Voice à Asterisk [1] » où je présente l’utilisation d’un adaptateur téléphonique analogue « ATA », soit le Obi110, afin d’éviter de créer des Trunks vers IPKall et Google Voice.

NOTE 1 : La période d’inactivité de votre compte IPkall est de 30 jours (aucun accès SIP), votre compte sera automatiquement déactivé et vous perdrez le numéro de téléphone qui vous a été assigné si votre Trunk Asterisk vers IPKall est inactif pour une durée supérieure à 30 jours.

NOTE 2 : L’interconnexion à Google Voice par cette méthode d’appel ne peut supporter qu’un seul appel à la fois. Il n’y a aucun mécanisme empêchant les appels multiples, ce qui peut transgresser les conditions d’utilisation de Google Voice.

Références

Tweaking Previous Setups. [33]
Tweaking Asterisk for Free Google Voice Calling [34] SIP Proxies Make Asterisk Shine and Save You Money [35] Google Voice for Python [36] pixelstats trackingpixel
Comments Disabled (Open | Close)

Comments Disabled To "Intégration Google Voice et Asterisk en mode Trunk"

#1 Comment By pierre Thomas On 6 juillet 2011 @ 16 h 49 min

Module googlevoice pour freepbx

PBX in a Flash Forum » Forum Topics » Add-On Install Instructions » Turnkey GVoice in PIAF-Purple
Turnkey GVoice in PIAF-Purple

Just a heads up that we’ve tweaked PIAF-Purple installs to now provide turnkey Google Voice support. A new Google Voice FreePBX module by Marcus Brown now is included, and it takes less than 2 minutes to get everything set up. It works like this:

Create a Google Voice account with Google in the usual way (see below).
Install PIAF-Purple and open the FreePBX GUI with your browser.
Choose Admin, Google Voice and add one (or more) GV accounts. username is just that, no @gmail.com! (see example below)
Finally, log into your server as root and issue command: amportal restart
To make Outbound Calls, just add an Extension, set up a phone, and dial any 10-digit number in U.S./Canada (free!)

To receive Incoming Calls, create an Inbound Route using the DID of each Google Voice account you set up. Map the calls to the extension you set up. If you want to use CallerID Superfecta, first choose that option in FreePBX, click Default, and set the maint password to your FreePBX maint password. Then you can enable CID Superfecta in your extension setup.

#2 Comment By Sylvain Thérien On 7 juillet 2011 @ 7 h 10 min

Merci Pierre pour l’information.

Effectivement, un module FreePBX permet maintenant l’intégration de Google Voice avec Asterisk. Pour ceux qui utilisent PIAF version Purple, il est possible de bénéficier de son utilisation. Pour les autres versions, PIAF-Gold, PIAF-Silver et PIAF-Bronze, le module n’est pas supporté puisque le prérequis le plus important est d’utiliser au minimum Asterisk 1.8.

Tout de même, pour ceux qui possèdent Asterisk 1.8 (peu importe la distribution) et qui désirent essayer le module, suivre ce lien :

[37]

Notez que le module a du être corrigé pour le support de FreePbx 2.9, dans ce cas veuilles utiliser la version suivante du module :

[38]