Как известно, в телефонии существует два основных вида перевода (или трансфера - transfer) входящих звонков, это: Attendant Transfer/ consultative transfer - Перевод звонка, при котором оператор, получив информацию от звонящего, ставит звонок на удержание, затем инициирует второй вызов третьей стороне (абоненту, с которым хочет соединиться звонящий), уведомляет о входящем вызове и лишь после разрешения третьей стороны, соединяет с вызывающим абонентом. После этого, оператор кладет трубку и больше никак не влияет на переведенный вызов. Таким образом, оператор остается уверенным в том, что звонящий соединен с нужным абонентом. В случае, если у оператора не получается дозвониться до вызываемого абонента или он сообщает, что не может в данный момент принять звонок, оператор снимает звонящего с удержания и просит его перезвонить позднее. Blind Transfer - Даже из названия становится понятно, что данный вид перевода является “слепым”, т.е оператор переводит звонок, не уведомляя третью сторону в входящем вызове. Не трудно догадаться, что если вызываемый абонент занят или не отвечает, то вызов попросту обрывается.
Проблема с потерянными вызовами после “слепого” перевода имела место быть вплоть до Asterisk версии 1.6, когда в файл feature.conf в Attended Transfer (atxfer) был введен дополнительный функционал atxferdropcall , со значениями yes и no atxferdropcall = yes - Звонок не будет возобновлен после неудачного перевода atxferdropcall = no – Звонок будет возобновлен после неудачного перевода По умолчанию в Asterisk данная переменная имеет значение yes.
Таким образом, чтобы решить проблемы с потерянными вызовами при переводе, нужно просто изменить файл feature.conf следующим образом:
[general] parkext => *700 parkpos => 701-720 context => parkedcalls parkedcalltransfers = caller transferdigittimeout => 1 xfersound = beep xferfailsound = beeperr atxfernoanswertimeout = 15 atxferdropcall = no atxferloopdelay = 10 atxfercallbackretries = 2 [featuremap] blindxfer => * atxfer => #
Где, atxfernoanswertimeout - Время, которое необходимо для дозвона обратно; atxfercallbackretries - Количество попыток повторного дозвона