Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

global: contact form #901

Closed
lnielsen opened this issue Nov 20, 2016 · 12 comments
Closed

global: contact form #901

lnielsen opened this issue Nov 20, 2016 · 12 comments

Comments

@lnielsen
Copy link
Member

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.
@jainaman224
Copy link
Contributor

Can I try to add this enhancement...?

@krzysztof
Copy link
Contributor

krzysztof commented Mar 7, 2017

@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.

@krzysztof
Copy link
Contributor

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

@krzysztof krzysztof added the GSoC label Mar 7, 2017
@jainaman224
Copy link
Contributor

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

@krzysztof
Copy link
Contributor

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

@krzysztof
Copy link
Contributor

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"

@jainaman224
Copy link
Contributor

It would be great. 👍

@lnielsen
Copy link
Member Author

lnielsen commented Mar 8, 2017

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)

@jainaman224
Copy link
Contributor

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

@krzysztof
Copy link
Contributor

krzysztof commented Mar 10, 2017

Apart from some general fixes the PR by @jainaman224 already looks really cool: #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:
    • Name (pre-filled text-field with user's full name - editable by user)
    • Email (only a label) saying "Zenodo staff will get back to you by your Zenodo email: foo@bar.baz" (not modifiable)
  • If you are not logged-in:
    • Name (empty text-field)
    • Email (empty text-field)
  • ReCaptcha test so we don't get SPAMmed
  • 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."

  • 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 team@zenodo.org

  • 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! :)

@jainaman224
Copy link
Contributor

@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

@jainaman224
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants