Here at Mayflower, we're using two Innovaphone IP800 gateways at each of our departments (Munich and Würzburg). They are connected to each other and replicate their data. Besides that, the Gateways do use LDAP for saving the contact data and provide a SOAP interface for connecting to the PBX.
In a crazy moment in my sparse free time, I had a look at Gregor's PhoneMonitor application he's written in C# and decided to write a PHP5 based approach to connect to the PBX and handle calls. The result is a SOAP client library that is able to connect to a PBX, poll for events, register users and create calls between two endpoints.
He doesn't offer the code up for download yet, so don't get too excited. He does hint, though, at some future functionality he might be adding other features as well.