I am using provider A for incoming DID and provider B for outgoing calls. How can the Caller-ID be shown?
That depends entirely on how provider B (trunk) handles Caller-ID. Some trunk providers suppress the display of Caller-ID, some of them display a Caller-ID of their own choosing, and some of them allow you to set your own. If your provider falls in the 3rd category, then you can set your Caller-ID in two places. In every extension at the “Outbound CID” field, on in the trunk at the “Outbound Caller ID” field. Some provider for example voicetrading allow you to set the caller ID. If you have setup say trunk A for incoming and use provider B to reroute the call and you would like the original caller id to be displyed at do the following. Create a outgoing call trunk for the provider. Leave the username field empty and in the password field fill in the password:username don’t forget the : in the middle. Using calltrading the original caller id is forwared this way. It might also work using other provider.