Asterisk
September 17, 2010
At dealnews, as I’ve written before, we run Asterisk as our telephone system. I find it to be a pretty good solution to our telecom needs: we have multiple offices and several home-based users.
And, for the most part, for hard telephones, we use Polycoms. We run mostly IP-330s, with a couple of IP-4000s and a few new IP-331s. We also have softphones, a couple of PAP2s and a couple of old Grandstreams from our original Asterisk deployment in 2007 that I’m desperately trying to get out of circulation. But it’s mostly Polycoms.
Recently, I changed how we were doing provisioning. I’ll write a more in-depth post about this later, but the short of it is that since Polycom phones use XML for their configuration information, we now generate them dynamically instead of creating a configuration file. It’s what I should have done back in 2007 when we bought our first round of Polycoms.
But this presented me with a problem: how do I re-provision the older phones - some of which I don’t have easy physical access to (at least that doesn’t involve an airplane ride) - to use the new configuration system?
In doing some research, I discovered that Polycom allows you to set, via certain commands, the provisioning server from within a config. With this information, I crafted a custom re-provisioning config that looks like this:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<deviceSettings>
<device device.set="1"
device.dhcp.bootSrvUseOpt.set="1" device.dhcp.bootSrvUseOpt="2"
device.net.cdpEnabled.set="1" device.net.cdpEnabled="0"
device.prov.serverType.set="1" device.prov.serverType="2"
device.prov.serverName.set="1" device.prov.serverName="server"/>
</deviceSettings>
And included it at the top of the 000000000000.cfg file (one of the default files downloaded by each Polycom phone):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<APPLICATION APP_FILE_PATH="sip.ld" CONFIG_FILES="update.cfg, phone1.cfg, sip.cfg" MISC_FILES="" LOG_FILE_DIRECTORY="" OVERRIDES_DIRECTORY="" CONTACTS_DIRECTORY=""/>
Then, using Asterisk, I issue the check-config command:
asterisk*CLI> sip notify polycom-check-cfg peer
The phone should reboot, pick up its new config, then reboot again with with proper new provisioning information from the new provisioning provider.
Next post, I’ll show you how to use PHP and mod_rewrite to eliminate the need for per-phone config files.
Read More