demarches-simplifiees / demarches-simplifiees.fr

Dématérialiser et simplifier les démarches administratives
https://www.demarches-simplifiees.fr
GNU Affero General Public License v3.0
189 stars 90 forks source link

ETQ Usager je veux poster mon message dans la messagerie quand je réponds à une notification #1783

Closed red1bush closed 4 years ago

red1bush commented 6 years ago

Est-il possible que lorsqu'un administrateur crée une procédure, qu'il mette son adresse mail afin que l'expediteur apparaissant sur les emails auto soit l'administration et non contact@demarches-simplifiees.fr

En effet nous recevons plusieurs mail par jour de la part des usagers croyant s'adresser à leur administration. Si l'on déploie à grande echelle on risque de se retrouver submergés de ces mails inutiles. Cette idée a sûrement été discutée auparavant mais je n'ai pas trouvé d'issue la mentionnant.

A vot' dispo pr en discuter!

Red1

kemenaran commented 6 years ago

Techniquement, on peut faire mieux : ne pas afficher l'adresse email, mais permettre aux Usagers de répondre par email, et que ça aterrisse directement dans la Messagerie.

Il faudrait s'appuyer sur notre prestataire d'envoi d'emails :

Je crois que @clemenceleurent et @gregoirenovel sont en train de creuser ce sujet.

kemenaran commented 6 years ago

Un peu d'investigation et de code aujourd'hui. Ça a l'air assez clair.

  1. On déclare une URL de callback à Mailjet (via un appel d'API)
  2. Mailjet nous renvoie une adresse email unique à mettre en Reply-To
  3. Quand on veut permettre les réponses, on envoie notre email avec l'API Mailjet, en insérant l'email de réponse dans Reply-To, et l'id de dossier dans Mailjet CustomID
  4. Quand un mail de arrive sur cette adresse, Mailjet appelle notre webhook avec un payload JSON déjà parsé, et le CustomId (et éventuellement les pièces-jointes)
  5. Si le webhook renvoie une erreur (ex. 404), Mailjet réessaie d'appeler le webhook toutes les 30 secondes, pendant 10 mn.

Quelques ressources

Avancement

J'ai commencé à travailler sur une branche : tps/email-reply-hook.

gregoirenovel commented 6 years ago

Ça n'a pas été écrit donc je le rajoute ici : dans le scope de cette issue, on avait rajouté la partie "en plus de la redirection au bon endroit, en envoie un email à l'usager pour lui expliquer qu'on a bien posté son message au bon endroit, et que s'il cherchait vraiment à nous contacter, il peut répondre à cet email (envoyé donc par contact@)"

chaibax commented 6 years ago

@gregoirenovel : ça a été discuté quand?

Je ne trouve pas ce rajout pertinent, ni pour nous ni pour l'usager.

1 - ça complique les choses pour l'usager (un email a lire en plus, qui ne servira a rien la plupart du temps), alors que la feature est là pour simplifier.

2 - l'usager ne fait pas la différence entre "nous" et l'administration qui fait la démarche. En lisant HS c'est évident. On risque d'avoir donc le même souci qu'avant (réponse au l'email ),c'est contre-productif.

3 - Si l'usager a du mal a nous contacter après cette feature, on avisera à ce moment-là. N'essayons pas de corriger des problèmes que nous n'avons pas encore...

4 - On a un formulaire de contact dispo depuis notre home.

Je comprend l'idée du compromis, mais pour moi ca n'étais pas dans le scop et ca ne répond pas a un problème actuel

tchak commented 6 years ago

Je suis fortement de l'avis de @chaibax

fredZen commented 6 years ago

Assez d’accord avec @chaibax .

gregoirenovel commented 6 years ago

ça a été discuté quand?

Cet été il me semble, et il me semble avoir évoqué ce point plusieurs fois à l'oral.

ça complique les choses pour l'usager

Pour moi quand on introduit un comportement (redirection automatique vers la messagerie) qui diffère du comportement attendu (ça va dans la boite email de quelqu'un), il faut le signaler. Sinon on introduit de la confusion. Au moins le prévenir la première fois qu'il fait ça.

On risque d'avoir donc le même souci qu'avant (réponse au l'email )

Je ne vois pas pourquoi l'usager répondrait au mail qui lui dit uniquement "on a bougé ça dans ta messagerie"

Si l'usager a du mal a nous contacter après cette feature

Ce n'est pas le problème que je cherche a régler. Le problème que je chercher a régler est "faire en sorte que l'usager comprenne bien qu'on a redirigé son email vers la messagerie, pour qu'il ne fasse pas nouveau 'répondre à' sur l'email s'il ne reçoit toujours pas de réponse"

On a un formulaire de contact dispo depuis notre home.

Quand t'es connecté t'as pas accès à la home.

kemenaran commented 6 years ago

Le problème que je chercher a régler est "faire en sorte que l'usager comprenne bien qu'on a redirigé son email vers la messagerie, pour qu'il ne fasse pas nouveau 'répondre à' sur l'email s'il ne reçoit toujours pas de réponse"

Je suis d'accord. Après il y a sans doutes d'autres pistes qui permettraient d'éviter de spammer d'emails automatiques. En vrac, sans réfléchir :

gregoirenovel commented 6 years ago

Mettre un truc dans l'email "Répondez au dessus de cette ligne pour envoyer la réponse dans votre messagerie".

😂

À mon avis on peut se mettre d'accord sur 2 trucs :

  1. Si c'est possible, avoir une adresse email qui en effet est explicite (par exemple : "Notifications demarches-simplifiees.fr" <notifications-dossier-123@demarches-simplifiees.fr>)
  2. Changer le "Répondez pas à ce message allez dans la messagerie qu'on a pour le moment" par : Pour répondre à ce message, rendez-vous [dans la messagerie de votre dossier], ou répondez à cet-email et votre message sera alors directement posté dans la messagerie de votre dossier. (Presque chaud pour le mettre en tout début d'email plutot qu'en toute fin, mais c'est un peu cracra)
kemenaran commented 6 years ago

J'ai continué à jouer avec l'API de Mailjet cet aprem. État des lieux : notre webhook est bien appelé quand on envoie des emails à l'adresse de callback – mais pas quand on répond à un email existant.

J'ai envoyé un ticket au support Mailjet pour comprendre ce qui se passe.

kemenaran commented 6 years ago

Mailjet a répondu :

Indeed, there is currently a known issue causing the inbound emails not to be sent to your webhook if the Parse API address is used as a Reply-to one. Our IT teams are already working on its resolution. I will keep you informed.

Sérieusement, c'est genre le use-case 😂

Bref, je mets le sujet en pause en attendant la résolution du problème côté Mailjet.

kemenaran commented 6 years ago

Réponse de Mailjet sur quand le bug sera corrigé :

Unfortunately, I cannot tell you for sure when the fix will be released in production. However, as it is already installed on preprod, this should happen in the weeks to come. I will immediately come back to you once I have more details on this.

Bon, si c'est déjà en preprod, je vais commencer à développer le truc. De toute manière ça sera le même principe, même si on passe par un autre prestataire pour récupérer les emails entrants.

kemenaran commented 5 years ago

Mailjet dit que c'est résolu – j'ai testé, ça marche : on a bien le webhook appelé avec le contenu de l'email en faisant un "Répondre à".

En revanche on récupère aussi le contenu cité du mail précédent : il faudra séparer nous-même les deux manuellement.

Et aussi, l'identifiant que Mailjet doit nous renvoyer et qui nous permet de récupérer l'ID de dossier ne fonctionne pas, malgré mes tests. J'ai signalé le problème à Mailjet. Faudra p-ê que je contourne – genre en mettant l'id de dossier dans l'adresse de réponse (mais c'est sale).

kemenaran commented 5 years ago

Réponse de Mailjet : contrairement à ce qu'indique la doc, on ne peut pas envoyer un CustomID dans l'email, et le recevoir dans la réponse.

Une solution serait de mettre l'id de dossier dans l'adresse email de réponse : dossier-12345@messagerie-automatique.demarches-simplifiees.fr (ou dossier-<token-privé>@messagerie-automatique.demarches-simplifiees.fr)

kemenaran commented 5 years ago

Résumé de la situation. Vu les limitations de Mailjet, pour parser les emails entrants, il nous faut encore :

kemenaran commented 5 years ago

Alternatives à tout ce fourbi :

Auto-hébergement

On récupère les emails nous-même, et on parse avec la gem Mail.

Cloudmailin

Un presta externe de mails entrants, basé au UK et RGPD-compliant.

kemenaran commented 5 years ago

Finalement MailinCloud a de meilleures garanties que Helpscout (RGPD + UK). Il faut qu'on envoie un mail à @emsnytech avec le lien qui indique que le prestataire est RGPD.

kemenaran commented 5 years ago

Des nouvelles de Cloudmailin:

Yes you can activate only EU servers (AWS eu-west-1 Ireland) by using only Cloud2 for your custom domain.

When you create your MX records you just set cloud2.cloudmailin.net and don't add cloud1. We've actually removed the brightbox servers and are now fully AWS based.

On peut donc avoir les données qui restent en Europe ! \o/

kemenaran commented 5 years ago

D'autres nouvelles de Cloudmailin :

I forgot to mention, there is another option, which is to use a dedicated server which we could provision within the AWS eu-west-3 (Paris) region.

I can't offer a statement that your data will not leave Europe as that's not fully within our control, you would be responsible for things like MX records and also the domain that we post the results to. However, I'm happy to draft a statement that states that our Cloud2 servers are based within the EU and therefore our processing happens within the EU.

The privacy page and DPA also list our sub-processors being privacy shield compliant, this is normally acceptable.

chaibax commented 5 years ago

Du coup c'est bon ou pas ?

kemenaran commented 5 years ago

Mise à jour sur cette issue :

n-b commented 5 years ago

Est-ce que Rails 6 / ActionMailbox simplifierait le problème? (#4354)

LeSim commented 5 years ago

Rails 6 + helpscout ?

chaibax commented 5 years ago

@LeSim @n-b : j'avais prospecté sur le sujet il y a quelques mois. Ce qui me semblait le mieux c'était d'utiliser Mailgun (avec instance en Europe) pour la reception et le parsage des emails (" Mailgun Inbound Processing"). Ca reçoit un email, ca le parse, et ca balance un JSON sur un endpoint.

Basta.

Y juste besoin de conf un MX sur un sous domaine : mx

https://documentation.mailgun.com/en/latest/quickstart-receiving.html#add-receiving-mx-records

Ps : Mailgun a racheté Mailjet Hier. Du coup, on l'utilise déjà ;)

kemenaran commented 5 years ago

Pour l'instant le problème est mitigé par le fait qu'on ait mis en place une adresse ne-pas-repondre@demarches-simplifiees.fr.

Du coup on ne voit plus tous ces messages. Mais ils existent toujours.

L'équipe support va discuter de comment gérer ces messages au mieux.

kemenaran commented 5 years ago

En ce moment il y a bien une réponse automatique de HelpScout aux messages qui arrivent sur repondre@demarches-simplifiees.fr. Du coup ça nous semble raisonnable pour l'instant.

Sujet en pause pour l'instant. On pourra éventuellement reprendre :