I believe that changeset 13439 had unforeseen and undesired consequences. From what I understand, the idea was to include the announcement when an invalid or timeout condition occurred.
What has happened on our system is that first announcement is retained and overrides any subsequent announcements in any other ivr's called by the original.
This is very serious!
I have tracked it down to the changes made in:
modules/branches/2.10/ivr/functions.inc.php
The code in lines 85 through 88 should be after what is on line 89, ie
86 $ivr_announcement = recordings_get_file($ivrannouncement?);
87 $ext->add($c, 's', , new ext_set('IVR_MSG', $ivr_announcement));
88
89 $ext->add($c, 's', 'start', new ext_digittimeout(3));
Should be
86 $ext->add($c, 's', 'start', new ext_digittimeout(3));
87
88 $ivr_announcement = recordings_get_file($ivrannouncement?);
89 $ext->add($c, 's', , new ext_set('IVR_MSG', $ivr_announcement));
Otherwise, if the call has been answered already, the IVR message stays the same!
I have applied these changes to our system and regenerated the IVR's, and they work correctly now.