Я заметил через логи Asterisk что CALLERID(num) в "[sipgate-create-chan]" изменяется из номера внешнего на номер внутренний. Проблему удалось решить через передачу переменной из одного контекста в другой. Сейчас всё работает как надо. Спасибо за помощь.
[SIP-1234567-outgoing-custom]
exten => _X!,1,Ringing()
same => n,Gosub(${ISTRANSFER}dial,${EXTEN},1)
same => n,Set(__publictel=${CALLERID(num)})
same => n,Dial(PJSIP/${number}@SIP-1234567,600,${DOPTIONS}TKU(dial_answer)b(sipgate-create-chan,s,1))
same => n,ExecIf($["${ISTRANSFER}x" != "x"]?Gosub(${ISTRANSFER}dial_hangup,${EXTEN},1))
same => n,Set(pt1c_UNIQUEID=${EMPTY_VALUE})
same => n,ExecIf($["${BLINDTRANSFER}x" != "x"]?AGI(check_redirect.php,${BLINDTRANSFER}))
same => n,Hangup()
[sipgate-create-chan]
exten => s,1,Noop()
exten => s,n,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:${publictel}@pconnect.sipgate.de>)
exten => s,n,Return