File: messaging.fml.yaml

package info (click to toggle)
thunderbird 1%3A143.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 4,703,968 kB
  • sloc: cpp: 7,770,492; javascript: 5,943,842; ansic: 3,918,754; python: 1,418,263; xml: 653,354; asm: 474,045; java: 183,079; sh: 111,238; makefile: 20,410; perl: 14,359; objc: 13,059; yacc: 4,583; pascal: 3,405; lex: 1,720; ruby: 999; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 69; csh: 10
file content (224 lines) | stat: -rw-r--r-- 7,621 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
---
about:
  description: Nimbus Feature Manifest for Android
  kotlin:
    package: mozilla.components.service.nimbus
    class: .messaging.FxNimbusMessaging
channels:
  - release
  - debug
features:
  nimbus-system:
    description: |
      Configuration of the Nimbus System in Android.
    variables:
      refresh-interval-foreground:
        description: |
          The minimum interval in minutes between fetching experiment
          recipes in the foreground.
        type: Int
        default: 60 # 1 hour

  messaging:
    description: |
      The in-app messaging system.

    allow-coenrollment: true

    variables:
      messages:
        description: A growable collection of messages
        type: Map<MessageKey, MessageData>
        string-alias: MessageKey
        default: {}

      triggers:
        description: >
          A collection of out the box trigger
          expressions. Each entry maps to a
          valid JEXL expression.
        type: Map<TriggerName, String>
        string-alias: TriggerName
        default: {}
      styles:
        description: >
          A map of styles to configure message
          appearance.
        type: Map<StyleName, StyleData>
        string-alias: StyleName
        default: {}

      $$surfaces:
        description: |
          A list available surfaces for this app.

          This should not be written to by experiments, and should be hidden to users.
        type: List<SurfaceName>
        string-alias: SurfaceName
        default: []

      actions:
        type: Map<ActionName, String>
        description: A growable map of action URLs.
        string-alias: ActionName
        default:
          OPEN_URL: ://open

      on-control:
        type: ControlMessageBehavior
        description: What should be displayed when a control message is selected.
        default: show-next-message
      notification-config:
        description: Configuration of the notification worker for all notification messages.
        type: NotificationConfig
        default: {}
      message-under-experiment:
        description: Deprecated in favor of `MessageData#experiment`. This will be removed in future releases.
        type: Option<MessageKey>
        default: null
      $$experiment:
        description: The only acceptable value for `MessageData#experiment`. This should not be set by experiment.
        type: ExperimentSlug
        string-alias: ExperimentSlug
        default: "{experiment}"
    defaults:

objects:
  MessageData:
    description: >
      An object to describe a message. It uses human
      readable strings to describe the triggers, action and
      style of the message as well as the text of the message
      and call to action.
    fields:
      action:
        type: ActionName
        description: >
          A URL of a page or a deeplink.
          This may have substitution variables in.
        default: OPEN_URL # This should never be defaulted.
      action-params:
        description: >
          A string map containing query parameters that will be appended to the action URL.
          This is useful for opening URLs in tabs, or specifying that the tab should be private.
          The values may have substitutions, e.g. "url": "https://example.com/id={uuid}",
          "private": "true".

          The params and their values are all determined downstream of the messaging component, by
          the embedding app's deeplink processing machinery.
        type: Map<String, String>
        default: {}
      title:
        type: Option<Text>
        description: The title text displayed to the user
        default: null
      text:
        type: Text
        description: The message text displayed to the user
        default: "" # This should never be defaulted.
      microsurvey-config:
        type: Option<MicrosurveyConfig>
        description: Optional configuration data for a microsurvey.
      is-control:
        type: Boolean
        description: Indicates if this message is the control message, if true shouldn't be displayed
        default: false
      experiment:
        type: Option<ExperimentSlug>
        description: The slug of the experiment that this message came from.
        default: null
      button-label:
        type: Option<Text>
        description: >
          The text on the button. If no text
          is present, the whole message is clickable.
        default: null
      style:
        type: StyleName
        description: >
          The style as described in a
          `StyleData` from the styles table.
        default: DEFAULT
      surface:
        description:
          The surface identifier for this message.
        type: SurfaceName
        default: homescreen
      trigger-if-all:
        type: List<TriggerName>
        description: >
          A list of strings corresponding to
          targeting expressions. The message will be
          shown if all expressions are `true`.
        default: []
      exclude-if-any:
        type: List<TriggerName>
        description: >
          A list of strings corresponding to
          targeting expressions. The message will not be
          shown if any of the expressions are `true`.
        default: [ ]
  StyleData:
    description: >
      A group of properties (predominantly visual) to
      describe the style of the message.
    fields:
      priority:
        type: Int
        description: >
          The importance of this message.
          0 is not very important, 100 is very important.
        default: 50
      max-display-count:
        type: Int
        description: >
          How many sessions will this message be shown to the user
          before it is expired.
        default: 5
  NotificationConfig:
    description: Attributes controlling the global configuration of notification messages.
    fields:
      refresh-interval:
        type: Int
        description: >
          How often, in minutes, the notification message worker will wake up and check for new
          messages.
        default: 240 # 4 hours
  MicrosurveyConfig:
    description: Attributes relating to microsurvey content.
    fields:
      utm-content:
        description: Optional "utm_content" parameter for the privacy notice URL to specify the feature being surveyed.
        type: Option<String>
        default: null
      icon:
        type: Option<Image>
        description: The icon shown in the survey.
        default: null # If null, a default will be provided.
      answers:
        description: The list of answers to present to the user e.g. "Satisfied, Dissatisfied...".
        type: List<MicrosurveyAnswer>
        default: [] # Should not be defaulted
  MicrosurveyAnswer:
    description: Attributes relating to microsurvey content.
    fields:
      ordering:
        type: Int
        description: >
          Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on.
          Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering
          used will be the same as provided by the experiment.
        default: 0
      text:
        type: Text
        description: The text for the answer.
        default: "" # This should never be defaulted.

enums:
  ControlMessageBehavior:
    description: An enum to influence what should be displayed when a control message is selected.
    variants:
      show-next-message:
        description: The next eligible message should be shown.
      show-none:
        description: The surface should show no message.