If you just want to customize the buttons, pull up the Yealink T46G template in the 3CX console and do a find for 'linekey' (without quotes). This will bring you to the section of the template that controls the 3 pages of BLF keys on the phone. You'll see most of the entries under this section look something like:
{IF blf1}
linekey.3.line = %%Line%%
linekey.3.value = %%blf1%%
linekey.3.pickup_value =
linekey.3.type = %%DKtype%%
linekey.3.label = %%blffirstname1%% %%blflastname1%%
linekey.3.extension = %%PickupValue%%
{ELSE}
linekey.3.type = 0
{ENDIF}
Note that the If/Else is 3CX logic which is tested when 3CX uses the template to build an actual provisioning file for a specific phone. Since you don't want to use the BLF definitions in 3CX for each extension, you can get rid of the If/Else structure as well as the 3CX variables (in double %%) so you end up with this:
linekey.3.line =
linekey.3.value =
linekey.3.pickup_value =
linekey.3.type =
linekey.3.label =
linekey.3.extension =
Now, you can populate these items for each of the 27 BLF keys as you want. A few things:
1. Note that lines start with an index of 0, so for key types that require you to define a line, the linekey.x.line value would be 0 for line 1.
2. linekey.x.value is the value of the key. For a BLF, this is the extension number (or shared parking space) you're watching, for speeddial this is the number you want the button to dial, etc.
3. linekey.x.type is the key type (see below)
4. linekey.x.label is how you want the button labeled on the phone display
5. linekey.x.extension is actually the pickup code. So for example, if you wanted to do directed call pickup of a BLF, you would put the pickup code (*20*) in the linekey.x.extension field.
As for linekey types, here's the list I've put together:
0 Empty
1 Conference
2 Forward
3 Transfer
4 Hold
5 DND
7 Call Return
8 SMS
9 Directed Pickup
10 Call Park
11 DTMF
12 Voicemail
13 Speed Dial
14 Intercom
15 Line
16 BLF
17 URL
18 Group Listening
22 XML Group
23 Group Pickup
24 Multicast Paging
25 Record
27 XML Browser
34 Hot Desking
35 URL Record
38 LDAP
40 Prefix
41 Zero-Touch
42 ACD
45 Local Group
50 Keypad Lock
In the template, the section below Line Keys is Programmable keys, which is both your 4 soft keys at the bottom of the display and the hard buttons on the phone. programmablekey.1 through programmablekey.4 are the soft keys.
Below the Programmable Keys section in the template is the Expansion Module section. Setting keys for the expansion modules works just like the linekeys - the only difference is that since you an have multiple expansion modules, you need to specify the expansion module and the line number in the config file.
expansion_module.x.key.y.type =
expansion_module.x.key.y.line =
expansion_module.x.key.y.value =
expansion_module.x.key.y.extension =
expansion_module.x.key.y.label =
In the above lines, X indicates the expansion module (1-16) and Y indicates the button you are setting.
As Dave suggested, you'll want to save your changes to a new template name so you don't lose the customizations the next time you update your 3CX install.
HTH!
Chad