We tried to forward to a specific extension say 1001 (English) and 1002 (French), then forward to extension 1234 hoping that the Caller ID will show either 1001 or 1002 but it still show the actual caller number.
I dont know if I have understood correctly your requirement, but it seems you have multilingual service, and you want the sip peer user associated to extension 1234, can be able to difference if he was reached by pressing 1 or 2, so if this is the case I said that what you can do is add prefix to the caller caller id before dial to the destination party
Whoever (could be any phone number, inbound call) call in to the customer service number will be greeted with the IVR.
They either choose 1 for English and 2 for French.
Then the call will be forwarded to customer service officer who is bilingual. They want to greet the caller with the IVR option the caller has selected.
So again before forward the call to customer service officer Use the CALLERID() function to alter the caller id of the caller and prepend a prefix who present french caller and other who represent english caller, For this eaction you dont need know the caller caller id you are just adding a prefix to the caller id you receive based on the caller selection