Как известно, в 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 — максимальное время в секундах между вводом цифр, при переводе вызова.