Столкнулся с проблемой передачи  номера клиента  при переводах Attended Transfer. Схема входящего звонка
А(клиент)  —-> Б(оператор-1) —>  переводит *2 ——-> В(оператор-2)

При таком переводе оператор-2 видит, что ему звонит оператор-1(номер Б). Эту проблему можно решить, установив номер клиента в хидерах PAI/RPID в INVITE  на оператор-2. Это работает, если на телефоне оператора-2, установить брать номер из полей P-Asserted-Identity/Remote-Party-ID. Но в моей схеме оператор-2 находится на удаленной АТС, которая берет номер звонящего только из From. 

По документации для обхода этой проблемы нужно в Dial передать опцию o

  • o: Восстановить алгоритм работы с CallerId, как в версии v1.0, для Asterisk v1.2.

Но у меня установка такой опции не работала. Проверялось на Астериск-16

Путем тестов подобрал рабочий dialplan, в котором передается номер клиента в поле From

[from-pstn]
exten => _X.,,1,NoOP(-->call from ${CALLERID(number)} to ${EXTEN}<--)
same => n,Set(__TRANSFER_CONTEXT=transferContext)
same => n,Set(__client_aon=${CALLERID(number)})
same => n,Dial(SIP/101&SIP/102&SIP/103,60,Tt)
same => n,Hangup()

[transferContext]
exten => _X.,1,NoOP(${CALLERID(number)} to ${EXTEN})
same => n,Dial(SIP/${EXTEN},180,tTB(changeTransferAON,s,1)o())
same => n,Hangup()

[changeTransferAON]
exten => s,1,NoOP()
same => n,Set(CALLERID(number)=${client_aon})
same => n,Set(CALLERID(name)=${client_aon})
same => n,Return()

from-pstn – контекст приема входящих звонков. Вызываются три оператора 101,102,103.

transferContext – контекст перевода, в котором перед отправкой INVITE для канала оператора-2 устанавливается номер клиента.