Selecting Voicemail Greeting Holiday

I cannot get the selected voicemail to populate when creating holidays. I have the holidays configured in a template, with audio selected. I can create and apply settings such as disabling greeting, but when it comes to setting the audio for the VM the audio never gets selected. I pass the audio ID and name directly from the pre-configured template.

The audio being used has been tested in the personal asset space as well as the public asset space, neither location seems to make a difference.

What am I missing?

Hi @jniehoff , are you doing this via API or the platform UI? Please clarify and share API request process if you are. Thanks!

This is being modified by API.

It is using the PATCh phone/extension/{extensionId}/call_handling/settings/{settingType} where extensionid is the for the auto receptionist, and setting type is holidayhours.

I am passing what appears to be a valid JSON object with the voicemail greeting id and name. The object includes disabling the answering greeting, but that is the only thing to change. Let me get back with the exact object details

1 Like

Hi @jniehoff looking forward to the object! Just a note, this endpoint seems to take one of the respective objects per request: Zoom Phone API

To clarify - I am sending a single object data per PATCH request. I.E. each holiday to be updated is sent as it’s own object. The exact command is: Invoke-RestMethod -Method PATCH -Uri “https://api.zoom.us/v2/phone/extension/$extension/call_handling/settings/holiday_hours” -Headers $headers -Body $holidayUpdateFinal

Below are two examples of the $holidayUpdateFinal object I have been sending, both of which are being accepted as valid and both disable the greeting prompt but nothing else.

{
“settings”: {
“greeting_prompt_id”: 0,
“allow_callers_check_voicemail”: true,
“voicemail_greeting_id”: “4S-vqYdSQcCFORarZ3pT8A”,
“play_callee_voicemail_greeting”: true,
“holiday_id”: “obKtWjZTSCmipYdZ9GQ6WA”
},
“sub_setting_type”: “call_handling”
}

{
“settings”: {
“greeting_prompt_id”: 0,
“voicemail_greeting”: {
“id”: “4S-vqYdSQcCFORarZ3pT8A”,
“name”: “Mercer Holiday Greeting.mp3”
},
“holiday_id”: “obKtWjZTSCmipYdZ9GQ6WA”
},
“sub_setting_type”: “call_handling”
}

FWIW I also cannot modify the actual call handling settings, I.E. setting where it routes, either - though it does look like the object updates in the API but it doesn’t reflect back in the GUI.

I’m struggling with the exact same thing. The developers DEFINITELY need to “fix” the documentation or at least provide an example, because the docuemented routes don’t seem to be working.

Another user raised the identical issue here: Need to change the voicemail greeting for a group of holidays

I think it could be the API itself is broken. If you look at the documentation and try to do the GET on these setting, voicemail_greeting is not even returned on call queues despite the documentation ( Zoom Phone API) suggesting it should be. They stopped responding to my post about it so I’m at a loss: Phone API Call Handling Settings Isn’t Returning Call Queue Voicemail Info - Phone - Zoom Developer Forum

If you or anyone is still having trouble getting the actual update of holiday routing, the documentation is HORRIBLE, but the below seems to work consistently (except for the setting of the greeting).

{
        "sub_setting_type": "call_handling",
        "settings": {
            "holiday_id": "yourHolidaysId",
            "call_not_answer_action": 1,
            "connect_to_operator": false,
            "forward_to_extension_id": "yourExtensionId",
            "voicemail_greeting_id": "yourVoicemailGreetingId"
        }
}

@gianni.zoom @elisa.zoom are either of y’all actually able to update a call queue’s greeting with patch? (this api: Update a call handling setting)

Thanks for the help here - this is exactly what I ended up using.

If you modify your object with like below, it should consistently update the greeting. I used “greeting_prompt_id”:0 but any ID should update it.

{
        "sub_setting_type": "call_handling",
        "settings": {
            "greeting_prompt_id": "yourGreetingPromptId",
            "holiday_id": "yourHolidaysId",
            "call_not_answer_action": 1,
            "connect_to_operator": false,
            "forward_to_extension_id": "yourExtensionId",
            "voicemail_greeting_id": "yourVoicemailGreetingId"
        }
}
1 Like

Looks just like what I tried and wasn’t able to get working (didn’t have time to try again but just looked at the code I had saved from last time). Hope they got it working!

Just curious (based on another post on here), did you get it working with a
“personal” greeting or in the Assets Library"? (It seems the “Asset Library” ones can’t be listed via the API, and I’m wondering if that limitation is impacting this too… (causing them not to “stick”)

Zoom Team definitely needs to give some more explanation and sample code on these… it was wayyy too confusing to figure out for vs. what it needed to be!

I pulled the audio from both personal and the Assets Library. I did have to assign the audio to something I could get the information from (assigned to greeting prompt in the GUI and then pulled it in the API).

Below is the object that I used, and continue to use, to mass update holiday hours. You don’t need the allow_callers_check_voicemail or the play_callee_voicemal_greeting, but I included it to ensure consistency across holidays.

NOTE: Even if you are routing to the same extension’s voicemail, you have to include the forward_to_extension_id - it will fail without this. They finally added the error when I kept running into a hiccup.

$holidayUpdate = [PSCustomObject]@{
                    settings = @{
                        allow_callers_check_voicemail = $true
                        play_callee_voicemail_greeting = $true
                        greeting_prompt_id = 0
                        holiday_id = $holidayId
                        voicemail_greeting_id = $voicemailGreetingId
                        forward_to_extension_id = $forwardToExtId
                        call_not_answer_action = 1
                        }
                    sub_setting_type = "call_handling"
                }

While that is the holiday hours call_handling object, this one is the one I used for business hours and closed hours routing. Again for closed hours I didn’t add a prompt since it goes straight through to the voicemail recording.

Notes: Business hours overflow and closed hours settings on Call Queues cannot be fully modified right now. Supposedly this will change in the upcoming release. with the ability to modify voicemail_greeting_id on the Call Queues

$businessHoursUpdate = [PSCustomObject]@{
        settings         = @{
            greeting_prompt_id = $businessHoursId #Pulled from a template
        }
        sub_setting_type = "call_handling"
    }

    $closedHoursUpdate = [PSCustomObject]@{
        settings         = @{
            greeting_prompt_id             = 0 
            voicemail_greeting_id          = $closedHoursId
            play_callee_voicemail_greeting = $true
            allow_callers_check_voicemail  = $true
            call_not_answer_action         = 1
            forward_to_extension_id        = $forward_to_extension_id
        }
        sub_setting_type = "call_handling"
    }