You can create a session mapping before placing the call to script 3, then in script 2, under the successful branch of the place call, use the Set Enterprise Call Info step to pass the mapping ID to script 3 as an ECC variable (second tab). Should be something like "user.mappingID", but really, you can name it whatever you want. Then in script 3, use the Get Enterprise Call Info step to read that mapping ID out, and use the Get Session step to retrieve the original Session object.
The Mapping ID can be anything, to include the Session ID itself, or a time stamp like this:
"" + (new Date()).getTime()
It just needs to be unique so no two calls end up with the same mapping ID.
The reason this works is because the Contact resulting from the Place Call step is the same Contact as the Triggering Contact in script 3, and thus they share the Contact's ECC variables.
As I write this, I am wondering if you could just pass the Session variable from Script 2 to Script 3 in the Enterprise Info steps, but I think they only accept Strings. I don't know. I'd have to test that later, but my gut tells me they do not. If they did, then just skip the mapping part, and pass the Session variable itself.