Same extension but 2 different outbound CID for 2 trunks

This is called “multi-tenant” operation, and FreePBX doesn’t do it very well.

There are options in the Outbound Route that allow you to process a call (including the Caller ID) on a “per extension” basis. You can do a lot with that.

If you want “per extension” caller IDs, there’s no way short of custom code to do that. This custom code will probably be applied through a database lookup/edit of the CID in one of the custom hooks that are available.

Do you mean two instruments, or two extensions per instrument. If the former, I can see that, but it’s not required. If you mean the latter, you can program two buttons on your instrument-per-desk to act as different extensions.

There is no way for the system to know “magically” what caller ID you are going to want, or what extension you are calling from. You have to do something to give the system a way to figure that out.