Gestion favoris par events

Bonjour,

Dans mon application Web/desktop, j’ai fait le choix de gérer ma liste de favoris en chargeant les favoris depuis l’API à la connexion, puis de les gérer localement par la suite.

Mais comme Sylvain me l’a fait remarqué, il se peut que depuis une autre application ( app mobile par exemple), je modifie mes contacts favoris.

Il me faut donc gérer les websocket

onFavoriteAdded
onFavoriteDeleted

la réponse est très pauvre et demande donc de retrouver les infos du contact avant de l’ajouter ou supprimer du tableau favoris

{
  "tenant_uuid": "958ac4de-d279-4f63-882a-b0e4f8347e56",
  "name": "favorite_deleted",
  "user_uuid:3b4711bf-1227-4222-86ef-68d15b102f99": true,
  "required_access": "event.favorite_deleted",
  "required_acl": "events.directory.3b4711bf-1227-4222-86ef-68d15b102f99.favorite.deleted",
  "origin_uuid": "1cc60e03-8a2c-4f53-9ecc-193c0ce4b7ea",
  "timestamp": "2024-04-09T10:50:25.054168",
  "data": {
    "xivo_uuid": "1cc60e03-8a2c-4f53-9ecc-193c0ce4b7ea",
    "user_uuid": "3b4711bf-1227-4222-86ef-68d15b102f99",
    "source": "personal",
    "source_entry_id": "5d370ac0-b35b-4301-b6ff-1427e292c550"
  }
}

Je dispose de data.source pour identifier la source, mais aucune information sur le backend.

Dans l’exemple de réponse mis au dessus, ça va bien, car pour les contacts “personal”, le backend et la source porte le même nom.

Mais dans le cas des phonebook ou contact Wazo, le backend et le nom de la source peuvent être bien différent.

Je peux donc me retrouver avec:

{
  "tenant_uuid": "958ac4de-d279-4f63-882a-b0e4f8347e56",
  "name": "favorite_added",
  "user_uuid:3b4711bf-1227-4222-86ef-68d15b102f99": true,
  "required_access": "event.favorite_added",
  "required_acl": "events.directory.3b4711bf-1227-4222-86ef-68d15b102f99.favorite.created",
  "origin_uuid": "1cc60e03-8a2c-4f53-9ecc-193c0ce4b7ea",
  "timestamp": "2024-04-09T13:55:09.475695",
  "data": {
    "xivo_uuid": "1cc60e03-8a2c-4f53-9ecc-193c0ce4b7ea",
    "user_uuid": "3b4711bf-1227-4222-86ef-68d15b102f99",
    "source": "internal",
    "source_entry_id": "5554a017-f53a-4abe-a4fa-ac2de000c487"
  }
}

Cela m’oblige a chercher dans tous mes users, car la source internal est ici issue du backend “phonebook”, mais rien me l’indique.

Egalement, pour un contact interne (backend Wazo), j’ai cela:

{
  "tenant_uuid": "958ac4de-d279-4f63-882a-b0e4f8347e56",
  "name": "favorite_added",
  "user_uuid:3b4711bf-1227-4222-86ef-68d15b102f99": true,
  "required_access": "event.favorite_added",
  "required_acl": "events.directory.3b4711bf-1227-4222-86ef-68d15b102f99.favorite.created",
  "origin_uuid": "1cc60e03-8a2c-4f53-9ecc-193c0ce4b7ea",
  "timestamp": "2024-04-09T13:56:36.055550",
  "data": {
    "xivo_uuid": "1cc60e03-8a2c-4f53-9ecc-193c0ce4b7ea",
    "user_uuid": "3b4711bf-1227-4222-86ef-68d15b102f99",
    "source": "auto_wazo_my-company",
    "source_entry_id": "13"
  }
}

J’aimerais éviter d’avoir soit à parcourir des tableaux pour rien, soit maintenir un tableau de correspondance entre les sources et les backend.

Est-il possible de rajouter l’information du backend aux events
onFavoriteAdded
et
onFavoriteDeleted
??

Etant donné que l’on a la source de disponible, il ne devrait pas avoir de coût supplémentaire à avoir le backend.

résultat attendu:

"data": {
    "xivo_uuid": "1cc60e03-8a2c-4f53-9ecc-193c0ce4b7ea",
    "user_uuid": "3b4711bf-1227-4222-86ef-68d15b102f99",
    "source": "auto_wazo_my-company",
    "backend": "wazo" // information du backend
    "source_entry_id": "13"
  }

cheers !