Zenodo: global: contact form

Created on 20 Nov 2016  ·  12Comments  ·  Source: zenodo/zenodo

Add a contact form to allow for easier support management:

  • Form should ask people to include direct links and be precise. See https://github.com/support for example.
  • Contact form can automatically detect which browser and OS they are using.
Enhancement

All 12 comments

Can I try to add this enhancement...?

@jainaman224 Yes, that would actually be of huge help to our support :)

The main idea is that many people contact us (zenodo.org - the service), about common problems, which are usually:

  • Removing a record or updating a file to a record somewhere.
  • Doing something with their account.
  • Getting an error on a page (500s etc).

Very often they don't include much info (such as the mentioned OS, browser), and very often they don't specify which record they want to remove/update. Sometimes they forget to mention what is their Zenodo email (and very often it's different than the one they're writing us from).

The main idea would be to fetch and include as much of that info as possible and send it to us through the form, so

  1. Capture basic agent info (browser, OS, IP). And send it with the email.
  2. Capture the user if he's logged in and send his email + user ID in the email (form should recommend to log-in first).
  3. Text-description specifying on what information they should include:

    • Record URL or DOI if it's relevant to the problem.

    • Error ID if they get one from a page (we can easily check it on Sentry)

    • URL of a page that might be crashing for them

    • GItHub username/orgname/reponame if it's GitHub related.

The task is to implement the points 1. and 2., we can think of a nice text on the form (point 3.) together later.

This form should probably send us an email, where bottom part of the email body can include a pre-formatted string with this information.

Do I need to implement this form https://zenodo.org/support ...?

The current "/support" page is just static info without any form - it should stay like this for now.

You would need to create a new page (under e.g.: "/support-form"), where you would define some simple contact form similar to GitHubs: https://github.com/support

Here's an example of a form in Zenodo (this particular one is for deleting records by admin):

Template:
https://github.com/zenodo/zenodo/blob/master/zenodo/modules/deposit/templates/zenodo_deposit/delete.html

Form:
https://github.com/zenodo/zenodo/blob/master/zenodo/modules/deposit/forms.py

View:
https://github.com/zenodo/zenodo/blob/master/zenodo/modules/deposit/views.py#L142-L211

Another nice feature would be to include a Radio button on the form, where user can select a category of the issue, e.g.:

Technical Support, Zenodo Policies, Outreach, Other (categories to be defined later).

This info could go as a prefix to the sent email:

"[Technical Support]: The rest of the title"

It would be great. :+1:

For user-agent parsing use https://github.com/ua-parser/uap-python

A user should be able to see what information is sent to us (and probably be able to opt-out)

@lnielsen Can I include it later once a basic structure is approved...?

Apart from some general fixes the PR by @jainaman224 already looks really cool: https://github.com/zenodo/zenodo/pull/1008

To make this feature production-ready some further changes are required:

  • [ ] Use uap-python
  • [ ] There should be two variants of the form.

    • If you are logged-in, it should pre-fill and display:

    • [x] Name (pre-filled text-field with user's full name - editable by user)

    • [x] Email (only a label) saying "Zenodo staff will get back to you by your Zenodo email: [email protected]" (not modifiable)

    • If you are not logged-in:

    • [x] Name (empty text-field)

    • [x] Email (empty text-field)

  • [x] ReCaptcha test so we don't get SPAMmed
  • [x] Form should display the User-Agent information which will be sent from the user, i.e.:
To better address your problem, the following information can be sent to us (recommended) alongside with your message:
Operating system: ...
Browser: ...
(more User-Agent info)

Next to that there should be a checkbox (enabled by default) saying "[x] Send the browser and system information."

  • [x] The category should be configurable in config.py like this:
PAGES_SUPPORT_CATEGORIES = [
 ('Technical Support', "Please describe the error you are getting, include any error messages or link to screenshots which might be relevant"),
 ('File upload request', "Please include the URL of the updated file, and specify which record and file you want to replace. Please use publicly accessible URLs."),
 (...)
]

When user chooses the category, a text below is displayed, which adds some more information of what user should include in his message (depending on the category).

  • [ ] Category should show a smooth transition between the choices, ideally without too much (if any) custom javascript, for example this bootstrap element: http://getbootstrap.com/javascript/#collapse

  • [ ] A confirmation email should be sent to the user after the email has been sent successfully to us.
    This kind-of prevents the user from asking us a question and then not getting a reply because the form does not send us his message for some reason. On the form it should be stated that he should receive a confirmation email on his inbox within 20 minutes - if the does not he should retry or send us an email directly to [email protected]

  • [ ] It should be possible to upload a files alongside with the message, which should be sent to us as email attachment. Max file size should be configurable and display error for larger files suggesting to include the URL to the file instead. It shouldn't be stored anywhere, but passed over through application (memory) and sent as email attachment directly in a task.

    • [ ] Currently send in webapp process due to file serialization issues with celery. Should be fixed either by sending the raw bytes and filename and then assembling the file object inside the task.
    • [ ] Should be possible to select multiple files for sending.
    • [ ] Check if we can use some nicer drag-and-drop file selector widget.
  • [ ] Form requires some styling and working on the content (text/descriptions/types of issues to choose etc)

  • [ ] Module needs to be checked with python linters.

@jainaman224 Your contribution is already a good start, and I know that those are some extra requirements. You're more than welcome to continue working on this if you are still interested, but know that it's not mandatory to accept your first contribution! :)

@lnielsen @krzysztof I think we don't need much information from user. So, going this way would be better https://github.com/jainaman224/zenodo/blob/patch-1/zenodo/modules/pages/views.py#L57#L60. Please correct me if I am wrong.
Thank you

@lnielsen @krzysztof Why it is preferable to use uap-python ?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

virresh picture virresh  ·  7Comments

slint picture slint  ·  4Comments

bbarker picture bbarker  ·  4Comments

maurice-schleussinger picture maurice-schleussinger  ·  3Comments

bniebuhr picture bniebuhr  ·  6Comments