That may be a question more for Twilio or Vonage. I'm sure you can send a call to them over the pstn to start self service but not sure how they would send it back to you to send to an agent and keep the CTI info while in IVR. One possibility is to ask them if they have written to the Cisco GED 125 IVR interface specification, which would allow the 3rd party IVR to participate as a routing client on your ICM. There may also be webservices or SIP header/messaging that would allow it, but would need both parties to craft a solution.
You can deliver the call to CVP Standalone and use a VoiceXML bridged transfer to the external platform. When the far-end disconnects you can deliver the call to the CCE CVP Call Server from your Studio app, optionally first using the ICM request label node. That still leaves you with the problem of data join and passing context back from the external IVR for which there is no signalling based solution and you would have to resort to back end data approaches.
The only way you can do it out the box with SIP headers is sending the call from CVP Call Server and tromboning it back through the external platform so it arrives back at CVP as another new call.
Apart from that you'd have to resort to custom transfer solutions using CUBE but it starts to get messy.
We were using the solution where selfServie IVR is of WVR and for agent transfer using Cisco UCCE. At the time of agent transfer we are doing route request(ICM lookup) by using Cisco GED 125 interface and in return we receiving Cisco Label(Translation Route) and transferring call to agent.