Hi everybody,
Say you want a user's id to be alphanumeric (like an email username), such as johnsmith@pbx.example.com. These users have alphanumeric usernames in their sip phone config, but you want to map them from their sip username to a numeric extension, and vice versa.
As of version 1.0.4, Freeswitch makes this trivial to accomplish. A user's ID can be any alphanumeric string, and this can be simply tied to an extension number using the 'number-alias' property. This property creates an aliased directory entry that points to the alphanumeric user entry.
NOTE: When using this attribute, you must be careful not to create a directory collision by having another user whose ID is the same as another user's alias
Here is an example from the user directory:
<user id="johnsmith" number-alias="1001">
<!-- Insert the usual user configuration variables and params here,
including user password, voicemail password, caller ID info, etc -->
</user>
So when a user dials extension number 1001, your dialplan can use the 'user_data' function to look up the ID attribute associated with that number alias. In the default dialplan, the 'Local Extension' section can be made to work with a small change to the 'bridge' line:
<action application="bridge" data="user/${user_data(${dialed_extension}@${domain_name} attr id)}@${domain_name}"/>
NOTE: Using this user_data function in combination with mod_xml_curl will generate an additional request each time the user_data function is called. Note that it is already called once in the Local Extension section to determine the callgroup. Beware of performance implications of this with high-volume systems.