Projet

Général

Profil

Development #36921

connecteur sms orange, basculer sur zeep

Ajouté par Frédéric Péters il y a plus de 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
14 octobre 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Dans #21464 qui a migré les connecteurs SMS vers l'utilisation du wrapper requests, le connecteur SMS Orange a été zappé parce qu'il utilise la vieille stack SOAPpy, qu'on gagnerait plutôt à le passer à zeep.


Fichiers


Demandes liées

Lié à Passerelle - Bug #9163: Ajouter une backend SMS contact everyoneFermé01 décembre 2015

Actions
Lié à Passerelle - Support #41166: Intégrer le connecteur sms-orange-rest du CD44 Rejeté30 mars 2020

Actions

Historique

#1

Mis à jour par Nicolas Roche il y a plus de 4 ans

Je commence par ajouter un test de non régression.

#2

Mis à jour par Nicolas Roche il y a plus de 4 ans

Beaucoup de chose à dire...

1. Premier patch :
En passant à zeep je réalise que le paramètre sortant devrait être unique.

Paramètre de sortie Type Description
WSSendReport msgId Chaîne Identifiant de diffusion.
<complexType name="WSSendReport">
    <sequence>
     <element name="msgId" nillable="true" type="soapenc:string"/>
    </sequence>
   </complexType>

2. Second patch :
Un tests de non régression écrit avec suds (mais sans réelle connexion à orange)

3. Troisième patch :
La migration vers zeep.

Je suis coincé et ne peux pas porter sur zeep sans changer le message SOAP.

Actuellement, suds envoie des tags HTML vide pour les éléments booléen non renseignés bien que n'ayant pas l'attribut nillable="true".
wsdl :

     <complexType name="WSAdvancedMessage">
        <sequence>
        ...
          <element name="validFaxReplyTo" type="xsd:boolean"/>
          <element name="validFormatMailReplyTo" type="xsd:boolean"/>
          <element name="validMaxStartCall" type="xsd:boolean"/>
          <element name="validMinStartCall" type="xsd:boolean"/>
          <element name="validSmsReplyTo" type="xsd:boolean"/>
          <element name="validTelReplyTo" type="xsd:boolean"/>

message soap envoyé :
<ns0:wsAdvancedMessage>
...
  <ns0:validFaxReplyTo/>
  <ns0:validFormatMailReplyTo/>
  <ns0:validMaxStartCall/>
  <ns0:validMinStartCall/>
  <ns0:validSmsReplyTo/>
  <ns0:validTelReplyTo/>

Avec Zeep, on ne peut pas (un booléen est soit vrai soit faux)
On doit choisir entre :
  • Renseigner une valeur

D'après API-manuel_utilisateur.doc (archivé dans #8428) que j'ai du éxhumer avec antiword.
(l'API semble avoir évolué en REST mais qui n'a plus grand chose à voir :
https://contact-everyone.orange-business.com/api/docs/guides/?shell#6-declencher-une-diffusion-creer-une-diffusion-sms)
Je devine que ces option permettent de désactiver les exceptions relatives à l'argument relatif (ex: validFaxReplyTo à False : désactive la validation de faxReplyTo)

Or ces champs sont 'nillable="true"' et majoritairement nous ne les utilisons pas.
  • faxReplyTo -> Pour usage ultérieur
  • mailReplyTo -> Adresse e-mail de retour
  • startCall -> Date de début de diffusion
  • smsReplyTo -> Nom émetteur sms personnalisé
  • telReplyTo -> Numéro présenté

Pour notre connecteur, on utilise seulement smsReplyTo.
C'est le seul paramètre dont l'éventuelle erreur validation n'est pas décrite.
La validation semble lié à des contraintes de taille min et/ou max de caractères.
ex:

|Paramètre     |Description                |Type        |Requis|Contraintes         |
|d'entrée      |                           |            |      |                    |
|smsReplyTo    |Nom émetteur sms           |Chaîne      |Non   |11 caractères       |
|              |personnalisé (souscription |            |      |maximum             |
|              |option nécessaire, valeur  |            |      |                    |
|              |par défaut)                |            |      |                    |

Tout ça pour dire qu'il me semblerais indolore de passer ces booléens à vrai ou faux.

Dans tous les cas il faudrait que j’appelle "en vrai" l'API pour valider l'option choisie.

4. Enfin,

  • J'ai supprimé la propriété "verify", qui n'est plus nécessaire pour passer les tests.
       def verify(self):
            # Do not break if certificate is not updated
    
  • Il manque la définition de la fonction abstraite check_status(), peut-être que le endpoint "about" ferait l'affaire.
#3

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Lié à Bug #9163: Ajouter une backend SMS contact everyone ajouté
#4

Mis à jour par Frédéric Péters il y a plus de 4 ans

(l'API semble avoir évolué en REST mais qui n'a plus grand chose à voir :

Ça me semble alors inutile de faire un travail de portage vers la même obsolète API, plutôt faire le travail pour utiliser la nouvelle API d'Orange.

#5

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

Juste pour dire que je n'ai trouvé qu'une instance sur notre SaaS de ce connecteur à Fondettes et qu'on ne dispose pas d'identifiants pour la nouvelle API (login/mdp pour obtenir un jeton OAuth2 alors que là c'est un certificat SSL):

bdauvergne@passerelle:~$ cat /tmp/search-orange.py 
from passerelle.apps.orange.models import OrangeSMSGateway
from django.db import connection

if OrangeSMSGateway.objects.exists():
    print connection.tenant.domain_url, OrangeSMSGateway.objects.values()
bdauvergne@passerelle:~$ sudo -u passerelle passerelle-manage tenant_command runscript --all-tenants /tmp/search-orange.py 
passerelle-fondettes.entrouvert.com <InheritanceQuerySet [{'keystore': u'orange/fondettes2_XYrecSw.pem', 'description': u'orange', u'id': 1, 'slug': u'orange', 'title': u'Orange'}]>

Donc au minimum il faudrait prendre contact avec Fondettes pour obtenir des identifiants si on souhaite aller plus loin.

#6

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Statut changé de Solution proposée à En cours

Brice me dit que s'il y a besoin il les recontacte.

#7

Mis à jour par Frédéric Péters il y a presque 4 ans

  • Statut changé de En cours à Rejeté

Orange ne fournit plus ce service, il faudrait intégrer leur nouvelle API. (le CD44 a une implémentation).

#8

Mis à jour par Nicolas Roche il y a presque 4 ans

  • Lié à Support #41166: Intégrer le connecteur sms-orange-rest du CD44 ajouté

Formats disponibles : Atom PDF