Here's what I use to change/add the Diversion header if your SIP Provider accept Diversion as a valid field. You could probably just change the word diversion to contact below but I have not tested that scenario because our SIP Provider uses diversion for call accounting and not contact.
hmr policy TRUNK
rule-set DiversionChange 1
hmr rule-set DiversionChange
message-rule CHANGE_Diversion message-type any 1
match header diversion
modify header diversion position first-match new-value /sip:@sip.provider.com/ 2