Логов нет, дебага нет... В примере у вас есть при хэнгапе ссылка на субрутину autocallbacktest, а что в неё - знает только ветер. Проникнуть в ваше мышление частично получается, а в диал-план, который вы не привели тут - нет.
1. Посмотрите инвайт и ответ на него в ситуации, когда человек сбросил звонок. Выведите состояние переменной $DIALSTATUS
при таком звонке. Чему он равен?
3. Посмотрите лог исполнения диал-плана в консоли, что происходит в ситуации, когда человек сбросил звонок? Какая часть отрабатывает? Заведите такой ExecIf как у вас в примере но с другим статусом из п.1 (выше) и вставьте в нужное место обработки диал-плана.
4. Параметр MaxRetry=19 выполняется 19 раз только если звонок не прошёл.
Number of retries before failing, not including the initial attempt.
А если человек отклонил его - он считается выполненным, и call file удаляется.
Это точно вы писали пример? Или скопипастили просто из сети? Или "мопед не мой, я только объяву разместил"?