Child pages
  • How to assign functions to the A190 buttons

Contents




Starting from firmware 520B1, it is possible to assign some functions to the A190 buttons, and in that way for example start a call from the A190 itself or use them to interact while on a call.

At the end of this HowTo, you will find some XML files, some of them are examples (the details are in the commented XML code in the file), and the "configuration.xml" is the generic file that can be modified to meet your own scenario.

As you can see in the "configuration.xml" file, there are different states in which the A190 can be configured, different buttons that can be used and different functions that can be called, some of which related to the Number parameters you can find at the end of the file.

To interact with the headset, you can define:

  • Three buttons: Hook, Mute and Aux (the latter only in call-states)
  • Three events for each button: Single short press, Double press and Long press
  • Two main states, Idle and Call, but the latter can be divided into eight sub-states which are: Incoming call, Outgoing call, Call connected, Call on hold, Second incoming call (call waiting), Second outgoing call, Second call connected, Conference (all these states are in the generic "configuration.xml" file already)



Classes of Functions

There are then six classes of functions that can be assigned to events:

  • Mute functions: Muteon, Muteoff
  • Single-call functions: Connect, Reject, Release, Hold, Retrieve
  • Multi-call functions: Connect + Release, Connect + Hold, Reject + Release, Join conference
  • Dial functionconfigured referring to the extension you want to dial
  • Transfer functionconfigured referring to the extension you want to transfer the call to, BlindTransfer
  • DTMF sequence: configured with a DTMF sequence for the PBX to interpret



States

Each function can be used in a specific state (or more than one), here a list to summarize all of them:

  • Idle: Dial, DTMF sequence
  • Incoming call: Connect, Reject, DTMF sequence
  • Outgoing call: Mute functions, Release
  • Call connected: Mute functions, Release, Hold, DTMF sequence
  • Call on hold: Mute functions, Release, Retrieve, Dial, Transfer, DTMF sequence
  • Second incoming call (call waiting): Mute functions, Connect, Reject, Connect + Hold, Connect + Release, Reject + Release, DTMF sequence
  • Second outgoing call: Mute functions, Release
  • Second call connected: Mute functions, Release, Swap, Join conference, Blind Transfer, DTMF sequence
  • Conference: Mute functions, Release, DTMF sequence


To upload the configuration file to the base, and so to the headset, you need to go into the web interface and into the path Extensions -> Select the IPEI of the headset -> "Import local Configurable Mmi:" and upload the file. 

If you are using a multicell system, you need to do this from the web interface of the base station the A190 is currently connected to, since the base will need to pass down the file to the A190 immediately.




Example XML´s

Below you will find some XML files that can act as examples, and the "configuration.xml" that can be used as a general file from which you can start.

  • "Dial_from_A190.xml" → How to dial numbers from the A190 in idle state
  • "Mute_OnOff.xml" → How to set a button to mute or un-mute a call
  • "Transfer.xml" → How to put on hold and transfer an ongoing call
  • "BilndTransfer.xml" → How to transfer the two calls that are active on the A190 at the same time so that they result on a call together
  • "Functions_A190.xml" → A slightly bigger scenario with more states, events and functions involved


Keep in mind

  • Not all functions make sense in all headset states, that is why only certain functions can be mapped to events in any given state (for example, a Transfer function cannot be used when the headset is in Idle state)
  • When configuring a button, this will potentially loose its initial functionality: if the Hook button for example is assigned to Mute/Unmute an incoming call, you will not be able to answer the call using that button anymore as you usually do with the headset, you will need to configure another button to replace this functionality



configuration.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <Extension>Extension1</Extension>
  <Idle>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
  </Idle>
  <IncomingCall>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
    <Aux>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Aux>
  </IncomingCall>
  <OutgoingCall>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
    <Aux>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Aux>
  </OutgoingCall>
  <CallConnected>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
    <Aux>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Aux>
  </CallConnected>
  <CallOnHold>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
    <Aux>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Aux>
  </CallOnHold>
  <SecondIncomingCall>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
    <Aux>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Aux>
  </SecondIncomingCall>
  <SecondOutgoingCall>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
    <Aux>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Aux>
  </SecondOutgoingCall>
  <SecondCallConnected>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
    <Aux>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Aux>
  </SecondCallConnected>
  <Conference>
    <InCradleEvent>InCradleEvent1</InCradleEvent>
    <OutOfCradleEvent>OutOfCradleEvent1</OutOfCradleEvent>
    <Hook>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Hook>
    <Mute>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Mute>
    <Aux>
      <Single>Single1</Single>
      <Double>Double1</Double>
      <Long>Long1</Long>
    </Aux>
  </Conference>
  <Number Index="0">Number1</Number>
  <Number Index="1">Number2</Number>
  <Number Index="2">Number3</Number>
  <Number Index="3">Number4</Number>
  <Number Index="4">Number5</Number>
  <Number Index="5">Number6</Number>
  <Number Index="6">Number7</Number>
  <Number Index="7">Number8</Number>
  <Number Index="8">Number9</Number>
  <Number Index="9">Number10</Number>
</configuration>
configuration.xml
<?xml version="1.0" encoding="utf-8"?>
<!--This dials from extension 103 (103 must be the A190 extension)-->
<!--It dials 100 with a single press of the hook button-->
<!--It dials 101 with a double press of the hook button-->
<!--It dials 102 with a long press of the hook button-->
<configuration>
  <Extension>103</Extension>
  <Idle>
    <Hook>
      <Single>Dial0</Single>
      <Double>Dial1</Double>
      <Long>Dial2</Long>
    </Hook>
  </Idle>
  <Number Index="0">100</Number>
  <Number Index="1">101</Number>
  <Number Index="2">102</Number>
</configuration>
configuration.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
103 must be the extension for the A190

When a call is connected, pressing once the hook button will hold the call

While the call is on hold, a long press of the hook button will transfer the call to extension 100

While the call is on hold, a long press of the mute button will transfer the call to extension 101

While the call is on hold, a single press of the aux button will retrieve the call from hold

The transfer is "blind", in a way that if extension 102 is calling the A190 on 103, and the A190 places the call on hold
	and then transfer it to 100 for example, when 100 answers, it will be speaking with the initial caller 102 and not with 
	extension 103 (so not with the person using the A190)
-->
<configuration>
  <Extension>103</Extension>
  <CallConnected>
    <Aux>
      <Single>Hold</Single>
    </Aux>
  </CallConnected>
  <CallOnHold>
    <Hook>
      <Long>Transfer0</Long>
    </Hook>
    <Mute>
      <Long>Transfer1</Long>
    </Mute>
    <Aux>
      <Single>Retrieve</Single>
    </Aux>
  </CallOnHold>
  <Number Index="0">100</Number>
  <Number Index="1">101</Number>
</configuration>
configuration.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
103 must be the extension for the A190

When a second call is received into the headset, pressing the hook button once will answer the second call and put the first one on holder

Once the second call is connected, with the first one on hold, a long press of the aux button will blindly connect the two calls

The A190 will then loose all calls, and the two callers will be talking with each other

-->
<configuration>
  <Extension>103</Extension>
  <SecondIncomingCall>
    <Hook>
      <Single>ConnectAndHold</Single>
    </Hook>
  </SecondIncomingCall>
  <SecondCallConnected>
    <Aux>
      <Long>BlindTransfer</Long>
    </Aux>
  </SecondCallConnected>
</configuration>
configuration.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
103 must be the extension for the A190

When a call is connected, pressing once the hook button will mute the audio, and pressing it twice will un-mute it

Since the hook button cannot now be used to end the call, the aux button has been defined to release the call instead

-->
<configuration>
  <Extension>103</Extension>
  <CallConnected>
    <Hook>
	  <Single>MuteOn</Single>
	  <Double>MuteOff</Double>
    </Hook>
	<Aux>
      <Single>Release</Single>
    </Aux>
  </CallConnected>
</configuration>
configuration.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
This dials from extension 103 (103 must be the extension for the A190)

This example always uses the "hook" button, but also the "mute" button can be used the same way 
	(the "aux" button can be used the same way for every state but the Idle state)

When the headset is in idle state, it dials: 
	100 with a single press of the hook button
	101 with a double press of the hook button
	102 with a long press of the hook button

With an incoming call, it connects the call with a single press and reject it with a double press of the hook button

When the call is connected, it puts it on hold with a single press and it closed the call with a double press of the hook button

When the call is on hold, it retrieves it with a single press, and it calls extension 101 with a double press of the hook button

When the call is on hold, it transfers the call to extension 101 with a long press of the hook button

-->
<configuration>
  <Extension>103</Extension>
  <Idle>
    <Hook>
      <Single>Dial0</Single>
      <Double>Dial1</Double>
      <Long>Dial2</Long>
    </Hook>
  </Idle>
  <IncomingCall>
    <Hook>
      <Single>Connect</Single>
      <Double>Reject</Double>
    </Hook>
  </IncomingCall>
  <CallConnected>
    <Hook>
      <Single>Hold</Single>
      <Double>Release</Double>
    </Hook>
  </CallConnected>
  <CallOnHold>
    <Hook>
      <Single>Retrieve</Single>
      <Double>Dial1</Double>
	  <Long>Transfer1</Long>
    </Hook>
  </CallOnHold>
  <Number Index="0">100</Number>
  <Number Index="1">101</Number>
  <Number Index="2">102</Number>
</configuration>