В общем, разобрался. Привёл к такому виду:
[dial_create_chan]
exten => s,1,Gosub(lua_${ISTRANSFER}dial_create_chan,${EXTEN},1)
same => n,NoOp( peername : ${FROM_PEER}
same => n,NoOp(LEN: ${LEN(${FROM_PEER})})
same => n,NoOp(channeltype: ${CHANNEL(channeltype)})
same => n,ExecIf($[ ${LEN(${FROM_PEER})} != 3 && "${CHANNEL(channeltype)}" == "PJSIP" ]?Set(PJSIP_HEADER(add,X-Header)=XXXXXXX))
same => n,Set(pt1c_is_dst=1)
same => n,ExecIf($["${PT1C_SIP_HEADER}x" != "x"]?Set(PJSIP_HEADER(add,${CUT(PT1C_SIP_HEADER,:,1)})=${CUT(PT1C_SIP_HEADER,:,2)}))
same => n,Set(__PT1C_SIP_HEADER=${UNDEFINED})
same => n,Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1)
same => n,return
Всё заработало как надо. Однако есть вопрос. Можно как-то не заменять файл полностью а добавить это в конец? Суть в том, что бы при изменении в учётках каждый раз не обновлять файл вручную.