Confirmed users
539
edits
(→Summary: add possible use cases) |
(→History: update history) |
||
| (7 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
= | = Trigger suggester = | ||
== Summary == | == Summary == | ||
| Line 9: | Line 9: | ||
There are a couple of additional use cases we'd like to cover: | There are a couple of additional use cases we'd like to cover: | ||
# Sees | # Sees keywords in the feedback and asks the user to complete a survey for more information. | ||
# Sees | # Sees keywords in the feedback and tells the user to go read our hot-fix workaround article. | ||
This project covers implementing a trigger- | This project covers implementing a trigger-rule based provider to handle these broken into several phases. | ||
Potential use cases: | Potential use cases: | ||
| Line 31: | Line 31: | ||
* June 16th, 2015: Wrote up bug 1175123 and over the course of the next week discussed it with User Advocacy and other folks | * June 16th, 2015: Wrote up bug 1175123 and over the course of the next week discussed it with User Advocacy and other folks | ||
* June 30th, 2015: Turned it into a project. | * June 30th, 2015: Turned it into a project. | ||
* August 12th, 2015: Fleshed out Phase 1 after talking with stakeholders and mulling over requirements. | |||
* September 9th, 2015: Finished critical mass of the new suggester and pushed it to production. | |||
* September 25th, 2015: Tested the new system in production with a trigger rule for a broken addon. | |||
== Phase 1 == | == Phase 1 == | ||
=== | === Architecture === | ||
==== A suggestion is ==== | |||
This phase will focus on showing suggestions that have: | This phase will focus on showing suggestions that have: | ||
| Line 40: | Line 45: | ||
* title | * title | ||
* summary | * summary | ||
* link | * link url | ||
Future phases can deal with different suggestion shapes. | |||
==== Templated links ==== | |||
The link url will allow for templating with the following values: | |||
* {LOCALE} | |||
* {PRODUCT} | |||
* {VERSION} | |||
These values will be populated from the feedback response. If values are missing (e.g. the response has no version), then they will be empty strings. | |||
==== Trigger rule criteria ==== | |||
Suggestion trigger criteria will have: | Suggestion trigger criteria will have: | ||
| Line 46: | Line 65: | ||
* one or more locales | * one or more locales | ||
* one or more products | * one or more products | ||
* one or more product versions | |||
* one or more key words/phrases | * one or more key words/phrases | ||
* have, don't have, don't care about url | |||
These will be ORd | These will be ORd inside a group (i.e. this locale OR that locale OR ...) and ANDd between groups (meets locales criteria AND meets products criteria AND ...). | ||
Here are some examples of how I think it would work: | |||
Example rule 1: | |||
locales=en-US | |||
products=Firefox | |||
keywords=rc4 | |||
This would match all feedback where the locale was "en-US" AND the product was "Firefox" AND the word "rc4" appeared in the description. | |||
Example rule 2: | |||
locales= | |||
products=Firefox OS | |||
keywords=whatsapp | |||
This would match all feedback from any locale AND the product was "Firefox OS" AND the word "whatsapp" appeared in the description. | |||
Example rule 3: | |||
locales=es,pt | |||
products=Firefox,Firefox for Android | |||
keywords=word1,word2,word3,"this is a phrase" | |||
This would match all feedback where the locale was "es" OR "pt" AND the product was "Firefox" OR "Firefox for Android" AND the word "word1", "word2", "word3" OR phrase "this is a phrase" appeared in the description. | |||
Versions might be tricky since we don't always get version information. For now, we'll treat them like locales and products, but also allow for prefix matching with a syntax like "40*" which would match all versions that start with the string "40". | |||
URL checking will be pretty basic for now and have three modes: | |||
* don't care | |||
* must have url | |||
* must *NOT* have url | |||
In a later phase, we can add domain-name matching or something like that. | |||
==== Form to create/edit triggers ==== | |||
We'll build a form allowing analyzers to add, edit and disable triggers. | We'll build a form allowing analyzers to add, edit and disable triggers. | ||
==== Tracking trigger usage ==== | |||
Further, we need to track: | Further, we need to track: | ||
* for a given trigger suggestion, how many people saw it? | * for a given trigger suggestion, how many people saw it? | ||
* for a given trigger suggestion, how many people clicked on the link? | * for a given trigger suggestion, how many people saw it and clicked on the link? | ||
FIXME: Flesh this out. | |||
Anti-goals | === Anti-goals === | ||
# suggestions that don't fit the title/link/description shape | |||
# more complicated trigger criteria | |||
# trigger criteria involving other fields or tables (email address, remote troubleshooting, etc.) | |||
# translated text: If we want to create a trigger that has text to show in French, English and Spanish, we'll have to do three separate triggers with the appropriately translated text in the title/description slots; anything more than that requires a lot of stuff we don't have right now. | |||
=== Nice-to-have === | |||
# suggestion tester: Shows last x feedback that meet the trigger criteria. This would make it easier to build new triggers. | |||
=== Requirements === | === Requirements === | ||
# implement trigger | # implement trigger suggester provider which: | ||
## looks at feedback response and all active triggers and figures out which suggestions to show | ## looks at feedback response and all active triggers and figures out which suggestions to show | ||
## posts GA event for each suggestion to show | ## posts GA event for each suggestion to show | ||
## returns suggestions wrapped in appropriate redirector urls | ## returns suggestions wrapped in appropriate redirector urls | ||
# implement trigger | # implement trigger redirector provider which: | ||
## converts redirects to urls | ## converts redirects to urls | ||
## posts GA event | ## posts GA event | ||
| Line 83: | Line 146: | ||
=== Bugs === | === Bugs === | ||
Tracker bug: https://bugzilla.mozilla.org/show_bug.cgi?id= | Tracker bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1198758 | ||
<bugzilla> | <bugzilla> | ||
{ | { | ||
"blocks": " | "blocks": "1198758" | ||
} | } | ||
</bugzilla> | </bugzilla> | ||
== Phase 2 == | == Phase 2 == | ||