# Queue, agent, user et switchboard

**URL:** <https://wazo-platform.discourse.group/t/queue-agent-user-et-switchboard/1331>\
**Category:** Développement: API/Events\
**Created:** [September 22, 2023, 8:27am UTC](https://wazo-platform.discourse.group/t/queue-agent-user-et-switchboard/1331 "2023-09-22T08:27:14Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![julienfr](https://yyz2.discourse-cdn.com/free1/user_avatar/wazo-platform.discourse.group/julienfr/32/797_2.png) [@julienfr](https://wazo-platform.discourse.group/u/julienfr)\
**Post date:** [September 22, 2023, 8:27am UTC](https://wazo-platform.discourse.group/t/queue-agent-user-et-switchboard/1331/1 "2023-09-22T08:27:14Z")

</div>

Bonjour,

J’ai utilisé l’inerface wazo-ui pour créer une queue, et j’ai ajouté un utilisateur dans cette queue:

```auto
{
  "total": 1,
  "items": [
    {
      "id": 2,
      "tenant_uuid": "958ac4de-d279-4f63-882a-b0e4f8347e56",
      "name": "test",
      "label": null,
      "data_quality": false,
      "dtmf_hangup_callee_enabled": false,
      "dtmf_hangup_caller_enabled": false,
      "dtmf_transfer_callee_enabled": false,
      "dtmf_transfer_caller_enabled": false,
      "dtmf_record_callee_enabled": false,
      "dtmf_record_caller_enabled": false,
      "retry_on_timeout": false,
      "ring_on_hold": false,
      "timeout": null,
      "announce_hold_time_on_entry": false,
      "ignore_forward": false,
      "preprocess_subroutine": null,
      "music_on_hold": null,
      "wait_time_threshold": null,
      "wait_time_destination": {
        "type": "none"
      },
      "wait_ratio_threshold": null,
      "wait_ratio_destination": {
        "type": "none"
      },
      "caller_id_mode": null,
      "caller_id_name": null,
      "mark_answered_elsewhere": false,
      "enabled": true,
      "options": [
        [
          "autopause",
          "no"
        ],
        [
          "timeoutrestart",
          "no"
        ],
        [
          "periodic-announce",
          "queue-periodic-announce"
        ],
        [
          "queue-youarenext",
          "queue-youarenext"
        ],
        [
          "servicelevel",
          "0"
        ],
        [
          "strategy",
          "ringall"
        ],
        [
          "ringinuse",
          "no"
        ],
        [
          "autofill",
          "yes"
        ],
        [
          "retry",
          "5"
        ],
        [
          "announce-round-seconds",
          "0"
        ],
        [
          "maxlen",
          "0"
        ],
        [
          "random-periodic-announce",
          "no"
        ],
        [
          "timeout",
          "15"
        ],
        [
          "setinterfacevar",
          "no"
        ],
        [
          "setqueueentryvar",
          "yes"
        ],
        [
          "timeoutpriority",
          "conf"
        ],
        [
          "reportholdtime",
          "no"
        ],
        [
          "weight",
          "0"
        ],
        [
          "periodic-announce-frequency",
          "0"
        ],
        [
          "queue-reporthold",
          "queue-reporthold"
        ],
        [
          "queue-seconds",
          "queue-seconds"
        ],
        [
          "setqueuevar",
          "yes"
        ],
        [
          "memberdelay",
          "0"
        ],
        [
          "announce-position",
          "yes"
        ],
        [
          "queue-holdtime",
          "queue-holdtime"
        ],
        [
          "announce-holdtime",
          "no"
        ],
        [
          "queue-minutes",
          "queue-minutes"
        ],
        [
          "min-announce-frequency",
          "60"
        ],
        [
          "announce-position-limit",
          "5"
        ],
        [
          "wrapuptime",
          "0"
        ],
        [
          "queue-thereare",
          "queue-thereare"
        ],
        [
          "queue-callswaiting",
          "queue-callswaiting"
        ],
        [
          "queue-thankyou",
          "queue-thankyou"
        ],
        [
          "announce-frequency",
          "0"
        ]
      ],
      "links": [
        {
          "rel": "queues",
          "href": "https://10.92.100.158/api/confd/1.1/queues/2"
        }
      ],
      "extensions": [
        {
          "id": 38,
          "exten": "1100",
          "context": "interne",
          "links": [
            {
              "rel": "extensions",
              "href": "https://10.92.100.158/api/confd/1.1/extensions/38"
            }
          ]
        }
      ],
      "schedules": [],
      "members": {
        "agents": [],
        "users": [
          {
            "priority": 0,
            "uuid": "3b4711bf-1227-4222-86ef-68d15b102f99",
            "firstname": "julien",
            "lastname": "duduclx",
            "links": [
              {
                "rel": "users",
                "href": "https://10.92.100.158/api/confd/1.1/users/1"
              }
            ]
          }
        ]
      }
    }
  ]
}

```

si je regarde cet utilisateur connecté (aka session), il a la valeur:  
`agent: null`  
bon, normal, il n’est pas agent.

et:  
`user.profile.lines[0].id : 2`

dans le sdk, je trouve  
`Wazo.agentd.loginWithLineId: (lineId: number) => Promise<boolean>`

mais si je tente de connecter mon utilisateur avec:  
`Wazo.agentd.loginWithLineId(user.profile.lines[0].id)`

j’ai en réponse:  
`Error: {"error":"no such agent"}`

En regardant plus loin:

> **[Agents - Unified Communication Use Cases - Wazo Platform](https://wazo-platform.org/uc-doc/contact_center/agents/)**

il faudrait un agent …  
je créé donc un agent, mais rien dans wazo-ui pour lier mon user et mon agent

Je suis donc passé par l’api:  
[https://10.92.100.158/api/#!/agents/associate\_user\_agent](https://10.92.100.158/api/#!/agents/associate_user_agent)

une fois l’utilisateur lié à l’agent:  
`Wazo.agentd.loginWithLineId(user.profile.lines[0].id)`  
me renvoi ‘true’  
haa connecté !

mais c’est laborieux !

d’où mes questions:

1. Est-il possible de connecter l’utilisateur à la queue sans qu’il soit lié à un agent ?
2. Est-il prévu ou possible de prévoir d’avoir le ‘associate\_user\_agent’ disponible dans wazo-ui ?
3. Pourquoi un agent peut avoir plusieurs utilisateurs ? quelle utilité, quelle limite ?
4. Quelle est la différence entre queue et switchboard ?

merci !

---

<div class="post-metadata">

**Author:** ![julienfr](https://yyz2.discourse-cdn.com/free1/user_avatar/wazo-platform.discourse.group/julienfr/32/797_2.png) [@julienfr](https://wazo-platform.discourse.group/u/julienfr)\
**Post date:** [September 22, 2023, 12:28pm UTC](https://wazo-platform.discourse.group/t/queue-agent-user-et-switchboard/1331/2 "2023-09-22T12:28:13Z")

</div>

J’ai remarqué aussi que  
si on lie un user et un agent  
puis on supprime l’agent (sans les dissocier)  
alors l’user n’est plus agent mais il n’est plus possible:

1. de le dissocier à l’agent (car celui-ci n’existe plus)
2. de l’associer à un autre agent (car il est vu comme déjà associer)
3. l’utilisateur n’est donc plus un agent et ne peut plus être associer comme un agent, il faut supprimer l’utilisateur et le recréer pour pouvoir l’associer de nouveau à un agent.

ce cas doit pouvoir s’éviter avec une interface d’administration moins minimaliste.

j’ai remarqué aussi (ce qui répond à ma question 1), que si on aoute un utilisateur à la queue, alors il est automatiquement lié, et n’a pas à se connecter à la queue comme le fait un agent.

pour mes précédentes questions, je ne trouve pas de réponses …

- Est-il prévu ou possible de prévoir d’avoir le ‘associate\_user\_agent’ disponible dans wazo-ui ?
- Pourquoi un agent peut avoir plusieurs utilisateurs ? quelle utilité, quelle limite ?
- Quelle est la différence entre queue et switchboard ?

---

<div class="post-metadata">

**Author:** ![quintana](https://yyz2.discourse-cdn.com/free1/user_avatar/wazo-platform.discourse.group/quintana/32/916_2.png) [@quintana](https://wazo-platform.discourse.group/u/quintana)\
**Post date:** [September 25, 2023, 6:48pm UTC](https://wazo-platform.discourse.group/t/queue-agent-user-et-switchboard/1331/3 "2023-09-25T18:48:59Z")

</div>

Salut,

1. C’est pas prévu pour le moment, mais une PR pour le mettre est aussi bienvenue.
2. Aucun intérêt en effet, je ne me rappelle pas pourquoi on avait mis cela, as-tu essayé, n’est-ce pas un souci de doc sinon?
3. Une queue est pour le centre d’appel avec des agents, on utilise l’application queue d’Asterisk alors qu’un switchboard est une application que nous avons créé pour les besoins de standard d’accueil principalement, les fonctions/usages sont différents et techniquement, il ne fonctionne pas pareil non plus.

Sylvain

---

<div class="post-metadata">

**Author:** ![julienfr](https://yyz2.discourse-cdn.com/free1/user_avatar/wazo-platform.discourse.group/julienfr/32/797_2.png) [@julienfr](https://wazo-platform.discourse.group/u/julienfr)\
**Post date:** [September 26, 2023, 7:34am UTC](https://wazo-platform.discourse.group/t/queue-agent-user-et-switchboard/1331/4 "2023-09-26T07:34:48Z")

</div>

1. Je me dis que j’aimerai développer une interface administrateur avec le SDK, mais dans tous les cas, il serait bien de faire une PR sur wazo-ui.  
Ne connaissant pas bien Python et l’architecture du code, ça me prendrait pas mal de temps pour un petit champ en plus dans le menu agent.  
Mais ça serait un bon exercice pour pouvoir intervenir sur d’autres points si nécessaire.

2. je n’ai pas essayé, et peut-être que je dis une bêtise, car je le dis seulement car je vois que agent.users = [Array]  
le users au pluriel et le array d’objet user me disent que c’est possible.  
Il me semble l’avoir vu dans le xivo il y a 7 ans.  
Je ne me souviens plus de la raison et de l’impact, et je n’avais pas pris le risque de tester me semble-t-il.  
Mais a première vue, en imaginant les impacts, c’est plutôt une mauvaise pratique, mais qui peut sûrement trouver un intérêt dans un cas particulier.

3. Merci pour le rappel.  
la file d’attente (queue) renvoi les appels sur les agents (en fonction des règles de la queue).  
le switchboard (call center) permet de remettre un appel dans la file (hold) et décrocher un appel choisi parmis la liste d’appel en attente.  
la nuance est légère a première vue, mais oui, l’usage et les possibilités sont différentes.  
Pour le client WebRtc, il est bon de prévoir une vue bien spécifique pour traiter les appels du switchboard.

merci !!
