In preparation for porting here is an updated guide to help you move from Blueface efficiently and easily.
Prepare your devices.
Note the name, extension, email, model, MAC, IP for each device in a spreadsheet.
To find the IP address of a phone press the Menu key, scroll to System Settings -> Status -> IPv4 Settings -> IP Address
Contact Blueface on +353 1 524 2000.
Provide the MAC addresses of the telephones to be removed from the Blueface system.
Factory Default the telephones.
Press Menu – scroll to System Settings, hit enter.
Type #136 and a confirmation should appear on screen. Select Yes.
Enable the Web Interface of the device.
Press Menu – scroll to System Settings -> Network Settings -> Embedded Web -> Set this to On.
You should now be able to log onto the web interface of the device using http://ip_address.
The default username is ‘admin’ the default password is ‘adminpass’.
Programming
Editing the function keys on each handset can be a repetitive and tiresome task, so we’ve written a simple script you can use to autofill the configuration.
Log onto the phones web portal, click the heading ‘Telephone’, then select ‘Flexible Key Settings’.
Press F12 to launch your browsers developer tools, and under ‘Console’ paste in the below code.
N.B. On Chrome you need to enter ‘allow pasting’ before the code can be executed.
/*
1. Edit button values in the array below
2. Open console and paste the entire code
3. Hit enter
4. Save the page.
Don't use inspector to drill down into the html: Panasonic uses multiple documents in frames,
if the wrong document is selected with inspector the script will fail. Fix: Select the
top html tag in inspector to ensure the main document is selected.
*/
(() => {
//Define key values
let buttons = [
{type:'line', parameter: 1, label: 'Line 1'},
{type:'line', parameter: 1, label: 'Line 1'},
{type:'park', parameter: '701_tenant101', label: 'Park 1'},
{type:'park', parameter: '702_tenant101', label: 'Park 2'},
{type:'blf', parameter: '222_tenant101', label: 'Joseph Dredd'},
{type:'blf', parameter: '223_tenant101', label: 'Johnny Alpha'},
{type:'dial', parameter: '016190619', label: 'Speechpath'},
];
//Map type to value for select
let values = {dial:1, blf:2, line:3, park:16};
//Find content
let content = document.querySelector('frame[name="contents"]').contentDocument;
//Find & filter dss key rows
let trElements = content
.getElementsByTagName('form')[0]
.getElementsByTagName('tbody')[1]
.getElementsByTagName('tr');
let trs = Array.from(trElements)
.filter(tr => !!tr.lastChild.getElementsByTagName('input').length );
//Clear all inputs
trs.forEach(tr => {
tr.querySelector(`select option[value="0"]`).selected = true;
Array.from(tr.querySelectorAll('input')).forEach(input => input.value = '');
});
//Insert values
buttons.forEach(button => {
let tr = trs.shift();
let typeValue = values[button.type];
let textinputs = tr.querySelectorAll('input');
tr.querySelector(`select option[value="${typeValue}"]`).selected = true;
textinputs[0].value = button.parameter;
textinputs[1].value = button.label;
});
})();