Project

General

Profile

Development #36921

connecteur sms orange, basculer sur zeep

Added by Frédéric Péters 6 months ago. Updated 6 days ago.

Status:
Rejeté
Priority:
Normal
Assignee:
Target version:
-
Start date:
14 Oct 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

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.

0001-sms-add-test-for-Orange-SMS-gateway-connector-36921.patch View (36.9 KB) Nicolas Roche, 28 Oct 2019 10:28 AM

API-manuel_utilisateur.txt View (135 KB) Nicolas Roche, 29 Oct 2019 08:39 PM

0001-sms-handle-return-of-unique-msgId-on-orange-connecto.patch View (909 Bytes) Nicolas Roche, 29 Oct 2019 09:43 PM

0002-sms-add-test-for-Orange-SMS-gateway-connector-36921.patch View (37.3 KB) Nicolas Roche, 29 Oct 2019 09:44 PM

0003-sms-upgrade-orange-connector-to-use-zeep-library-369.patch View (13.8 KB) Nicolas Roche, 29 Oct 2019 09:44 PM


Related issues

Related to Passerelle - Bug #9163: Ajouter une backend SMS contact everyone Fermé 01 Dec 2015
Related to Passerelle - Support #41166: Intégrer le connecteur sms-orange-rest du CD44 Rejeté 30 Mar 2020

History

#1 Updated by Nicolas Roche 5 months ago

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

#2 Updated by Nicolas Roche 5 months ago

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 Updated by Nicolas Roche 5 months ago

  • Related to Bug #9163: Ajouter une backend SMS contact everyone added

#4 Updated by Frédéric Péters 5 months ago

(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 Updated by Benjamin Dauvergne 5 months ago

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 Updated by Nicolas Roche 5 months ago

  • Status changed from Solution proposée to En cours

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

#7 Updated by Frédéric Péters 6 days ago

  • Status changed from En cours to Rejeté

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

#8 Updated by Nicolas Roche 3 days ago

  • Related to Support #41166: Intégrer le connecteur sms-orange-rest du CD44 added

Also available in: Atom PDF