Projet

Général

Profil

Development #29829

connecteur système téléphonique générique

Ajouté par Thomas Noël il y a environ 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
16 janvier 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Un connecteur dédié à recevoir des call-start et call-stop depuis un PABX lorsqu'un agent décroche ou raccroche son téléphone.

Le connecteur maintient les appels en cours.

Il dispose d'un endpoint permettant au portail usager de savoir :
  • quels sont les appels en cours (et passés) sur le poste de l'agent
  • quels sont les appels en cours (et passés) concernant un numéro d'appelant

Fichiers

Révisions associées

Révision 154e689b (diff)
Ajouté par Thomas Noël il y a environ 5 ans

add phone calls connector (#29829)

Historique

#1

Mis à jour par Thomas Noël il y a environ 5 ans

Pour info et éventuels premières remarques, le code qui fait le job ; restent les tests à écrire pour vérifier que tout ça marche bien.

#2

Mis à jour par Thomas Noël il y a environ 5 ans

Voilà, avec les tests.

#3

Mis à jour par Frédéric Péters il y a environ 5 ans

Plus tard, pour permettre au même agent de gérer plusieurs lignes, je pense que ça sera pratique d'avoir une API pour associer un nameid à une/plusieurs lignes, et que /calls sur réception d'un nameid retourne toutes les lignes concernées.

Mais en l'état, je pense que ça va marcher ainsi.

Seul truc, peut-être ne pas inclure la durée de l'appel dans la réponse à l'API, j'étais parti sur l'idée de comparer une nouvelle réponse reçue à la réponse précédente mais avoir duration qui bouge tout le temps empêche ça.

#4

Mis à jour par Thomas Noël il y a environ 5 ans

Frédéric Péters a écrit :

Plus tard, pour permettre au même agent de gérer plusieurs lignes, je pense que ça sera pratique d'avoir une API pour associer un nameid à une/plusieurs lignes, et que /calls sur réception d'un nameid retourne toutes les lignes concernées.
Mais en l'état, je pense que ça va marcher ainsi.

Ok, je garde ça pour l'avenir.

Seul truc, peut-être ne pas inclure la durée de l'appel dans la réponse à l'API, j'étais parti sur l'idée de comparer une nouvelle réponse reçue à la réponse précédente mais avoir duration qui bouge tout le temps empêche ça.

Yep, j'avoue que j'avais posé ça pour m'aider à faire mes tests avec mes yeux de pleins de clic-clic...

Interdiff :

diff --git a/passerelle/apps/phonecalls/models.py b/passerelle/apps/phonecalls/models.py
index 75783a1..80658a0 100644
--- a/passerelle/apps/phonecalls/models.py
+++ b/passerelle/apps/phonecalls/models.py
@@ -133,17 +133,14 @@ class Call(models.Model):
         if self.end_timestamp:
             is_current = False
             end_timestamp = make_naive(self.end_timestamp)
-            duration = (self.end_timestamp - self.start_timestamp).seconds
         else:
             is_current = True
             end_timestamp = None
-            duration = (now() - self.start_timestamp).seconds
         return {
             'caller': self.caller,
             'callee': self.callee,
             'start': make_naive(self.start_timestamp),
             'end': end_timestamp,
             'is_current': is_current,
-            'duration': duration,
             'details': self.details,
         }
diff --git a/tests/test_phonecalls.py b/tests/test_phonecalls.py
index 868c8ee..bc48cd8 100644
--- a/tests/test_phonecalls.py
+++ b/tests/test_phonecalls.py
@@ -60,7 +60,6 @@ def test_phonecalls_start_stop(app, phonecalls):
     assert 'start' in resp.json['data']
     assert resp.json['data']['end'] is None
     assert resp.json['data']['is_current'] is True
-    assert 'duration' in resp.json['data']
     assert resp.json['data']['details'] == {}
     assert Call.objects.count() == 1
     call = Call.objects.first()
@@ -147,7 +146,6 @@ def test_phonecalls_start_stop(app, phonecalls):
     assert resp.json['data'][0]['caller'] == '0687654321'
     assert resp.json['data'][0]['start'] is not None
     assert resp.json['data'][0]['end'] is not None
-    assert resp.json['data'][0]['duration'] is not None
     assert resp.json['data'][0]['is_current'] is False
     assert Call.objects.count() == 2
     assert Call.objects.filter(end_timestamp__isnull=True).count() == 1

#5

Mis à jour par Frédéric Péters il y a environ 5 ans

  • Statut changé de Solution proposée à Solution validée

Ok go ainsi.

#6

Mis à jour par Thomas Noël il y a environ 5 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 154e689b3b1b7c63b2eaf2d6d61fa388b567d215
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Wed Jan 16 15:36:13 2019 +0100

    add phone calls connector (#29829)

#7

Mis à jour par Frédéric Péters il y a environ 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#8

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Statut changé de Solution déployée à Fermé

Formats disponibles : Atom PDF