How to set up x-hoppers integration with Veesion

This guide explains how to configure x-hoppers integration with Veesion, software that allows to detect thefts in real time. 

Created: January 2023

Updated: July 2024

Permalink: https://x-hoppers.atlassian.net/wiki/x/AYAj

Introduction

Veesion is software that helps to detect thefts in retail stores in real time, by analysing video feeds and sending real time alerts when suspicious behaviour is detected. x-hoppers integration with Veesion is a great way to make your store more secure.

Requirements

Positioning of cameras

Like any AI-based system, the accuracy of algorithm decisions is dependent on the context, like positioning of the cameras. The better the positioning, the more the system is capable of recognizing the shoplifting gestures and thus, the higher the detection rate. Below you can find recommendations for the optimal positioning of the cameras: 

  • Cameras should be centered on the aisle:

centered-on-aisle-optimal-positioning.jpg
  • Detection range: 1.5 to 12m

theoretical-detection-rate.png

The closer a shoplifter is to the camera, the higher detection rate (e.g. within 1.5m the detection rate is 70%, in the range of 12m - about 30%).

  • Optimal height: 1.8 to 3.5m

The height of the cameras influence the visibility of what is going on in the store and the detection performance.

What to avoid

Below you can find practices that we recommend to avoid, as long as they can lower the detection rate considerably:

  • Too wide field of view: when the camera’s field of view is too wide, there can be too many people present simultaneously, which reduces the detection rate because gestures may be hidden by other people or located far away from the camera (>12m).

  • Dead angles: customers cannot be seen between two shelves when cameras focus on blocks of shelves from the side. Avoid placing cameras placed laterally on shelves arranged in blocks and make sure cameras focus on the aisles. 

Other

  • DVR / NVR model ideally Hikvision or Dahua

  • Configuration for secondary video playback:

    • Resolution: 4CIF or D1

    • FPS: 15 or 12

    • Bitrate: 1024Kbps

Configure Veesion integration

Note: The support starts from WMS 6.02.20221228.1.

Step 1. Configuration of the webhook

Configuration of the webhook should be performed by administrator on the client side. Webhook should include two parameters: 

  • URL of the hook (with PBX as host)

  • store_veesion_id

Note: For PBX authorization, the webhook URL should contain the parameter with PBX token /?token=<simple>.

Examples of using Veesion API

  • Get token:

curl -v --header "Content-Type: application/json" --request POST --data '{"username":"webhook_user@wildix","password":"test"}' https://api.klaxon.veesion.io/token {"token":"1dcbf200cc455968a66baad40b8238bd5165a8","expires_in":"1702.352942"}
  • Get user info:

curl -v --header "Authorization: Token 1dcbf200cc455968a66baad40b8238bd5165a8" --request GET https://api.klaxon.veesion.io/user-info {"user":"webhook_user@wildix","expires_in":"805.326849"}
  • Get stores:

curl -v --header "Authorization: Token 1dcbf200cc455968a66baad40b8238bd5165a8" --request GET https://api.klaxon.veesion.io/stores {"stores":[{"store_veesion_id":"test-store-wildix","store_veesion_name":"test store wildix","store_id":""}]}
  • Set hooks:

Hook payload format:

Step 2. PBX configuration

To configure PBX, two parameters need to be added to /rw2/etc/env.custom.ini file:

  • VEESION_ALERT_ORIGIN=veesion (used as number in Dialplan - see below)

  • VEESION_ALERT_CHANNEL={indicate channel that should receive the alert call}

Example:

Step 3. Dialplan setup

  1. Add a Dialplan rule named veesion

  2. In the veesion Dialplan, add the following numbers:

    1. *Alerts", with application Conference and the relevant Room Number:

    2. veesion, with the application Play sound, typing text and variables to be played in the conference.

Example: Attention! Theft detected in ${storeId} on ${cameraId}

Available variables:

  1. storeId

  2. startDate

  3. endDate

  4. cameraIp

  5. cameraId

  6. groupId

  7. videoUrl

  8. alertType

Post Veesion alerts to x-bees conversation

Starting from WMS 6.03.20230630.3, it is possible to configure Veesion alerts to be sent to x-bees conversation (you can refer to x-bees documentation for more information about x-bees). The message that is sent to x-bees includes alert type, date, time, camera IP, ID of the camera and group, as well as the relevant video attachment. 

How to configure 

  1. Add a user in WMS

  2. Create x-bees conversation with the user created in step 1 and copy the conversation ID (available in the URL)

     

  3. Add following data to the /rw2/etc/pbx/x-hoppers.json file:

Where:

  • store_veesion_id: ID of the store on the Veesion side

  • name: name of the store 

  • audio_conf_id: ID of the audio broadcast channel in x-hoppers where the communication takes place

  • location: location of the store

  • xbees_channel_id: ID of the x-bees conversation, copied in step 2, where the content will be posted.

  • user: user, on behalf of whom the content will be posted

How to modify the alert 

Starting from WMS 6.06.20240325.1, it is possible to edit x-hoppers theft alerts: remove camera ID, IP address and group ID, as well as add a message header.

For this, add the following parameters to the /rw2/etc/pbx/x-hoppers.json file:

a) To remove camera IP, camera ID and group ID:

  • "remove_camera_ip": true,

  • "remove_camera_id": true,

  • "remove_group_id": true,

By default, the values are false and camera IP, ID and group ID are displayed in the theft alert.

b) To add message header:

  • "xbees_message_header": "header text"

Where "header text" is your custom text for the message header. By default, theft alerts are sent without a header.Â