Skip to main content

Upcoming phone provisioning features - New Button Types

Posted by eeman on Sun, 11/06/2016

Welcome back to installment #3 of the upcoming provisioning changes. In this article we will discuss the new button types and delve into an entirely new feature called phone templating.

New Button Types

While being sponsored to make templates for vTech phones, it because apparent that the extra functionality of their DSS keys were practically a necessity. Unlike Yealink, whom also offers some extra functionality in their DSS keys, there were no dedicated hard keys set up to do voicemail, transfers, and various other features. They instead give you a lot of DSS keys to make work as you see fit.

Ultimately the caveat we kept running into is how to make an interface to support all these functions and yet still do it in such a way that it only works for one vendor and not another. Yealink is another vendor that has DSS type keys that support a multitude of functions. Out interface needs to be vendor agnostic. It needs to be written in a manner that supports the most-common-denominator.

We went through some 20 button types that both yealink and vtech were facilitating and eliminated the ones that were broadsoft and other non-asterisk system specific functions. Then we went through and ditched the functions that really were just a repeat of speed dial. You don't need a special button called operator that is just going to call 0 if you can just make a speed dial button set to 0 and call it operator, for example.

When we filtered everything down to about 10 unique button types it became apparent that the only components that changed were 2 values, one of which is a label that gets presented to the user. Recycling the same code that performed speed dials we could easily support these new button types using 2 fields, Label and Value. Regardless of the button type, it would always have a value of the button type that needs to be declared, and a label for devices that had an lcd display to show the name of what needs to be represented. A button type for paging might require the multicast address for the paging zone and a label of the name of the zone for human comprehension. Whereas a button labeled speaker paging might simply be a Prefix button type that prepends a 4 to the number you dial triggering the tl-intercom script.

The new button types now in the UI are:

  • Linekeys
  • DND
  • Group Pickup
  • VoiceMail
  • Prefix
  • Call Park
  • Conference
  • Multicast Paging
  • Conference
  • Forward
  • Transfer
  • Hold
  • Paging List
  • Custom 1 - 3
Phone Templating

Once we started adding all these new buttons, I realized that our bulk provisioning really didn't address a way to set up all the devices from an uploaded csv file when these new button types were concerned. It simply took the extension information and assigned an extension to a device. This new feature inadvertently created a new need. As a result there now exists a way to create a pseudo model where, based on a real model, now includes a layout of button assignments. When using a bulk provisioning method, or adding a new user extension, you can now select custom templates from the same list as generic devices. These custom templates will have the layout you customize for buton assignments in order to roll out a uniform deployment with a lot less hands-on for a per-extension basis. Under System Settings -> Device Provisioning, is a subset called Phone Templates that lets you make a pseudo model for the sake of layout for future selection when bulk provisioning and/or individual layout when adding an extension.