Can any of the popular IM networks work like this?
Solution 1:
Yes, but not with public instant messengers.
Microsoft Communication Server can do this, so everyone locally can talk, but also integrate with third party IM providers such as AIM, MSN and Yahoo. (But it isn't cheap, or very easy to use in small environments. If you have thousands of users, it works VERY well!)
After this, you may want to take a look at a XMPP servers that you can run locally, however integration to third party products really depends on both the client and server you use.
I personally recommend you run a XMPP server on the server, and use a client such as Pidgin that will allow Joe, Jack and Jill to communicate locally, but also use whatever other networks they like. This will mean that they can talk on all networks and still communicate when the internet goes down.
(FYI, Jabberd is the one I used to use, however it has been years since I have done this and have no idea if anything better now exists)
Solution 2:
As Iain, answered you can install an XMPP (also known as Jabber) server at your local network and have your workers use that server. There are many server implementations out there, both proprietary and open source.
Then you may have your XMPP server communicate with other XMPP servers (gmail.com, jabber.org, someothercompany.com) so that [email protected] will be able to talk to [email protected] or [email protected] without them needing to subscribe to the sabe IM service.
Solution 3:
Install a corporate XMPP (Jabber) server.
Solution 4:
Well, I'm probably also going to say jabber/XMPP- Run a server within your office lan, and turn on federation. I'm going to go a step further and suggest setting up gateways as well - so that your users can connect to MSN, yahoo and others - which should probably cover most of your bases
in 2018 - I'm using matrix to do this - it supports multiple home servers so you'd simply be running a seperate homeserver inside and outside the network, and rooms "parented" to a server that's down still work via the other home servers. In this case running internal and external home servers that can find each other would work perfectly well - run the internal home server inside your lan, with the appropriate ports opened up, and you're good.