Как известно, в Asterisk существует 2 вида перевода: слепой и с подтверждением. В случае слепого перевода  оператор переводит звонок, не уведомляя третью сторону в входящем вызове. При этом, в случае не ответа,  возможна потеря звонка. 

Перевод звонка, при котором оператор, получив информацию от звонящего, ставит звонок на удержание, затем инициирует второй вызов третьей стороне, уведомляет о входящем вызове и лишь после разрешения третьей стороны, соединяет с вызывающим абонентом. После этого, оператор кладет трубку и абонент соединяется с третьей стороной. В случае, если у оператора не получается дозвониться до вызываемого абонента или он сообщает, что не может в данный момент принять звонок, оператор снимает звонящего с удержания и просит его перезвонить позднее.

Приведенная ниже настройка позволит комбинировать приведенные выше виды трансферов и реализовать обратный звонок в случае отсутствия ответа от третьей стороны. Будет использоваться перевод с подтверждением, однако оператор сразу после инициирования перевода кладет трубку, тем самым перенаправляя абонента к третьей стороне. В случае отсутствия ответа, абонент будет перенаправлен снова к оператору.

В features_general_custom.conf добавляем следующее:

parkext => *700
parkpos => 701-720
context => parkedcalls
parkedcalltransfers = caller
transferdigittimeout => 3
xfersound = beep
xferfailsound = beeperr
atxfernoanswertimeout = 30
atxferdropcall = no
atxferloopdelay = 10
atxfercallbackretries = 2

atxferdropcall = no — автовозврат звонка после неудачного перевода;

atxfernoanswertimeout — позволяет увеличить время ожидания возврата к оператору при переводе с уведомлением;

atxfercallbackretries — позволяет указать количество попыток повторного дозвона;

atxferloopdelay — время в секундах между повторными попытками перевода;

transferdigittimeout — максимальное время в секундах между вводом цифр, при переводе вызова.

Возврат звонка при переводе с подтверждением