Yes, it actually would happen with other systems.
Ringing a SIP phone system and ringing an analog phone system are two very different things, but with analog phone lines, the deilvery of caller ID data remains the same.
When an analog key system that can use caller ID gets an incoming call, the ringer voltage is detected by the key system, which signals the system to ring it’s phones. After the first ring, the caller ID data is received, and sent to all of the phones, followed by the second and subsequent rings. Everything happens pretty much at the same time it happens from the PSTN. A person who’s answering a phone has the option to answer right away, or wait for two rings to see the caller ID data.
However, even with an IVR (not an analog phone) as the destination, you would STILL have to wait at least two rings. If the IVR answered on the first ring, the caller ID would not be delivered. If you want the IVR application to have caller ID information you HAVE to wait two rings for it to be delivered. This also happens with your SIP system. It’s not different at all.
When delivering calls to phones with a SIP phone system, you can’t start the ringing right away. The message sent to a SIP phone does everything (delivers the caller ID, starts the phone ringing) and is sent and received just once. You can’t send a message to start the ring, then send a message to deliver the caller ID, then another message to keep it ringing. The SIP phone would see that as three incoming calls.
So, you have to wait for the caller ID delivery from the PSTN to happen before you have all the information you need to form the SIP message you send to the SIP phone, or use in your IVR application.
As I mentioned, the fix for this is an ISDN line. Like a SIP message, an incoming ISDN call setup message delivers the caller ID and an instruction to start ringing all at once. The Asterisk system can then begin offering it’s services right away.