The Context for a trunk is used only on incoming calls, so your code didn’t get executed.
You could set a Context for the FXO (or just use a Set CallerID object), but that would also change the number displayed on your internal devices to international format, which you may not want. In which case use a hook on the outbound trunk.
VoIP.ms rate to +447889 (which they claim is UK O2 mobile) is $0.1806 (Value) and $0.5892 (Premium). Do you know that Value will pass caller ID reliably? The Premium rate seems exhorbitant.
Can you just ring a SIP app on your mobile instead? That would be free (though you may have to pay once for the app) and you could send any caller ID you like.
Or, Voxbeam’s Platinum rate to +447889 (which they claim is Telefonica) is a very reasonable $0.0101.
And, if your number was ported (I can’t tell because it’s redacted), it could be with a different operator.
Edit: sorry, I didn’t realize that O2 is just a brand name of Telefonica, so the rate cards are consistent.