You are conflating two things here. The ability to have multiple contacts and the requirements of Ray Baum’s. Additionally, your ask it about your specific setup in general which isn’t how everyone else is going to be.
First, generally when you have three users sharing extension 100 they all don’t have individual Outbound CallerIDs because they are all sharing extension 100. So a lot of scenarios won’t require multiple outbound callerIDs equal to the amount of contacts registered to the AoR.
Second, Ray Baum’s is about the location of the actual endpoint and not what extension is registered to. I could have three people sharing 100 all on the same floor, area or space and thus I only need to present the 911 location based on (in your case) a single DID. They can all share the same emergency callerID. If you hotdesk to another extension, again the Ray Baum’s is about the location of the device so the location hasn’t changed. Does the other extension have the same Emergency 911 or different?
Third, the idea that you can use the IPs for each contact because they’ll be on different subnets or public IPs is not going to go far either when every device is on the same subnet. There could be 3 contacts registered to 100 but in physically different parts of the building all requiring their own location entry. They’ll have different IPs (as long as these are phones and not FXS gateways because then they could all have the same IP of the gateway).
The real solution is that the devices need to support something that will identify them for this. Unfortunately it’s not something they do right now and even if some start to support it…we all know people have 10 year old phones that wouldn’t. Luckily though there is one field all these devices would have in common, even on a FXS gateway, for each account…the From Name. Here is how I have solved this:
I use the From Name setting on the devices and I give it an unique name. So 100-1, 100-2, 100-3 or whatever works for you. I make sure all the extensions trust the inbound callerid which means it accepts whatever is presented instead of using the callerid=
in the endpoint config. I then do a lookup in AstDB for that From Name in custom family tree I made and it gets that devices details. I use Dynamic Location Routing which is a lot more flexible than the DID method. So basically I have something like this in AstDB:
DLR/DEVICE/100-1/emergency_cid
and DLR/DEVICE/100-1/location_id
so when a 911 call comes in I just do a look up for the From Name and get those two fields. The CallerID is updated with the emergency_cid (which is actually a 32 character string) and I add a GeoLocation SIP header that using the location_id.
So again, a proper solution for this will require the devices to support it. Or support adding customer headers or sending a MAC during an INVITE that you might be able to use. However, making a solution revolving around IPs or even callid’s (which change on a regular basis) is not the best option and will require more hackery than really needed. Not saying my solution is a bit hackey but I’m using a standard SIP header field that devices all use.