LLamar a Lync/Skype4B como opción por defecto .. Siempre!!
Es muy común que cuando llamamos a un usuario desde nuestro cliente Lync/Skype4B lo hagamos como una llamada de cliente a cliente, por lo que no tendrá coste alguno. Pero si en alguna ocasión hemos llamado al usuario a través de tu número de teléfono, cuando volvamos a intentar llamarle de forma directa sin elegir el tipo de llamada lo haga directamente por el último método que hemos usado:
- ClickToCall: número de teléfono al que hemos llamado
- Name: nombre de usuario al que hemos llamado
Esta información es la que utilizará nuestro cliente Lync/Skype4B para realizar la siguiente llamada, aquí os muestro una captura de una llamada (he borrado parte del número de mi móvil y en la captura de pantalla anterior lo he sustituido por XXXXXX, pero vamos, ahí tenéis un número de teléfono seguro)
Esto hará que hagamos una llamada a un usuario que tiene Lync/Skype4B y está disponible para llamarlo vía VoIP, pero sin embargo la llamada la enviaremos a su móvil (con el consiguiente coste que tendrá). Lo que queremos es que la llamada sea a su cliente Lync/Skype4B:
Esta llamada también queda reflejada en el registro del usuario y quedaría así:
Dicho todo esto, el problema que tenemos es claro, la última llamada que hagamos a un usuario será la que quede en caché para volver a utilizarla a menos que explícitamente elijamos el tipo de llamada. Tenemos varias soluciones para evitar esto y todas a nivel de cliente:
- Eliminar todas las claves que están dentro de ContactStateCacheU: podemos hacerlo con un script de powershell o cmd, pero el problema que tienes que una vez que el usuario vuelva a llamar volverá a crear dichas claves. Esto no nos sirve, porque tendríamos que tener el script de borrado de las claves ejecutándose cada minuto en la sesión del usuario
- Cambiar los permisos de la clave ContactStateCacheU: con esto evitamos que el cliente Lync/Skype4B acceda y cree nuevas claves en cada llamada, esto si nos sirve. Para ello crearemos un script con POwerShell que busque la clave ContactStateCacheU y le quite los permisos al usuario que ha iniciado sesión, de esta forma el cliente Lync/Skupe4b siempre utilizará la configuración que hemos establecido a nivel de directiva de usuario (LLamar a Lync como opción por defecto)
Como creo que la segunda opción es la más acertada y la más fiable, aquí os dejo un script que hemos creado desde ASIR (gracias Amandio por tu ayuda!!)
Aquí os dejo el código del script para copiar – pegar:
# Buscar Claves que incluyan la palabra Contac dentro la clave HKCU:\SOFTWARE\Microsoft\Office\15.0\Lync
$keys = Get-ChildItem -Path HKCU:\SOFTWARE\Microsoft\Office\15.0\Lync -Include Contact* -Recurse | Select-Object Name
foreach ($key in $keys){
# Leemos el valor Name
$keyRoot = $key.Name
# Reemplazamos el valor por HKCU
$PSKeyRoot = $keyRoot.Replace(“HKEY_CURRENT_USER”,”HKCU:”)
# Leemos los permisos actuales
$acl = Get-Acl $PSKeyRoot
# Creamos los permisos necesarios
$ace = New-Object System.Security.AccessControl.RegistryAccessRule(“$env:username”,”FullControl”, “ContainerInherit”, “None”, “Deny”)
# Añadimos la regla a la ACL
$acl.AddAccessRule($ace)
# Establecemos los permisos sobre la clave de registro que habíamos puesto en la variable PSKeyRoot
Set-Acl -Path “$PSKeyRoot” -acl $acl
}
El proceso del script es sencillo y aquí os lo dejo documentado por fases:
- Buscamos una clave de registro dentro de HKCU:\SOFTWARE\Microsoft\Office\15.0\Lync que empiece por Contact (solo existe la que buscamos: ContactStateCacheU) y tenemos su valor en una variable
- El valor que nos devuelve comienza por HKEY_CURRENT_USER\SOFTWARE y debemos cambiarlo por HKCU: , y así lo hacemos
- Establecemos los permisos que vamos a aplicar sobre el usuario que ha iniciado sesión ($env:username): queremos denegar el Control Total sobre la clave ContactStateCacheU y las subclaves (son las que representan a los usuarios llamados)
- Establecemos el valor de dichos permisos sobre la clave de registro que habíamos capturado, puesto en un variable, cambiado el nombre y lo más importante
Esto lo que permitirá es que denegaremos el acceso a la clave HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Lync\$env:username\ContactStateCacheU y subclaves al usuario que ha iniciado sesión:

Llamar con S4B por defecto / Autor / 17 septiembre, 2015
Cuando tenemos un enlace del tipo tel:+340000 a pesar de que tenemos el S4B como predeterminado (de hecho no hay ninguna otra aplicación de telefonía instalada) sigue informando que no tiene aplicación para ejecutarlo.
Por ejemplo cuando pinchamos el número de teléfono de un contacto de Dynamics CRM
¿Alguna idea?
Respuesta / Autor / 17 septiembre, 2015
Hola Álvaro:
Debes configurar el CRM para que Lync sea su sistema de telefonía por defecto y algunas cosas más que te muestro a continuación:
To use click-to-call, Lync must be selected as the telephony provider in Microsoft Dynamics CRM. You can set this on the General tab at Settings > Administration > System Settings.
• By default, Lync presence is enabled in Microsoft Dynamics CRM. System administrators can enable or disable presence in Microsoft Dynamics CRM. To do this, click Settings > Administration > System Settings and on the General tab, Set the IM presence option to Yes or No.
• Each user must have the Lync client installed and running on their PC.
• For Lync presence, Microsoft Dynamics CRM Online users must have https://*.dynamics.com added to their web browsers trusted sites list in Internet options in Internet Explorer.
Si tienes algún problema, podemos verlo sin problema