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:
Leave a Reply