This is actually pretty simple. You do not need to configure CUBE or the SIP UA for this as it can be done just with a few dial peers.
The incoming VoIP dial peer would look like this:
dial-peer voice 2 voip
description INCOMING VoIP
voice-class codec 1
session protocol sipv2
session transport tcp
incoming called-number .
dtmf-relay rtp-nte
no vad
The VoIP dial peer to Exchange would look similar to this:
dial-peer voice 10 voip
description OUTGOING to Exchange
destination-pattern
monitor probe icmp-ping <-- Optional; takes the dial-peer down if Exchange stops responding.
voice-class codec 1
session protocol sipv2
session target ipv4:
session transport tcp
dtmf-relay rtp-nte
no vad
And of course you would need the dial-peer appropriate for the POTS side. IOS interops between SIP and ISDN quite well.
The only thing I have not tested is how ISDN RDNIS would map to the Diversion header on SIP.