https://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342019-10-28T09:44:46ZRedmine Entr’ouvertPasserelle - Development #36921: connecteur sms orange, basculer sur zeephttps://dev.entrouvert.org/issues/36921?journal_id=1988672019-10-28T09:44:46ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/38475">0001-sms-add-test-for-Orange-SMS-gateway-connector-36921.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/38475/0001-sms-add-test-for-Orange-SMS-gateway-connector-36921.patch">0001-sms-add-test-for-Orange-SMS-gateway-connector-36921.patch</a> ajouté</li><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>Solution proposée</i></li><li><strong>Assigné à</strong> mis à <i>Nicolas Roche (absent jusqu'au 3 avril)</i></li><li><strong>Patch proposed</strong> changé de <i>Non</i> à <i>Oui</i></li></ul><p>Je commence par ajouter un test de non régression.</p> Passerelle - Development #36921: connecteur sms orange, basculer sur zeephttps://dev.entrouvert.org/issues/36921?journal_id=1992982019-10-29T20:45:45ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/38567">API-manuel_utilisateur.txt</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/38567/API-manuel_utilisateur.txt">API-manuel_utilisateur.txt</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/38568">0001-sms-handle-return-of-unique-msgId-on-orange-connecto.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/38568/0001-sms-handle-return-of-unique-msgId-on-orange-connecto.patch">0001-sms-handle-return-of-unique-msgId-on-orange-connecto.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/38569">0002-sms-add-test-for-Orange-SMS-gateway-connector-36921.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/38569/0002-sms-add-test-for-Orange-SMS-gateway-connector-36921.patch">0002-sms-add-test-for-Orange-SMS-gateway-connector-36921.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/38570">0003-sms-upgrade-orange-connector-to-use-zeep-library-369.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/38570/0003-sms-upgrade-orange-connector-to-use-zeep-library-369.patch">0003-sms-upgrade-orange-connector-to-use-zeep-library-369.patch</a> ajouté</li></ul><p>Beaucoup de chose à dire...</p>
<p><ins>1. Premier patch :</ins><br />En passant à zeep je réalise que le paramètre sortant devrait être unique.</p>
<table>
<tr>
<td>Paramètre de sortie </td>
<td>Type </td>
<td>Description </td>
</tr>
<tr>
<td>WSSendReport </td>
<td>msgId </td>
<td>Chaîne </td>
<td>Identifiant de diffusion.</td>
</tr>
</table>
<pre>
<complexType name="WSSendReport">
<sequence>
<element name="msgId" nillable="true" type="soapenc:string"/>
</sequence>
</complexType>
</pre>
<p><ins>2. Second patch :</ins><br />Un tests de non régression écrit avec suds (mais sans réelle connexion à orange)</p>
<p><ins>3. Troisième patch :</ins><br />La migration vers zeep.</p>
<p>Je suis coincé et ne peux pas porter sur zeep sans changer le message SOAP.</p>
<p>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".<br />wsdl :<br /><pre>
<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"/>
</pre><br />message soap envoyé :<br /><pre>
<ns0:wsAdvancedMessage>
...
<ns0:validFaxReplyTo/>
<ns0:validFormatMailReplyTo/>
<ns0:validMaxStartCall/>
<ns0:validMinStartCall/>
<ns0:validSmsReplyTo/>
<ns0:validTelReplyTo/>
</pre></p>
Avec Zeep, on ne peut pas (un booléen est soit vrai soit faux)<br />On doit choisir entre :
<ul>
<li>Ne pas inclure le tag HTML<br /> <a class="external" href="https://python-zeep.readthedocs.io/en/master/datastructures.html#skipvalue">https://python-zeep.readthedocs.io/en/master/datastructures.html#skipvalue</a></li>
</ul>
<ul>
<li>Envoyer un tag null<br /> <a class="external" href="https://www.w3.org/TR/xmlschema11-1/#xsi_nil">https://www.w3.org/TR/xmlschema11-1/#xsi_nil</a></li>
</ul>
<ul>
<li>Renseigner une valeur</li>
</ul>
<p>D'après API-manuel_utilisateur.doc (archivé dans #8428) que j'ai du éxhumer avec antiword.<br />(l'API semble avoir évolué en REST mais qui n'a plus grand chose à voir :<br /><a class="external" href="https://contact-everyone.orange-business.com/api/docs/guides/?shell#6-declencher-une-diffusion-creer-une-diffusion-sms">https://contact-everyone.orange-business.com/api/docs/guides/?shell#6-declencher-une-diffusion-creer-une-diffusion-sms</a>)<br />Je devine que ces option permettent de désactiver les exceptions relatives à l'argument relatif (ex: validFaxReplyTo à False : désactive la validation de faxReplyTo)</p>
Or ces champs sont 'nillable="true"' et majoritairement nous ne les utilisons pas.
<ul>
<li>faxReplyTo -> Pour usage ultérieur</li>
<li>mailReplyTo -> Adresse e-mail de retour</li>
<li>startCall -> Date de début de diffusion</li>
<li>smsReplyTo -> Nom émetteur sms personnalisé</li>
<li>telReplyTo -> Numéro présenté</li>
</ul>
<p>Pour notre connecteur, on utilise seulement smsReplyTo.<br />C'est le seul paramètre dont l'éventuelle erreur validation n'est pas décrite.<br />La validation semble lié à des contraintes de taille min et/ou max de caractères.<br />ex:<br /><pre>
|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) | | | |
</pre><br />Tout ça pour dire qu'il me semblerais indolore de passer ces booléens à vrai ou faux.</p>
<p>Dans tous les cas il faudrait que j’appelle "en vrai" l'API pour valider l'option choisie.</p>
<p><ins>4. Enfin,</ins></p>
<ul>
<li>J'ai supprimé la propriété "verify", qui n'est plus nécessaire pour passer les tests.<br /><pre>
def verify(self):
# Do not break if certificate is not updated
</pre></li>
<li>Il manque la définition de la fonction abstraite check_status(), peut-être que le endpoint "about" ferait l'affaire.</li>
</ul> Passerelle - Development #36921: connecteur sms orange, basculer sur zeephttps://dev.entrouvert.org/issues/36921?journal_id=1992992019-10-29T20:48:44ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Lié à</strong> <i><a class="issue tracker-1 status-5 priority-4 priority-default closed" href="/issues/9163">Bug #9163</a>: Ajouter une backend SMS contact everyone</i> ajouté</li></ul> Passerelle - Development #36921: connecteur sms orange, basculer sur zeephttps://dev.entrouvert.org/issues/36921?journal_id=1993012019-10-29T20:53:02ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><blockquote>
<p>(l'API semble avoir évolué en REST mais qui n'a plus grand chose à voir :</p>
</blockquote>
<p>Ç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.</p> Passerelle - Development #36921: connecteur sms orange, basculer sur zeephttps://dev.entrouvert.org/issues/36921?journal_id=1993192019-10-29T22:56:25ZBenjamin Dauvergne
<ul></ul><p>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):</p>
<pre>
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'}]>
</pre>
<p>Donc au minimum il faudrait prendre contact avec Fondettes pour obtenir des identifiants si on souhaite aller plus loin.</p> Passerelle - Development #36921: connecteur sms orange, basculer sur zeephttps://dev.entrouvert.org/issues/36921?journal_id=1994042019-10-30T09:54:25ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Statut</strong> changé de <i>Solution proposée</i> à <i>En cours</i></li></ul><p>Brice me dit que s'il y a besoin il les recontacte.</p> Passerelle - Development #36921: connecteur sms orange, basculer sur zeephttps://dev.entrouvert.org/issues/36921?journal_id=2231902020-03-27T08:50:26ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Statut</strong> changé de <i>En cours</i> à <i>Rejeté</i></li></ul><p>Orange ne fournit plus ce service, il faudrait intégrer leur nouvelle API. (le CD44 a une implémentation).</p> Passerelle - Development #36921: connecteur sms orange, basculer sur zeephttps://dev.entrouvert.org/issues/36921?journal_id=2237582020-03-30T13:08:52ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Lié à</strong> <i><a class="issue tracker-3 status-6 priority-4 priority-default closed" href="/issues/41166">Support #41166</a>: Intégrer le connecteur sms-orange-rest du CD44 </i> ajouté</li></ul>