Ran into an interesting issue with setting up MoH with a customer. We ran the following command to enable MoH:
Set-CsClientPolicy -Identity Global -EnableClientMusicOnHold $True
We didn't specify the MoH audio file because we were just going to use the default file for testing. After signing out and back into the client to get the new client policy pushed, we tried placing a call on hold and there wasn't any hold music played...just beeps. After digging into it a bit we finally figured out that even though the client showed that MoH was enabled:
In the registry, those settings weren't actually written in the user's registry hive. Looking in HKU\S-1-5-21-...\Software\Microsoft\Communicator this is what was shown for a new client that was enabled for MoH:
The following registry keys are missing:
You can fix this one of two ways. If you want to specify a MoH file, you can do that in Set-CsClientPolicy. I assume that most companies will go this route, as you more than likely want control over what music is played to your customers! The other way is to have the user go into Tools > Options > Ringtones and Sounds and then click OK. This will write the MoH registry keys into the user's registry hive and then when they place a user on hold, the MoH music will be played.