Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

This Guide provides instructions for setting up, configuring and demonstrating the capabilities of x-hoppers Green Box.

Created: August 2023

Updated: March May 2024

Permalink: https://wildix.atlassian.net/wiki/x/B4BeDw

...

Place the Headsets into the Charger one by one. Ensure they are properly seated and charging. Allow at least 10 hours for the full charging before use.

Starting from WMS Beta 6.06.20240227.1, you You can check Headsets battery level in WMS:

...

  • Navigate to Dialplan menu, Dialplan rules tab

  • Download and import the following Dialplan procedures in Dialplan rules tab

    • View file
      name"XHoppersHelpPoints" and "clickcollect" Dialplan procedures.bkp
      - required for playing notifications for x-hoppers users if one of the help points is triggered and demonstrating click and collect scenario

    • View file
      nameChatGPT x-hoppers Dialplan procedure.bkp
      - required for ChatGPT Integration. Note that the Dialplan includes a variable {CONVERSATION} that stores conversations and sends them to an email. It is optional, to skip it, delete Custom applications in lines 7, 10 and 11. If you wish to receive emails, replace test@test.com with your preferred address

    • View file
      namex-hoppers remote join demo.bkp
      - required for dialling into x-hoppers broadcasts remotely

  • Modify the users Dialplan by adding *Wairhotlinethe following two entries:

    1. *wair*as a called number

    and add
  • Modify the classound Dialplan by adding CLASSOUND DID
    1. with the following Dialplan applications:

      1. Set -> Language -> choose language

      2. Speech to text -> insert Please unmute and say question for Chat GPT, or wait to join the broadcast or any customized text

      3. Jump to if -> "${RECOGNITION_RESULT}"="question" -> select ChatGPT procedure

      4. Play sound -> click Browse (three dots) and choose the sound to be played on joining the broadcast or create it dynamically using TTS, for example Welcome to x-hoppers, joining the broadcast

      5. Conference -> enter the conference room ID number. This can be any number, e.g. 1, 2, 3, etc

...

      1. green-box-wair-dialplan.pngImage Added
    1. *Wairhotline* with as a called number

    (you can check it in the email or on WMP under CLASSOUND DIDs tab) and add the
    1. with the following Dialplan applications:

      1. Set ->

    Codec
      1. Language ->

    alaw
  • Record a call -> specify an email

  • Jump to -> select IVR for xhoppers procedure

...

  • Modify the IVR for xhoppers Dialplan by specifying extensions, Call groups, audio files etc present on your
      1. choose language

      2. Play sound -> click Browse (three dots) and choose the sound to be played on joining the broadcast or create it dynamically using TTS, for example Welcome to x-hoppers, joining the broadcast

      3. Conference -> enter the conference room ID number. This can be any number, e.g. 1, 2, 3, etc. 

...

  • Modify the classound Dialplan by adding CLASSOUND DID as a called number (you can check it in the email or on WMP under CLASSOUND DIDs tab) and add the following Dialplan applications:

    • Set -> Codec -> alaw

    • Record a call -> specify an email

    • Jump to -> select IVR for xhoppers procedure

...

  • Modify the IVR for xhoppers Dialplan by specifying extensions, Call groups, audio files etc present on your PBX

Tip

For Message For Operator, you can create your own audio files using TTS in WMS Sounds or upload these files:

View file
namemanagercall.alaw
View file
namesalescall.alaw
View file
namecustomercare.alaw
.

...

  • By default, this feature is disabled. To activate it, add the parameter --xhop_voice_login true to the /etc/systemd/system/pbx-data-engine.service.d/override.conf file

    Code Block
    # vi /etc/systemd/system/pbx-data-engine.service.d/override.conf
     
    [Service]
    ExecStart=
    ExecStart=/usr/sbin/pbx_data_engine.py --daemon --mode calls presence -cr --xhop_voice_login true
  • Reload systemd and restart the service to apply the changes:

    Code Block
    # systemctl daemon-reload
    # systemctl restart pbx-data-engine
  • Install the specific libraries to enable verification of identity by voice using this command

    Code Block
    pip install librosa
  • Set up the Dialplan to allow users to record their voice footprint:

    View file
    namex-hoppers_auth.bkp
    and associate it with users Dialplan

  • Add the variable XHOP_VOICE_AUTH=yes to WMS -> Dialplan -> General Settings -> Set dialplan variables field

When the feature is enabled:

  • Users need to call the designated number in the Dialplan and follow the instructions to record their voice footprints

  • Upon lifting W-AIR headset, users are prompted to say their name and surname

  • The system matches the pronunciation with user records and assigns the headset accordingly

  • Each time the headset is placed into the charger, it gets unassigned meaning that it gets Service license type

If you have already assigned the headsets via WMS, to initiate this feature:

...

After enabling, for the first headset use, users need to lift the headset from the charger, place it back, and then lift it again

It is possible to ​​enable user verification by voice for users of specific Departments only. For this:

  1. Instead of --xhop_voice_login true use --xhop_voice_login department

  2. Add the following line, indicating the list of departments, where verification by voice should be used: 

Code Block
# vi  /etc/systemd/system/pbx-data-engine.service.d/override.conf

[Service]
ExecStart=
ExecStart=/usr/sbin/pbx_data_engine.py --daemon --mode calls presence -cr --xhop_voice_login department
Environment='XHOP_VOICE_AUTH_DEPS_LIST=Sales,Support'
  • Where “Sales, Support” is the list of required departments, separated by comma.

  • Reload systemd and restart the service to apply the changes:

    Code Block
    # systemctl daemon-reload
    # systemctl restart pbx-data-engine
  • Install the specific libraries to enable verification of identity by voice using this command

    Code Block
    pip install librosa
  • Set up the Dialplan to allow users to record their voice footprint:

    View file
    namex-hoppers_auth.bkp
    and associate it with users Dialplan

  • Add the variable XHOP_VOICE_AUTH=yes to WMS -> Dialplan -> General Settings -> Set dialplan variables field

When the feature is enabled:

  • Users need to call the designated number in the Dialplan and follow the instructions to record their voice footprints

  • Upon lifting W-AIR headset, users are prompted to say their name and surname and are asked to pronounce the phrase “My voice is my password”

  • The system matches the pronunciation with user records and assigns the headset accordingly

  • Each time the headset is placed into the charger, it gets unassigned meaning that it gets Service license type

If you have already assigned the headsets via WMS, to initiate this feature:

  • After enabling, for the first headset use, users need to lift the headset from the charger, place it back, and then lift it again

  • Alternatively, before activation, unassign headsets via WMS (Devices -> choose device -> click Assign to user -> in the Extension field, choose “unknown”). Subsequently, users should press the Call button when lifting the headsets from the charger

How to perform the Demo 

During a demonstration of x-hoppers, you can present both basic and advanced scenarios to showcase the system's capabilities. Basic scenarios involve scanning QR codes or using tablets and utilizing x-bees for gathering and posting content, while advanced scenarios showcase integration with Veesion and ChatGPT, taking communication to the next level.

Tip

To showcase tablet scenarios, you do not need to have an actual tablet, you can use a web version by using the link:

Joining the broadcast

The broadcast is the core functionality of x-hoppers, it refers to the network created by the system that enables real-time communication between x-hoppers users (retail assistants).

x-hoppers users are connected to the broadcast in Retail mode (muted) by default once W-AIR Headsets are lifted from the charging cradle.

Speaking

To start speaking in the broadcast, use one of the options:

  1. Call button: press and hold the button to get unmuted. You stay unmuted only while pressing the button. When the button is released, the Headset goes back to mute

  2. Mute button: press the button to unmute and be able to speak in the broadcast. All people in the broadcast can hear you. You stay unmuted till Mute button is pressed again or till the Headset is placed to the Charger

Muting

To mute/ unmute the broadcast:

  1. Double-press Call button

  2. By default, audio from the broadcast gets muted for 60 seconds

  3. To unmute the broadcast before the timeout, double-press Call button again

You can customize the default 60 seconds timeout:

  • Add the following line to /etc/systemd/system/pbx-data-engine.service.d/override.conf file: 

    Code Block
    Environment='UNHOLD_TIMEOUT=120'
  • Where 120 is the preferred timeout. If you want to disable the timeout, set the value to 0:

    Code Block
    Environment='UNHOLD_TIMEOUT=0'

...

It is also possible to manage incoming and outgoing calls while being connected to the broadcast. Once a call ends, the Headset will automatically return to the broadcast.

To answer incoming calls:

  1. Double-press Call button to answer the call

  2. Double-press Call button to swap between the call and the broadcast

  3. Double-press AUX Function button to finish the call

To make outgoing calls:

  1. Open x-bees app on your device

  2. Access the dialpad within the app

  3. Before placing the call, select the Headset as the audio output device to ensure the call audio is routed through the Headset

  4. Dial the desired number using the dialpad and initiate the call

Tip

Wildix desk phones can also join the broadcast, as long as they are connected to the same PBX. We suggest connecting SuperVision (specifically relevant for managers) and joining the broadcast via one of the following options:

  • Dial the feature code for Conference access (98 by default) + the conference room number. Example: 981 for conference room number 1

  • Alternatively, configure Dialplan so that when users dial a certain number, e.g. 333, the call is automatically put into the broadcast

In case you need to join several broadcasts, you can set a dedicated Function key to enter each broadcast.

Joining the broadcasts remotely

One of the remarkable features of x-hoppers system is its ability to allow users to join any broadcast from any location using any device. By dialling into x-hoppers demonstrations line via PSTN, for example, you are presented with a menu of choices to engage with the system and join specific broadcasts, allowing for flexible and accessible participation.

To demonstrate:

...

Dial CLASSOUND DID from an external device

Choose one of the options from the interactive menu:

...

Option 1: Ring all retail assistants in Call group. By pressing 1, you initiate a broadcast to all users in a specific Call group. This option is ideal for scenarios where a general announcement or message needs to be communicated to all users simultaneously

...

Option 2: Hunt through Call group with Priority or Round Robin strategy. By pressing 2, you trigger a call routing mechanism that hunts through each user connected to a specific Call group in a predefined order. This option is suitable for customer care scenarios where callers need to be connected to representatives consecutively until a successful connection is established

...

Option 3: Call directly to a single user. By selecting 3, you directly contact a specific user, typically a manager or designated contact person. This option allows for one-on-one communication and is useful for private conversations

...

Option 4: Join broadcast 1. Pressing 4 enables you to join the first broadcast. This option grants the ability to participate in a specific broadcast session and communicate with all users simultaneously

...

Note: It is possible to customize prompts pronounced during user verification by voice. For this, add the following variable(s) to WMS -> Dialplan -> General Settings -> Set dialplan variables field:

  • XHOPPERS_VOICEFOOTPRINT_PROMPT=your custom prompt

This variable allows to set your custom prompt instead of the default voice footprint message “After the beep please say with x-hoppers: my voice is my password“.

  • XHOPPERS_LOGIN_PROMPT=custom login message

Set a custom prompt instead of “Please say your first and last name to use the device“. For example, as long as it is possible to login via extension number, you can change the prompt to “Say your extension”.

  • XHOPPERS_CONFIRMATION_PROMPT=no

By default, the value is yes. When disabled, the variable allows to skip the playback message “Please hold to use the device, or say cancel to search again“. 

  • XHOPPERS_FINISH_PROMPT=your custom prompt

Set a custom x-hoppers message instead of the default “Thank you”, pronounced at the end of voice verification, when a user needs to wait till the headset joins the conference. 

x-hoppers-custom-prompts.pngImage Added

Set up virtual users

Starting from WMS 6.07, it is possible to configure dummy (virtual) users for assigning a headset in case a user could not be verified by voice after 3 attempts. To set a list of dummy users for assigning a headset in case of voice authorization failure:

  1. Create the file with the following name:

Code Block
/rw2/etc/pbx/x-hoppers_dummy_users.json
  1. In this file, add the list of dummy user extensions, for example:

Code Block
[703, 706, 702]

When dummy users are configured, and a user fails to complete verification by voice, the headset gets automatically assigned to an available dummy user. 

How to perform the Demo 

During a demonstration of x-hoppers, you can present both basic and advanced scenarios to showcase the system's capabilities. Basic scenarios involve scanning QR codes or using tablets and utilizing x-bees for gathering and posting content, while advanced scenarios showcase integration with Veesion and ChatGPT, taking communication to the next level.

Tip

To showcase tablet scenarios, you do not need to have an actual tablet, you can use a web version by using the link:

Joining the broadcast

The broadcast is the core functionality of x-hoppers, it refers to the network created by the system that enables real-time communication between x-hoppers users (retail assistants).

x-hoppers users are connected to the broadcast in Retail mode (muted) by default once W-AIR Headsets are lifted from the charging cradle.

Speaking

To start speaking in the broadcast, use one of the options:

  1. Call button: press and hold the button to get unmuted. You stay unmuted only while pressing the button. When the button is released, the Headset goes back to mute

  2. Mute button: press the button to unmute and be able to speak in the broadcast. All people in the broadcast can hear you. You stay unmuted till Mute button is pressed again or till the Headset is placed to the Charger

Muting

To mute/ unmute the broadcast:

  1. Double-press Call button

  2. By default, audio from the broadcast gets muted for 60 seconds

  3. To unmute the broadcast before the timeout, double-press Call button again

You can customize the default 60 seconds timeout:

  • Add the following line to /etc/systemd/system/pbx-data-engine.service.d/override.conf file: 

    Code Block
    Environment='XHOP_UNHOLD_TIMEOUT=120'
  • Where 120 is the preferred timeout. If you want to disable the timeout, set the value to 0:

    Code Block
    Environment='XHOP_UNHOLD_TIMEOUT=0'

Check the detailed instructions on how to manage the override.conf filein Step 4. Configuring settings.


Managing calls

It is also possible to manage incoming and outgoing calls while being connected to the broadcast. Once a call ends, the Headset will automatically return to the broadcast.

To answer incoming calls:

  1. Double-press Call button to answer the call

  2. Double-press Call button to swap between the call and the broadcast

  3. Double-press AUX Function button to finish the call

To make outgoing calls:

  1. Open x-bees app on your device

  2. Access the dialpad within the app

  3. Before placing the call, select the Headset as the audio output device to ensure the call audio is routed through the Headset

  4. Dial the desired number using the dialpad and initiate the call

Tip

Wildix desk phones can also join the broadcast, as long as they are connected to the same PBX. We suggest connecting SuperVision (specifically relevant for managers) and joining the broadcast via one of the following options:

  • Dial the feature code for Conference access (98 by default) + the conference room number. Example: 981 for conference room number 1

  • Alternatively, configure Dialplan so that when users dial a certain number, e.g. 333, the call is automatically put into the broadcast

In case you need to join several broadcasts, you can set a dedicated Function key to enter each broadcast.

Joining the broadcasts remotely

One of the remarkable features of x-hoppers system is its ability to allow users to join any broadcast from any location using any device. By dialling into x-hoppers demonstrations line via PSTN, for example, you are presented with a menu of choices to engage with the system and join specific broadcasts, allowing for flexible and accessible participation.

To demonstrate:

  • Dial CLASSOUND DID from an external device

  • Choose one of the options from the interactive menu:

    • Option 1: Ring all retail assistants in Call group. By pressing 1, you initiate a broadcast to all users in a specific Call group. This option is ideal for scenarios where a general announcement or message needs to be communicated to all users simultaneously

    • Option 2: Hunt through Call group with Priority or Round Robin strategy. By pressing 2, you trigger a call routing mechanism that hunts through each user connected to a specific Call group in a predefined order. This option is suitable for customer care scenarios where callers need to be connected to representatives consecutively until a successful connection is established

    • Option 3: Call directly to a single user. By selecting 3, you directly contact a specific user, typically a manager or designated contact person. This option allows for one-on-one communication and is useful for private conversations

    • Option 4: Join broadcast 1. Pressing 4 enables you to join the first broadcast. This option grants the ability to participate in a specific broadcast session and communicate with all users simultaneously

    • Option 5: Join broadcast 2. Pressing 5 enables you to join the second broadcast, extending the capability to address a different group of users simultaneously

It is possible to make announcement in x-hoppers broadcast to users of specific Departments only. For this:

  1. Create a CURL request that triggers a message to the required department

Example: 

Code Block
curl -X POST --header 'Authorization: Bearer {token}'

https://{pbx domain}/api/v1/Originate -d

'channel=Local/999@myDialplan&application=System&async=true' -d

'variable=dst=777,dept=Sales,msg=help required at checkouts'

Where:

  • 999 = the Dialplan rule that processes the request; you can set a custom number. 

  • dst = the rule in the outgoing Dialplan of users that should receive the announcement

  • dept =  department name

  • msg = the announcement, a text prompt or a path to an audio file stored on the PBX

Note: msg and dept values can be wrapped in double quotation marks (“)

  1. Create rule 999 (you can set a custom number) and call the following script in that rule:

Code Block
Custom app :: System(data_engine_cli OriginatePlayback ${dst} '${dept}' '${msg}')

3. Create a Dialplan rule with dst number (this can be any number that is not occupied by a user or by another real destination, e.g. 111 or 777) in the outgoing users Dialplan(s). If users have different Dialplans, the rule with dst number should be created in each of them (or it can be added as an included procedure). Configuration:

Code Block
Set :: Language :: en (this one is needed for TTS processing)

Set(sound=${SHELL(/usr/sbin/data_engine_cli GetSound ${CALLERID(num)})})

Play sound :: ${sound}

Important: In case of changing Department name, make sure to reload PBX engine to apply the changes:

Code Block
# systemctl daemon-reload # systemctl restart pbx-data-engine

Basic scenarios

Tip

Ensure that all demo users are connected to an audio conference set up in Dialplan (in our example, conf 2), as all audio alerts are delivered to this specific conference.

...