• Show me as Inactive when my computer has been idle for this many minutes

     

     

    Registry locations

    HKCU\Software\Microsoft\Communicator\IdleThreshold

    Allowed registry values

    Any integer value between 5 and 360, inclusive (represents time, in minutes)

    Registry value type

    REG_DWORD

    Default setting

    5 minutes

     

    Broadcasting presence information to people is of little use if that information isn’t up-to-date; after all, what’s the point of announcing to people that you're available when it turns out that you really aren’t available? One way Microsoft Lync tries to help you keep your presence information up-to-date is by monitoring idle time on your computer: by default, if your computer has sat idle for 5 minutes (that is, if no one has typed anything on the keyboard or used the mouse in the past 5 minutes) then Lync automatically sets your current status to Inactive.

     

    Note. Yes, for some of us Inactive probably is our permanent status. But that’s a different story.

     

    If you don’t like the default period of 5 minutes of inactivity, well, that’s easy enough to change; in fact, that can either be done by using the Lync user interface or by writing a script. If you want to change this value using Lync, just open Status option of the Options dialog box and change the value of the Show me as Inactive when my computer has been idle for this many minutes box:

     

     

    As for writing a script, that’s just as easy: all you have to do is modify the HKCU\SOFTWARE\Microsoft\Communicator\IdleThreshold registry value. Set IdleThreshold to any value between 5 and 360 and, in return, Lync will wait that number of minutes before marking you as Inactive.

     

    We told you it was easy.

     

     

     

    Before we show you how to change the idle timeout let's show you how to retrieve the current value of IdleThreshold from the local computer. If you'd prefer to retrieve this value from a remote computer, just set the value of the variable $computer to the name of that remote computer. For example:

     

    $computer = "atl-ws-001.litwareinc.com"

     

    Here’s how you get the IdleThreshold value:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    Write-Host "Show me as Inactive when my computer has been idle for this" `

        " many minutes:",($key.GetValue("IdleThreshold",$null))

     

    And here's how you change that value. In this case, the script sets the idle timeout period to 10 minutes; that's done by setting IdleThreshold to 10. What if you want to set the timeout period to 30 minutes? That's fine; just set IdleThreshold to 30:

     

    $key.SetValue("IdleThreshold",30,"DWORD")

     

    Here's the script:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $key.SetValue("IdleThreshold",10,"DWORD")

     

     

     

  • Play sounds in Lync (including ringtones for incoming calls and IM alerts)

     

     

    Registry locations

    HKCU\Software\Microsoft\Communicator\PlaySoundFeedback

    Allowed registry values

    ·         0 – Lync will not play sounds when significant events occur

    ·         1 – Lync will play sounds when significant events occur

    Registry value type

    REG_DWORD

    Default setting

    1: Sounds are played in Lync when significant events occur

     

    Any time someone calls you or sends you an instant message, a "toast" pops up in the lower right-hand corner of your computer screen. (That's right: just like toast popping up from a toaster.) The Lync toast – like any good piece of toast – notifies of you of the incoming communication:

     

     

    In addition to this visual notification, Lync can optionally play a sound any time a significant event takes place. To be more specific, Lync can optionally play sounds to accompany events like these:

     

    • Busy signal
    • Call ended
    • Call error
    • Connecting tone
    • Data sharing invitation
    • Dial tone
    • Howler
    • Incoming call
    • Incoming call in full screen mode
    • Incoming instant message
    • Incoming private line call
    • Incoming Response Group call
    • Incoming team call
    • Muting message
    • New message
    • On hold
    • Outgoing call
    • Redirect call
    • Second incoming call
    • Status alert
    • Untag

     

     

    Note. How do we know those are the events that can be accompanied by sounds? That's easy: we spent literally hundreds and hundreds of hours carefully reverse-engineering Microsoft Lync. 

     

    And when that didn't work, we looked in Control Panel at the Sound dialog box:

     

     

     

    So how do you turn auditory feedback on and off in Microsoft Lync? There are two ways that we know of to do this. One way is to enable the Play sounds in Lync option in the Lync user interface:

     

     

    And the other way? By modifying the HKCU\SOFTWARE\Microsoft\Communicator\PlaySoundFeedback registry value. If this value is set to 1 then Lync will play sounds to accompany significant events. If this value is set to 0 then Lync will remain quiet (at least as far as notifications go) any time these significant events take place.

     

    It's entirely up to you.

     

    If you're interested in using Windows PowerShell (which we assume you are, seeing as how you're here at the Lync Server PowerShell blog), the following script retrieves the current value of PlaySoundFeedback on the local computer. If you'd prefer to retrieve this value from a remote computer, simply set the value of the variable $computer to the name of that remote computer. For example:

     

    $computer = "atl-ws-001.litwareinc.com"

     

    As promised, here's the script for retrieving the PlaySoundFeedback value:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $value =$key.GetValue("PlaySoundFeedback",$null)

    if ($value -eq 1) {$value = "Yes"}

    if ($value -eq 0) {$value = "No"}

    Write-Host "Play sounds in Lync (including ringtones for incoming calls" `

        " and IM alerts): $value"

     

    And here's a script for actually changing the value of PlaySoundFeedback. In this case, the script enables sound feedback; that's done by setting PlaySoundFeedback to 1. To disable sound feedback, set PlaySoundFeedback to 0, like so:

     

    $key.SetValue("PlaySoundFeedback",0,"DWORD")

     

    In other words:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $key.SetValue("PlaySoundFeedback",1,"DWORD")

     

    Now, what if you want to change the sounds used for a Lync event? Well, that can be done using the Sound dialog box from Control Panel. As near as we can tell, it can also be done by modifying values in the HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Communicator portion of the registry. For example, to change your ringtone, you can modify the Default value found in this registry key:

     

    HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Communicator\

    COMMUNICATOR_ringing\.Current

     

    We won't show you an example of using PowerShell to make this change simply because we didn't do extensive testing on this, and because we assume that this isn't the recommended way to make these changes. However, in playing around with it a little it all seemed to work. Just make sure you use a .WAV file; as far as we know, that's the only format that will work with Lync events.

     

     

     

  • Display my Out of Office Information to contacts in my Friends and Family, Workgroup, and Colleagues privacy relationships

     

     

    Registry locations

    HKCU\Software\Microsoft\Communicator\AutoRetrieveOOFSettings

    Allowed registry values

    ·         0 – Out of Office information is not displayed to contacts with the Friends and Family, Workgroup, or Colleagues access level

    ·         1 – Out of Office information is displayed to contacts with the Friends and Family, Workgroup, or Colleagues access level

    Registry value type

    REG_DWORD

    Default setting

    1: Out of Office information is displayed to the appropriate contacts

     

    If you're using Microsoft Outlook then Microsoft Lync offers you a number of additional Outlook-related options. Like what, you ask? Well, here’s one: you can have Lync display your Out of Office message to any of your contacts who have the Friends and Family, Workgroup, or Colleagues access level.

     

    And just how do you do that, you say? Well, one way is to select the Display my Out of Office information to contacts in my Friends and Family, Workgroup, and Colleagues privacy relationships checkbox within Personal tab of the Options dialog box:

     

     

    If you enable this option then your Out of Office message will be integrated into the rest of your presence information:

     

     

    Another way to configure this behavior is to modify the SOFTWARE\Microsoft\Communicator\AutoRetrieveOOFSettings registry value. When this value is set to 1 your Out of Office information will be displayed to the appropriate contacts; when this value is set to 0 then Out of Office information won’t be displayed to anyone. Period.

     

    Oh and, needless to say, this setting has no effect if Outlook has not been configured as your personal information manager.

     

    Historical note. The OOF in AutoRetrieveOOFSettings is short for "Out of Office." Why is OOF (rather than OOO) short for Out of Office? From what we’ve been told, Microsoft’s original Xenix email system included a command – oof – that marked a user as “Out of Facility.” The acronym has simply been carried through to this day, even though the word "Facility" has been replaced by the word “Office.” And why did they call it "Out of Facility" in the first place? That’s a mystery that might never be solved.

     

    But we digress. The following Windows PowerShell script retrieves the current value of AutoRetrieveOOFSettings from the local computer. If you'd prefer to retrieve this value from a remote computer, simply set the value of the variable $computer to the name of that remote computer. For example:

     

    $computer = "atl-ws-001.litwareinc.com"

     

    Here's the script for retrieving the AutoRetrieveOOFSettings value:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $value =$key.GetValue("AutoRetriveOOFSettings",$null)

    if ($value -eq 1) {$value = "Yes"}

    if ($value -eq 0) {$value = "No"}

    Write-Host "Display my Out of Office information to contacts in my Friends" `

        "and Family, Workgroup, and Colleagues privacy relationships: $value"

     

    And here's a script that sets the value of AutoRetrieveOOFSettings. In this case, the script enables showing your Out of Office message to the appropriate contacts; that's done by setting AutoRetrieveOOFSettings to 1. To disable the display of your OOF message, set AutoRetrieveOOFSettings to 0:

     

    $key.SetValue("AutoRetrieveOOFSettings",0,"DWORD")

     

    Here's how the whole thing looks:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $key.SetValue("AutoRetrieveOOFSettings",1,"DWORD")

     

    By the way, there's also a client policy property – the less than aptly-named DisablePresenceNote property – that can be used to manage the Out-of-Office setting. If you set DisablePresenceNote to anything other than a null value (that is, if you set it either to True or to False) then the Display my Out of Office information to contacts in my Friends and Family, Workgroup, and Colleagues privacy relationships setting will be disabled and users will not be able to enable it, regardless of how AutoRetrieveOOFSettings has been set in the registry:

     

     

    Just something to keep in mind.

     

  • Keep sounds to a minimum when my status is Do Not Disturb

     

     

    Registry locations

    HKCU\Software\Microsoft\Communicator\suspendSoundWhenDND

    Allowed registry values

    ·         0 – Lync will not suppress sounds when your status is set to Do Not Disturb

    ·         1 – Lync will suppress sounds when your status is set to Do Not Disturb

    Registry value type

    REG_DWORD

    Default setting

    0: Sounds are not muted when your status  is set to Do Not Disturb

     

    Sometimes silence is golden. Like when? Like, say, when your status has been set to Do Not Disturb, a status you probably set because, well, because you don’t want to be disturbed. With that in mind you might want to configure Lync so that no sounds are played while your status is set to Do Not Disturb; that way you won’t hear a beep or a boop every time something happens on the order of, say, one of your tagged contacts logging on or off.

     

    One way to configure the Do Not Disturb setting is from within the Options dialog box; all you have to do is select (or deselect) the Keep sounds to a minimum when my status is Do Not Disturb checkbox:

     

     

    You can also configure the Do Not Disturb setting by modifying the HKCU\SOFTWARE\Microsoft\Communicator\suspendSoundWhenDND registry value. Set this value to 1 to ensure that no sounds are played when your status is set to Do Not Disturb; set this value to 0 if it’s OK for Lync to play sounds while your status is set to Do Not Disturb.

     

     

     

    Before we show you how to change that setting, let's show you how to retrieve the current value of suspendSoundWhenDND from the local computer. You say you'd rather retrieve this value from a remote computer? That's fine; just set the value of the variable $computer to the name of that remote computer. For example:

     

    $computer = "atl-ws-001.litwareinc.com"

     

    Here's how you get the current value:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $value =$key.GetValue("suspendSoundWhenDND",$null)

    if ($value -eq 1) {$value = "Yes"}

    if ($value -eq 0) {$value = "No"}

    Write-Host "Keep sounds to a minimum when my status is Do Not Disturb: $value"

     

    And now, at long last, here's a script that sets the value of suspendSoundWhenDND. In this example, the script suppresses the playing of sounds when your status is set to Do Not Disturb; that's done by setting suspendSoundWhenDND to 1. If you'd prefer to hear sounds even when your status is set to Do Not Disturb, well, hey, who are we to judge? In that case, just set suspendSoundWhenDND to 0:

     

    $key.SetValue("suspendSoundWhenDND",0,"DWORD")

     

    Like we were saying:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $key.SetValue("suspendSoundWhenDND",1,"DWORD")

     

     

  • Hide the Notification Balloon

     

     

    Registry locations

    HKCU\Software\Microsoft\Communicator\DSBkgndMode

    Allowed registry values

    ·         00 00 00 00 – A balloon alert will be displayed each time you close the main Lync window

    ·         01 00 00 00 – A balloon alert will not be displayed each time you close the main Lync window

    Registry value type

    REG_BINARY

    Default setting

    Not present (the notification balloon is shown)

     

    As you probably know, simply closing the Microsoft Lync window does not terminate the application; instead, Lync minimizes itself and continues to run as it awaits further instructions. To help lessen confusion about whether it's still running or not, Lync displays a balloon alert like this one each time it recedes into the Notification area or task bar:

     

     

    As we noted, this balloon alert appears each time you close the main Lync window.

     

    Unless, of course, you’d prefer that this alert doesn’t appear each time you close the main Lync window. How do you do that? Well, as you can see, one way is to click on the alert itself; that will suppress its display in the future, and the balloon will be gone forever.

     

    But you’re right: forever is a long time, isn’t it? So what happens if you miss that balloon, what happens if you'd like to see it again? As near as we can tell, you have two choices:

     

    • Build a time machine, then use that machine to go back in time and prevent yourself from clicking the alert.
    • Modify the HKCU\SOFTWARE\Microsoft\Communicator\DSBkgndMode registry value.

     

    Admittedly, building a time machine is slightly outside the scope of this article; therefore, we’ll focus our attention on modifying the DSBkgndMode registry value. If you set this value to 00 00 00 00 then the balloon alert will appear each time you close the main Lync window; if you set this value to 01 00 00 00 the balloon alert will not appear. Short of building a time machine, this is the only way we know of to toggle the appearance of the balloon alert. Clicking the alert will cause it to disappear, but we don’t know of any option in Lync’s user interface that will allow you to restore the alert.

     

    Note. Why not? Good question: we have no idea.

     

     

    On the other hand, who needs another option as long as you can use Windows PowerShell to modify the registry? The following PowerShell script retrieves the current value of the DSBkgndMode registry value on the local computer. If you'd like to retrieve this value from a remote computer, just set the value of the variable $computer to the name of that remote computer. For example:

     

    $computer = "atl-ws-001.litwareinc.com"

     

    And here's how you actually retrieve that value:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $value =$key.GetValue("DSBkgndMode",$null)

    if ($value -eq 1) {$value = "Yes"}

    if ($value -eq 0) {$value = "No"}

    Write-Host "Hide notification balloon: $value"

     

    Having done that, the next logical step would be to find a way to change the value of DSBkgndMode. In a minute, we'll show you a script that suppresses the appearance of the notification balloon; that's done by setting DSBkgndMode to 1,0,0,0. To get the balloon back, set DSBkgndMode to 0,0,0,0:

     

    $key.SetValue("DsBkgndMode",[byte[]]@(0,0,0,0),"Binary")

     

    And, as promised, here's how you suppress the notification balloon:

     

    $computer = "."

     

    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("CurrentUser", $computer)

    $key = $registry.OpenSubKey("SOFTWARE\Microsoft\Communicator", $True)

     

    $key.SetValue("DSBkgndMode",[byte[]]@(1,0,0,0),"Binary")