In my previous posts, I asked about the ability to do a POST from a softkey.X.action url. I understand that this can not be done.
So, now that I have to work with a GET, I'm attempting to pass some unique identifier to the web server along with the request. Ideally this could be either the registration address of one of the line keys, the mac address or some other unique identifier as a <glob> so our provisioning server does not have to create a unique configuration for each device (for other reasons, this is impractical at this point).
I first thought was to use the mac address as this is obviously unique. Researching both the 5.5 and 5.9 Admin Guide I found device.prov.tagSerialNo where both guides state:
0 - The phone's serial number (MAC address) is not included in the User-Agent header of HTTPS/HTTPS transfers and communications to the microbrowser and web browser.
1 - the phone's serial number is included
In my config file, under the <device> tag I added device.prov.tagSerialNo="1".
(Since this is part of the device configuration I also experimented with adding device.prov.tagSerialNo.set= both 1 and 0, in the end it didn't matter.)
Unfortunately, this is misleading - it is only included when the phone is retreiving its configuration files from the provisioning server, not when the phone browser is used for normal requests (if this is not expected behavior, let me know - I can provide a pcap for both 5.5.0 and 5.9.3 on a VVX-411).
Since this did not function in a manner I was hoping, next I tried variable substitution as explained for creation of configuration files by adding [PHONE_MAC_ADDRESS] as part of the url in the softkey.x.action setting. I tried several permutations with no luck. The obvious softkey.x.action="http://foo.somesite.com/[PHONE_MAC_ADDRESS]" came the closest (in that it actually appeared) - coming in to the server as "http://foo.somesite.com/%5BPHONE_MAC_ADDRESS%5D"
I'm desperately seeking a way of doing this. I'm open to ideas with the following caveats:
I was really hoping the device.prov.tagSerialNo solution would work, since all traffic would be SSL, the configuration would be universal per phone, and the headers are easy to parse on the sever end.
Solved! Go to Solution.
Give this parameter a try: sec.tagSerialNo="1"
That should put the MAC into the application layer HTTP GET request headers (and into SIP contact headers as well).
The other param, device.prov.tagSerialNo="1" is used for provisioning only and because it starts with the word "device" we know it is stored in NVRAM for use with the phone's updater application which runs before the main UC App.
We don't yet have variable substitution into EFK macros
That did it!
I'm going to have to research what impact the added information will have on the SIP headers. We use some internal custom ones, and I know that in past projects the additional size of the headers broke things. But that's a different problem for a different day.
Happy New Year!