Translate

samedi 28 novembre 2009

TUTORIEL: Intégration Exchange 2007/2010, Trixbox/Asterisk et SIP Trunk Freephonie! (Première partie)

Dans cette première partie nous allons aborder la configuration d'une Trixbox avec la messagerie unifiée d'Exchange 2007 ou Exchange 2010 (mon lab utilisant Exchange 2010).

Je passe les détails d'installation des deux parties, vous devez bien sûr avoir un environnement Exchange qui fonctionne parfaitement, donc avec tous les rôles requis installés (CAS, MBX, HTS, UM). Je prends donc l'hypothèse que tout fonctionne bien de ce côté là...

Votre Trixbox (http://www.trixbox.org/) doit utiliser Asterisk 1.6.x (qui supporte nativement le SIP/TCP (enfin!!!)) et disposer d'au moins une interface réseau routé vers le serveur Exchange UM. Pour la seconde partie, nous aurons besoin d'une interface réseau routée vers Internet (au travers de votre *Box) -- bien sûr ce n'est pas requis pour l'intégration Exchange UM.

Dans ma configuration j'ai donc:
  • eth0: interface "publique" - 192.168.1.7 ==> passerelle par défaut 192.168.1.1
  • eth1: interface "privée" - 192.168.100.7 ==> aucune passerelle mais une route statique car j'ai plusieurs sous réseaux vrituels (pour ajouter une route statique, lisez la documentation CentOS ici: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/s1-networkscripts-static-routes.html)
  • Assurez vous que votre Trixbox a bien accès aux deux réseaux, qu'elle peut résoudre les noms internes et externes et qu'elle a bien accès à Internet.
  • N'hésitez pas à passer du temps pour vérifier tous ces points 
  • Effectuez ensuite une mise à jour complète de votre Trixbox avec la commande "yum -y update" puis redémarrez avec "reboot".
Pour administrer votre Trixbox vous devrez définir un mot de passe au compte "maint". Vous devez effectuer ceci puis un shell après installation et configuration avec la commande "passwd-maint".

L'interface d'administration de votre Trixbox est accessible par un navigateur (ex: http://192.168.1.7 depuis mon réseau "maison"). N'utilisez pas IE8 car celle-ci fonctionne mal sous le navigateur de Microsoft. Personnellement j'utilise Firefox... :°)

Définition des numéros/noms de la configuration Asterisk 
  • Nom de mon SIP Trunk: Exchange UM 
  • Numéro Pilote pour la messagerie vocale (Pilot Number): 1000
  • Numéro Pilote pour le standard automatique (Auto Attendant): 1900
Ces valeurs seront celles reprises ultérieurement dans la configuration personnalisée d'Asterisk. Si vous souhaitez utiliser d'autres valeurs, n'hésitez pas, mais n'oubliez pas de les changer où cela est nécessaire (en général elles apparaitront en rouge dans les explications/valeurs mentionnées dans l'article).

Configuration de l'environnement Asterisk

Avant toute chose, nous allons configurer certains fichiers permettant:
  • De définir des variables globales dans la configuration d'Asterisk, et donc d'être "propre" au regard de la logique de l'IP-PBX;
  • D'ajouter une macro permettant de prendre en charge la diversion vers Exchange sans traffiquer les fichiers natifs d'Asterisk/Trixbox.
  • D'ajouter une application permettant de prendre en charge les appels entrants depuis l'extérieur (nous verrons cela dans la configuration du SIP Trunk Freephonie).
Le but de ces manœuvres, vous l'aurez peut-être compris, est de minimiser l'impact sur la configuration initiale d'Asterisk, mais aussi d'éviter en cas de mise à jour de la Trixbox un écrasement "sauvage" de nos modifications.  Nous aurons aussi la capacité de gérer les appels entrants de plusieurs manières !

Vous pouvez utiliser un shell directement sur votre serveur Trixbox, ou utiliser un client SSH pour y accéder à distance. Utilisez l'éditeur de texte de votre choix pour créer ou modifier les fichiers. Sachez qu'il est possible de modifier les fichiers existants dans la configuration Trixbox (PBX => Config file editor), mais "l'éditeur" est particulièrement simpliste et désagréable à l'usage... 

/etc/asterisk/sip_general_custom.conf

Ce fichier nous permet d'ajouter le support du SIP/TCP pour Asterisk 1.6.x et autoriser les messages SIP de type redirection (302) hors d'Asterisk. Ceci est requis car Exchange UM gère la signalisation des appels entrants sur les ports 5060 (TCP) et 5061 (TLS) au travers du service Exchange UM mais redirige ceux-ci vers le service Speech Engine qui écoute sur d'autres ports (en fonction du "recyclage"), à savoir 5065/5067 en SIP/TCP et 5066/5077 en SIP/TLS.

La partie 'RTP' de la configuration n'est pas requise pour Exchange UM, mais me sert à l'intégration Asterisk/OCS 2007 R2 via mon Mediation Server. Pour information, certains IP-PBX ou certaines passerelles IP ne gèrent pas bien les appels en attente (On Hold) et ont tendance à ne plus envoyer de paquets RTP/RTCP dans ce cas. Par conséquent, le Mediation Server (qui respecte les RFC de ce point de vue) considère son partenaire HS (Hors Service) et donc clos l'appel.

; Enables SIP/TCP support for Asterisk (default post is 5060)
;
tcpenable=yes

; Enables 302/Redirect messages outside of Asterisk
; Required for Exchange UM to redirect from port 5060 (UM listening port) to 5065/5067 (Speech Engine)
;
promiscredir=yes

; Raises RTP timeouts
; This is required to predvent dropping a call when it has been put on hold
; As per RFCs, OCS 2007 R2 Mediation Server expects RTCP packets to still being sent
; while on hold and uncertified IPPBXes and IP Gateways typically don't follow this RFC rule
; All values below are in seconds.
;
rtptimeout=30 ; A value of 0 means 'infinite'
rtpholdtimeout=300 ; A value of 0 means 'infinite'
rtpkeepalive=20 ; A value if 0 means 'no keepalive'

/etc/asterisk/globals_custom.conf

; Exchange UM Configuration
UMSIPTRUNK = ExchangeUM
UMOUTDIALPREFIX =
UMVMPILOTNUMBER = 1000
UMAAPILOTNUMBER = 1900

La variable UMOUTDIALPREFIX permet d'avoir un espace d'extensions séparé entre Asterisk et Exchange. Par exemple, si les extensions Asterisk sont sous forme XXXX, alors la diversion sera faite pour l'extension Exchange XXXX. Ainsi si le prefixe est 5, l'extension UM pour l'extension Asterisk 2001 sera 52001 Dans ce cas, le Dial Plan Exchange sera configuré pour une longueur d'extension de 5.

Je reviendrai plus tard sur le pourquoi-du-comment et l'interêt du préfixe... Pour l'instant faisons sans... :)

/etc/asterisk/extensions_custom.conf

Le fichier extensions_custom.conf est inclus par le fichier extensions.conf et permet de définir des macros ou applications développées pour un besoin spécifique. C'est ce que nous allons faire ici.

Dans ce fichier, nous allons donc créer:
  • Une macro nommée "eum-vm" (en-tête [macro-eum-vm]) qui permet de gérer la diversion vers Exchange si l'extension est activé pour Exchange UM (nous reviendrons sur le "comment" lors de la configuration de nos extensions/utilisateurs Asterisk)
  • Une application nommée "app-eum" (en-tête [app-eum]) qui va permette de définir des destinations personnalisées ("Custom Destinations") que nous utiliserons plus tard. Nous distinguons deux procédures stockées dans cette application: ova et aa. "ova" pour Outlook Voice Access et "aa" pour "Auto Attendant".

[macro-eum-vm]
exten => s,1,NoOp(Entering Exchange UM Voicemail)

exten => s,n,Set(EXTTOCALL=${ARG1})
exten => s,n,Set(VMBOX=${UMDIALPREFIX}${EXTTOCALL})
exten => s,n,Set(DIALSTATUS=${ARG2})
exten => s,n,Set(REASON=unavailable)

exten => s,n,Macro(get-vmcontext,${EXTTOCALL})
exten => s,n,GotoIf($["${VMCONTEXT}"="eum"}]?eum,1)
exten => s,n,NoOp(Leaving Exchange UM Voicemail because user is not EUM-enabled)

exten => eum,1,GoSub(diversion-${DIALSTATUS},1)
exten => eum,n,SIPAddHeader(Diversion: <tel:${vmbox}>\;reason=${REASON}\;screen=no\;privacy=off)
exten => eum,n,Dial(SIP/${UMSIPTRUNK}/${UMVMPILOTNUMBER})
exten => eum,n,NoOp(Extension is reporting ${DIALSTATUS} but is not passing to Exchange UM!)

exten => diversion-BUSY,1,Set(REASON=user-busy)
exten => diversion-BUSY,n,Return

exten => diversion-NOANSWER,1,Set(REASON=no-answer)
exten => diversion-NOANSWER,n,Return

exten => diversion-CHANUNAVAIL,1,Set(REASON=unavailable)
exten => diversion-CHANUNAVAIL,n,Return

exten => _diversion-.,1,Set(REASON=unavailable)
exten => _diversion-.,n,Return

[app-eum]
exten => ova,1,NoOp("Incoming call to Exchange UM Outlook Voice Access")
exten => ova,n,Dial(SIP/${UMSIPTRUNK}/${UMVMPILOTNUMBER})
exten => ova,n,NoOp("Call is not passing to Exchange UM!")
exten => ova,n,Playback(sorry-youre-having-problems&goodbye)
exten => ova,n,Macro(hangupcall,)

exten => aa,1,NoOp("Incoming call to Exchange UM Auto Attendant")
exten => aa,n,Dial(SIP/${UMSIPTRUNK}/${UMAAPILOTNUMBER})
exten => aa,n,NoOp("Call is not passing to Exchange UM!")
exten => aa,n,Playback(sorry-youre-having-problems&goodbye)
exten => aa,n,Macro(hangupcall,)

Explications:
  • La macro "eum-vm" recupère le contexte de messagerie vocale de l'extension (VMCONTEXT). Si celui-ci est positionné à "eum", alors Asterisk effectuera un appel vers le numéro pilote défini (que nous configurerons dans Exchange)
  • L'application "app-eum" contient les procédures stockées définies par le mot-clef "exten" et les valeurs "<nom>,<ligne>,<commande>", ce qui permet d'effectuer des sauts directs depuis d'autres contextes/macros/applications.

/etc/asterisk/extensions_override_freepbx.conf

Le problème majeur d'Asterisk et de la Trixbox est le manque de souplesse dans la configuration par l'interface (Trixbox). Aussi, il n'est pas prévu de prendre en compte un autre système de messagerie vocale que celui inclus dans l'application (au contraire de SipX, qui est prévu pour...).

L'idée est donc d'utiliser le fichier extensions_override_freepbx.conf, qui permet d'écraser une macro existante par une macro "personnelle". Nous allons donc écraser la macro "exten-vm" qui gère l'appel aux extensions/groupes et redirige vers la messagerie vocale si l'extension est activée pour, ou gère l'échec de l'appel sinon...

En utilisant cette méthode, nous conservons la logique initiale d'Asterisk/Trixbox, tout en rajoutant la gestion de la messagerie vocale d'Exchange avant celle de la messagerie vocale native.

Il suffit donc de copier-coller la macro "exten-vm" depuis le fichier extensions.conf dans le fichier extensions_override_freepbx.conf et d'ajouter les lignes en rouge. L'appel a la macro "eum-vm" est donc effectué avant la vérification de la messagerie vocale intégrée. On passe les arguments EXTTOCALL et DIALSTATUS qui correspondent au numéro d'extension appelé et à la raison d'échec de l'appel.

Voici ce que ça donne:

; Ring an extension, if the extension is busy or there is no answer send it
; to voicemail
; ARGS: $VMBOX, $EXT
[macro-exten-vm]
exten => s,1,Macro(user-callerid)
exten => s,n,Set(RingGroupMethod=none)
exten => s,n,Set(VMBOX=${ARG1})
exten => s,n,Set(EXTTOCALL=${ARG2})
exten => s,n,Set(CFUEXT=${DB(CFU/${EXTTOCALL})})
exten => s,n,Set(CFBEXT=${DB(CFB/${EXTTOCALL})})
exten => s,n,Set(RT=${IF($[$["${VMBOX}"!="novm"] | $["foo${CFUEXT}"!="foo"]]?${RINGTIMER}:"")})
exten => s,n,Macro(record-enable,${EXTTOCALL},IN)
exten => s,n,Macro(dial,${RT},${DIAL_OPTIONS},${EXTTOCALL})
;
exten => s,n,Macro(eum-vm,${EXTTOCALL},${DIALSTATUS})
;
exten => s,n,GotoIf($[ $["${VMBOX}" != "novm"] & $["${SCREEN}" != ""] & $["${DIALSTATUS}" = "NOANSWER"] ]?exit,return)
exten => s,n,Set(SV_DIALSTATUS=${DIALSTATUS})
exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="NOANSWER"] & $["${CFUEXT}"!=""] & $["${SCREEN}" = ""]]?docfu,1) ; check for CFU in use
on no answer
exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="BUSY"] & $["${CFBEXT}"!=""]]?docfb,1) ; check for CFB in use on busy
exten => s,n,Set(DIALSTATUS=${SV_DIALSTATUS})
exten => s,n,NoOp(Voicemail is '${VMBOX}')
exten => s,n,GotoIf($["${VMBOX}" = "novm"]?s-${DIALSTATUS},1) ; no voicemail in use for this extension
exten => s,n,NoOp(Sending to Voicemail box ${EXTTOCALL})
exten => s,n,Macro(vm,${VMBOX},${DIALSTATUS},${IVR_RETVM})

; Try the Call Forward on No Answer / Unavailable number
exten => docfu,1,Set(RTCFU=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")})
exten => docfu,n,Dial(Local/${CFUEXT}@from-internal/n,${RTCFU},${DIAL_OPTIONS})
exten => docfu,n,Return

; Try the Call Forward on Busy number
exten => docfb,1,Set(RTCFB=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")})
exten => docfb,n,Dial(Local/${CFBEXT}@from-internal/n,${RTCFB},${DIAL_OPTIONS})
exten => docfb,n,Return

exten => s-BUSY,1,NoOp(Extension is reporting BUSY and not passing to Voicemail)
exten => s-BUSY,n,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?exit,1)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

exten => s-NOANSWER,1,NoOp(Extension is reporting NOANSWER and not passing to Voicemail)
exten => s-NOANSWER,n,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?exit,1)
exten => s-NOANSWER,n,Return

; Anything else comes here
exten => _s-.,1,Noop(IVR_RETVM: ${IVR_RETVM} IVR_CONTEXT: ${IVR_CONTEXT})
exten => _s-.,n,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?exit,1)
exten => _s-.,n,Playtones(congestion)
exten => _s-.,n,Congestion(10)

; Short burst of tones then return
exten => exit,1,Playback(beep&line-busy-transfer-menu&silence/1)
exten => exit,n(return),MacroExit()

Rechargement de la configuration Asterisk

Maintenant que nous avons configuré nos personnalisations, il est nécessaire qu'elles soient prises en compte :)
Le plus simple est de se connecter au shell et de taper asterisk.reload ou alors asterisk -r -x reload.

Création du SIP Trunk et de la route vers Exchange

Maintenant que la configuration est prise en compte, nous allons créer notre SIP Trunk vers Exchange.

Dans la console Trixbox, allez dans le menu PBX ==> PBX Settings ==> (Basic) ==> Trunks. Ajoutez alors un SIP Trunk ("Add SIP Trunk") avec les paramètres suivants:
Si vous voulez faire un copier-coller:

type=friend
host=192.168.101.20
context=from-internal
transport=tcp
insecure=invite,port
qualify=yes
canreinvite=no
disallow=all
allow=alaw&ulaw
dtmfmode=auto


Bien sûr, vous devez modifier l'attribut "host" en spécifiant l'adresse IP ou le nom d'hôte complet de votre serveur Exchange UM (ex: exum.domaine.local). J'utilise l'adresse IP pour m'affranchir de problèmes éventuels de résolution de nom, et par fainéantise aussi... :)

Explications:
  • context ==> Le contexte "from-internal" permet à Exchange d'appeler au travers d'Asterisk. L'utilisation d'un autre contexte est possible, mais Exchange ne sera pas autorisé à appeler vers l'extérieur à moins de personnaliser le contexte pour y inclure des routes.
  • insecure ==> permet d'effectuer des dialogues SIP depuis Exchange UM (pour les appels sortants) en mode "anonyme" -- ici, nous restreignons sur le verbe "INVITE" (qui initie un dialogue SIP) et sur le port. Certains utilisent "insecure=very" qui fonctionne aussi mais qui pour le coup est vraiment non sécurisé !
  • transport ==> permet de dire à Asterisk que ce SIP Trunk utilise le SIP/TCP, car sinon le transport par défaut est UDP.
  • disallow/allow ==> permet de retirer tous les codecs supportés puis de n'autoriser que G.711 a-Law et u-Law dans la négociation média (protocole SDP encapsulé dans le dialogue SIP)
  • dtmfmode ==> permet de négocier le meilleur mode pour la prise en charge du Dial Tone Multi-Frequencing au travers du codec utilisé. J'ai mis cette valeur car j'avais des soucis depuis des appels effectués par mon GSM. Il est important aussi que cela soit géré au niveau du SIP Trunk depuis Freephonie (ou tout autre SIP Trunk depuis lequel on accepte de router vers Exchange)
Voici notre SIP Trunk créé, il suffit maintenant de créer une route vers Exchange. Dans la console Trixbox, allez dans le menu PBX ==> PBX Settings ==> (Basic) ==> Outbound Routes.

Ajoutez alors une route ("Add Route") avec les paramètres suivants:
Explications:
  • Route Name: ExchangeRoute ==> mettez le nom que vous voulez :)
  • Dial Patterns: 1XXX ==> Permet de router tous les numéros à 4 chiffres commençant par 1. Mes numéros "pilote" étant 1000 et 1900, ceci explique cela...
  • Trunk Sequence ==> choissez le SIP Trunk ExchangeUM créé précédemment.
Assurez-vous que la route est prioritaire par rapport aux routes existantes, dont en particulier la route "Outbound". Une fois toutes ces modifications appliquées, cliquez sur "Apply configuration changes" en haut de la console de gestion du PBX.

Configuration des extensions/utilisateurs Asterisk

Maintenant que nous sommes prêts à nous connecter avec Exchange, nous allons créer des extensions/utilisateurs Asterisk. Dans mon environnement les extensions sont dans la plage 2001-2999, j'ai donc créé les extensions 2001, 2002, 2003... Je réserve 2000 pour un usage ultérieur (gestion des appels entrants).

Dans la console Trixbox, allez dans le menu PBX ==> PBX Settings ==> (Basic) ==> Extensions. Ajoutez alors aux moins deux extensions avec les paramètres suivants: 
  • Device Type: Generic SIP Device
  • Extension: 2XXX (où XXX est compris entre 001 et 999)
  • Display Name: Ce que vous voulez
  • Voicemail & Directory:
    • Status: Enabled
    • VM Context: eum
Voici ce que ça donne:

Explications:
  • Activation de la prise en charge de la messagerie vocale pour cette extension
  • Le VM Context permet de mettre le mot clef "eum" permettant à notre macro d'effectuer la diversion vers le numéro pilote Exchange UM. Ainsi, il est possible de basculer simplement du système de messagerie vocale intégré à celui d'Exchange... Pratique ;)
Notes:
  • Trixbox va vous avertir de deux choses:
    • Si vous n'avez pas défini de "secret" (en général il s'agit d'un PIN), l'extension pourra émettre des appels sans être authentifiée. Bien sûr dans le monde réel, mettre un mot de passe est une bonne idée, mais nous verrons plus tard pourquoi cela vas nous poser un problème...
    • Vous n'avez pas mis de "secret" sur la messagerie vocale... Pour cause, le PIN est géré par Exchange. Vous pouvez en mettre un ici, mais il ne servirait à rien.
N'oubliez pas de valider vos changements à coups de "Apply configuration changes" en haut de la console de gestion du PBX.

Configuration d'Exchange

Dans Exchange, nous devons configurer:
  • Un UM Dial Plan
    • Le mien est nommé FR-0001 et configuré ainsi:
      • Type: TelephoneExtension
      • Voip Security: Unsecured
      • Number of digits in extensions: 4
      • Sur Exchange 2010, un "Country/Region Code" est requis, utilisez 33 pour la France.
  • Une UM IP Gateway
    • Name: Trixbox
    • IP address: 192.168.x.y (l'IP interne de votre Trixbox)
    • Ne pas associer un UM Dial Plan par défaut (autant faire propre et l'associer au travers du Hunt Group)
  • Un UM Hunt Group
    • Name: HG-0001
    • Pilot Number: 1000
    • Associated Dial Plan: FR-0001
  • Un UM Auto Attendant
    • Name: FR-0001_AA
    • Pilot Number: 1900
Notes:
  • Ajoutez les packs de langue de votre choix sur votre serveur Exchange UM
  • N'oubliez pas d'associer votre serveur Exchange UM à l'UM Dial Plan nouvellement créé !!!
  • Choisissez la langue par défaut de votre Dial Plan et de votre Auto Attendant une fois le serveur associé car la liste des langues disponibles est générée en fonction des langues disponibles sur le (ou les) serveur(s) associé(s)
  • N'oubliez pas de configurer la stratégie créée par défaut (FR-0001 Default Policy) afin de simplifier la securité des codes PIN (par exemple: 4 digits, empêcher l'expiration, autoriser les PIN non complexes (cocher "Allow common patterns in PIN")
Attendez quelques minutes que la configuration soit prise en compte sur le serveur UM.

Activez alors la Messagerie Unifiée sur vos utilisateurs dont l'extension téléphonique correspond avec celle d'Asterisk/Tribox. Assurez vous que l'utilisateur A correspond à l'extension A, utilisateur B à l'extension B, etc etc...

Premiers tests, commençons (enfin) à "jouer" !

Voici les actions permettant de valider que votre intégration est un succès:
  • Connectez un SIP Phone type X-Lite, eyeBeam (payant!) ou autre... à votre Asterisk. Utilisez par exemple l'extension 2002.
  • Appelez l'extension 2001. Celle-ci étant indisponible, la diversion va s'effectuer vers Exchange UM. Magique, vous pouvez laisser un message !
  • Composez maintenant l'extension 1000, vous tombez sur Outlook Voice Access
    • Entrez un numéro d'extension, par exemple 2001 puis le PIN Exchange UM correspondant
    • Pilotez votre BàL avec la voix !
  • Composez maintenant l'extension 1900, vous tombez sur votre Auto Attendant
    • Prononcez le nom de quelqu'un pour être mis en relation!
    • Selon la configuration de votre Auto Attendant, il faudra recourir à quelques modifications...
Avant de conclure cette première partie, voici un aperçu de ma configuration:



Vous l'autrez compris, les élements ci-dessous vont permettre d'introduire la configuration des appels sortants d'Exchange UM vers le reste du monde.

Nous verrons donc ces points dans la prochaine partie:
  • Configuration du SIP Trunk vers Freephonie
  • Configuration du routage Sortant/Entrant au travers du SIP Trunk Freephonie
  • Configuration des appels sortants depuis Exchange
  • Configuration des appels entrants vers Exchange
D'ici là, amusez vous bien !!!!

Quelques astuces si cela ne fonctionne pas:
  • Depuis un shell Linux, utilisez asterisk -r pour vous connecter à la console Asterisk
  • De là, vous verrez "sans rien faire" les commandes liées aux macros et contextes s'exécuter lors d'un appel. Assurez vous que les macros que nous avons définies au début de cet article soient bien prises en compte.
  • Si vous voulez diagnostiquer les messages SIP, utilisez sip set debug ip 192.168.x.x (où bien sûr 192.168.x.x correspond à l'adresse IP de votre serveur Astrisk/Trixbox)

20 commentaires:

  1. au passage j'utilise la trixbox comme passerelle trunk sip avec ocs/exchange et le FAI free et ca fonctionne tres bien !

    RépondreSupprimer
  2. Moi aussi =°)
    C'est le sujet de la seconde partie.

    L'intégration OCS est beaucoup plus simple et rapide qu'Exchange... :)

    Le seul truc, c'est que - pour OCS - ce n'est pas supporté par Microsoft, puisqu'il s'agit d'une configuration SBC (Session Border Controller), càd que le SIP Trunk n'est pas effectué au niveau du Mediation Server.

    RépondreSupprimer
  3. Je pense que le logiciel de reparer archive zip peut devenir un bon complement aux autres solutions de securite

    RépondreSupprimer
  4. Merci Benoit, tu m'a fait gouter au bonheur d'entendre ::you are connected to Microsoft Exchange ::: Merci bien!!!
    Guy

    RépondreSupprimer
  5. Bonjour,

    D'abord merci pour ce tutorial.

    Cela fonctionnait tres bien jusqu'au passage du SP1 beta. Depuis lorsque l'on appel un poste la diversion vers la boite exchange ne fonctionne plus. Dans le log exchange on obtient eventid 1021
    Invalid Route header: parsing problem (no viable alternative): 2000 ( ceci est le numéro du poste demandé )

    De même lorque l'on patch asterisk pour supporter le p-asserted-identity ( issue 0008824 asterisk ), pour le coup cela ne marche pas du tout

    Le p-asserted-identity sera t il supporté dans le sp1 d'exchange ?

    Quel changement à eu lieu pour que la diversion ne marche plus ?

    Des idées ?

    RépondreSupprimer
  6. Re bonjour,

    Pour le probleme du sp1 avec la diversion qui ne marche plus, la solution est la suivante dans extensions_custom.conf.

    remplace la ligne
    exten => eum,n,SIPAddHeader(Diversion: <${vmbox}>;reason=${REASON};screen=no;privacy=off)

    par
    exten => eum,n,SIPAddHeader(Diversion: ;reason=${REASON};screen=no;privacy=off)


    et la la redirection fonctionne de nouveau.

    Il reste tout de même le probleme du p-asserted-identity.

    RépondreSupprimer
  7. Bonjour Mr Anonyme :)

    Je n'ai pour l'instant pas eu le temps de mettre à jour la partie UM de mon lab, je m'y pencherai en Juillet lorsque le boulot me laissera un peu de bande passante.

    En tout cas merci pour ces investigations ;)

    RépondreSupprimer
  8. Bonjour c'est Mr Anonyme,

    Dans la solution pour la diversion et le SP1 beta, la vrai ligne c'est :

    exten => eum,n,SIPAddHeader(Diversion: "tel:${ARG1}";reason=${REASON};screen=no;privacy=off)

    il manque "tel:${ARG1}" apres Diversion:
    en remplaçant les " par superieur et inférieur
    car blogspot intercepte le supérieur inférieur comme un tag sans doute et ne laisse pas apparaitre ce qui est entre les deux. j'espère que c'est a peu près clair


    et pas

    xten => eum,n,SIPAddHeader(Diversion: ;reason=${REASON};screen=no;privacy=off)

    Bon courage pour Juillet

    RépondreSupprimer
  9. Bonjour c'est encore moi ( Mr Anonyme ).

    Pour ceux qui utilisent Asterisk 1.6.2 il est possible d'allumer les voyants MWI des postes à partir d'UM 2010 . Pour ce faire dans la définition du trunk Exchange ajouter unsolicited_mailbox=1234 ou 1234 est une boite virtuelle qui stocke tous les MWI du serveur Exchange.

    Puis pour chaque extension dans sip_additionnal.conf

    [votre_numero]
    mailbox=1234@SIP_Remote

    Et voila la lampe MWI s'allume au dépot de message. Et s'éteint un fois le message consulté ou supprimé.

    Testé avec des postes Aastra et exchange 2010 SP1 béta .

    RépondreSupprimer
  10. bonjour et merci pour ce tuto clair et terriblement pratique

    j utilise actuellement Exchange 2007 sp3
    après avoir suivie le tuto a la lettre j ai la possibilité de consulté OVA , mon AA , ce qui est déjà génial!
    par contre je n'ais pas la possibilité de laissé un message vocale, en effet je tombe invariablement sur le répondeur de asterisk et non sur celui de UM ?

    cela viendrait il de la version d'exchange utilisé? , quelqu'un aurait il déjà rencontré ce disfonctionnement ?

    Merci par avance
    julien

    RépondreSupprimer
  11. Salut Julien,
    A mon avis cela vient de ta configuration Asterisk. Assure toi de bien avoir effectué la partie concernant la réécriture de la macro exten-vm (fichier extensions_override_freepbx.conf) - il faut aussi penser à mettre le VM context de tes comptes Asterisk à 'eum' et de ne pas mettre de VM Password...

    RépondreSupprimer
  12. Bonjour je souhaiterais savoir si c'est obligé d'avoir 2 NIC sur la machine Asterisk ? Peut on reproduire le même environnement avec une seule interface ?

    RépondreSupprimer
  13. Bonjour Kevin,

    Oui, cela est faisable cependant ça signifie que l'IP-PBX (Trixbox/Asterisk) doit pouvoir accéder au SIP Trunk de manière directe. Dans mon lab, je suis derrière un pare-feu (TMG) et ce n'est pas la panacée. Donc le plus simple était de "simuler" un accès au SIP Trunk provider (ici, Free) car c'est comme cela que cela doit se passer normalement :)

    RépondreSupprimer
  14. Merci d'avoir repondu si vite cher Mr.Boudeville

    En faite c'est un peu complexe à schématiser ce que tu me réponds là .

    Dans mon cas,mon infra est virtuelle (H-v) la machine Asterisk de mon lab est bridgée ainsi que LYNC, EXCH, et mon AD sur le même sous réseau virtuel. Donc mon asterisk a une interface réseau dans le lan avec comme GW ma freebox en mode NAT classique (LAN - WAN) . Je peux comme même suivre ton tuto pas à pas ?
    Désolé mais je suis un gros newbie je trouve ca compliquer la téléphonie

    RépondreSupprimer
  15. D'accord, si tout est bridgé, il n'y aura pas de problème. Il faut que tu voies ta Trixbox comme un "endpoint" classique (sauf que c'est bien plus que cela en effet :)) - donc typiquement, ta Trixbox va faire le REGISTER auprès de Free, ce qui permet d'émettre et recevoir des appels. Dans le cadre de l'intégration avec Exchange, ta Trixbox fera deux choses:

    1. Signalisation (SIP) entre les deux mondes (ex: appel entrant ou sortant)
    2. Relais du traffic Audio (RTP/RTCP)

    Donc au final l'idée est d'avoir:

    Exchange <==> Trixbox <==> Trunk Free
    SIP/TCP SIP/TCP+UDP SIP/UDP
    -- RTP/RTCP -- -- RTP/RTCP --

    RépondreSupprimer
  16. Hello,

    Je voulais te remercier pour ton tuto, tout fonctionne parfaitement.

    J'ai une question est-il possible d'utiliser Lync/OCS comme brique supplémentaire dans le lab.

    i.e : UM -> LYNC -> Trixbox

    en gardant le dial plan et les extensions en 1xxx coté MS et 2xxx coté Asterisk .

    Pourquoi tu ne parles pas de l'intégration de OCS/LYNC dans ton tuto ?

    RépondreSupprimer
  17. Bonjour Kévin,

    Merci pour ton message :)

    Oui, il faut que je documente tout ça mais je n'ai pas le temps d'écrire de longs article en ce moment :( - Ceci dit l'intégration OCS est super simple d'un point de vue Asterisk, il est vrai que c'est un peu plus "touchy" avec Lync. Promis, dès que j'ai du temps, je ponds un article :)

    Bonne continuation,
    Benoit.

    RépondreSupprimer
  18. Bonsoir a tous !

    Pourriez-vous confirmer:

    Je dispose d'un serveur exchange 2010 (UM encore non configuré)
    J'ai LYNC de déployé sur un autre serveur (physique)
    J'ai une connexion FREE.

    Est-ce que cela suffit pour utiliser les fonctionnalitées de messagerie (appel vers exchange etc..., la téléphonie,standard personnel etc...) ?

    Ou faut-il que je me penche sur cette fameuse trixbox ou un sip trunck payant ?

    Si vous avez des pistes.. articles tuto.. je suis preneur !

    Merci a tous !

    Yoann

    RépondreSupprimer
  19. Bonjour Yoann,

    Non, il ne sera pas possible de faire communiquer Lync directement avec Free. Il te faudrait une passerelle pour cela. Trixbox peut faire l'affaire mais n'est pas une solution supportée.

    Pour un SIP Trunk, il suffit de déployer le rôle Mediation Server sur Lync (possible sur tes frontaux si petit environnment, sinon 1 ou + serveur(s) dédié(s)) et bien sûr disposer d'un Provider compatible.

    Bon courage,
    Benoit.

    RépondreSupprimer
  20. Bonjour Benoit,

    Merci d'avoir pris la peine de répondre !
    Je vais me pencher plus serieusement la dessus cet été !

    Donc pour resumer:
    1 je m'abonne a un SIP trunk, j'install le role mediation server, je configure le SIP trunk
    2 Configuration Lync et Exchange UM

    Question: une fois mon serveur opérationnel, si je souhaite le passer en "prod", il n'y a aucun moyen de "transferer" mon numero de ligne fixe ?

    Je suppose qu'un simple renvoi d'appel empechera d'identifier correctement un appel entrant ?

    Une dernière question: Peux-t-on utiliser une ligne téléphonique "standard" comme passerelle ?

    Je surveille régulierement ton blog de près, en esperant voir arriver un tuto exchange 2010 / LYNC / SIP TRUNK =)

    Encore merci et bon courage !

    Yoann

    RépondreSupprimer