Internal sip trunk between servers issue


we have pbx servers connected to 1 server for all incoming calls- all connected via sip trunks.
now all internal calls work -but when somone try to do chan spy throw FOP service
the call gets decline and they cant spy.

now again - internal calls work only spy doest.

18.458576 -> SIP/SDP 910 Request: INVITE sip:[email protected] | , with session description
18.462837 -> SIP 570 Status: 100 Trying |
18.470210 -> SIP 547 Status: 603 Declined |
18.470703 -> SIP 426 Request: ACK sip:[email protected] |

and this in the log of the extention trying to make the spy :
[2017-04-23 16:13:01] WARNING[41521][C-00000005] chan_sip.c: username mismatch, have <5054>, digest has
[2017-04-23 16:13:01] NOTICE[41521][C-00000005] chan_sip.c: Failed to authenticate device sip:[email protected];tag=as68105c1c

what i know is:
Server A
Server B
Internal GW

if A wants to listen to B throw FOP its making B execute internal call throw Internal GW but
then it gets messed up as its trying to get in A server with the A server extention as user name but Internal GW ip.

what solved this is a dial plan :

exten => _x.,1,ExecIf($["${CALLERID(dnid)}"=="${CALLERID(num)}"]?Set(CALLERID(num)=))

but i wish i knew another way to fix it from the sip trunk itself

which was set wiith no pass and username