messaging.fml.yaml (7621B)
1 --- 2 about: 3 description: Nimbus Feature Manifest for Android 4 kotlin: 5 package: mozilla.components.service.nimbus 6 class: .messaging.FxNimbusMessaging 7 channels: 8 - release 9 - debug 10 features: 11 nimbus-system: 12 description: | 13 Configuration of the Nimbus System in Android. 14 variables: 15 refresh-interval-foreground: 16 description: | 17 The minimum interval in minutes between fetching experiment 18 recipes in the foreground. 19 type: Int 20 default: 60 # 1 hour 21 22 messaging: 23 description: | 24 The in-app messaging system. 25 26 allow-coenrollment: true 27 28 variables: 29 messages: 30 description: A growable collection of messages 31 type: Map<MessageKey, MessageData> 32 string-alias: MessageKey 33 default: {} 34 35 triggers: 36 description: > 37 A collection of out the box trigger 38 expressions. Each entry maps to a 39 valid JEXL expression. 40 type: Map<TriggerName, String> 41 string-alias: TriggerName 42 default: {} 43 styles: 44 description: > 45 A map of styles to configure message 46 appearance. 47 type: Map<StyleName, StyleData> 48 string-alias: StyleName 49 default: {} 50 51 $$surfaces: 52 description: | 53 A list available surfaces for this app. 54 55 This should not be written to by experiments, and should be hidden to users. 56 type: List<SurfaceName> 57 string-alias: SurfaceName 58 default: [] 59 60 actions: 61 type: Map<ActionName, String> 62 description: A growable map of action URLs. 63 string-alias: ActionName 64 default: 65 OPEN_URL: ://open 66 67 on-control: 68 type: ControlMessageBehavior 69 description: What should be displayed when a control message is selected. 70 default: show-next-message 71 notification-config: 72 description: Configuration of the notification worker for all notification messages. 73 type: NotificationConfig 74 default: {} 75 message-under-experiment: 76 description: Deprecated in favor of `MessageData#experiment`. This will be removed in future releases. 77 type: Option<MessageKey> 78 default: null 79 $$experiment: 80 description: The only acceptable value for `MessageData#experiment`. This should not be set by experiment. 81 type: ExperimentSlug 82 string-alias: ExperimentSlug 83 default: "{experiment}" 84 defaults: 85 86 objects: 87 MessageData: 88 description: > 89 An object to describe a message. It uses human 90 readable strings to describe the triggers, action and 91 style of the message as well as the text of the message 92 and call to action. 93 fields: 94 action: 95 type: ActionName 96 description: > 97 A URL of a page or a deeplink. 98 This may have substitution variables in. 99 default: OPEN_URL # This should never be defaulted. 100 action-params: 101 description: > 102 A string map containing query parameters that will be appended to the action URL. 103 This is useful for opening URLs in tabs, or specifying that the tab should be private. 104 The values may have substitutions, e.g. "url": "https://example.com/id={uuid}", 105 "private": "true". 106 107 The params and their values are all determined downstream of the messaging component, by 108 the embedding app's deeplink processing machinery. 109 type: Map<String, String> 110 default: {} 111 title: 112 type: Option<Text> 113 description: The title text displayed to the user 114 default: null 115 text: 116 type: Text 117 description: The message text displayed to the user 118 default: "" # This should never be defaulted. 119 microsurvey-config: 120 type: Option<MicrosurveyConfig> 121 description: Optional configuration data for a microsurvey. 122 is-control: 123 type: Boolean 124 description: Indicates if this message is the control message, if true shouldn't be displayed 125 default: false 126 experiment: 127 type: Option<ExperimentSlug> 128 description: The slug of the experiment that this message came from. 129 default: null 130 button-label: 131 type: Option<Text> 132 description: > 133 The text on the button. If no text 134 is present, the whole message is clickable. 135 default: null 136 style: 137 type: StyleName 138 description: > 139 The style as described in a 140 `StyleData` from the styles table. 141 default: DEFAULT 142 surface: 143 description: 144 The surface identifier for this message. 145 type: SurfaceName 146 default: homescreen 147 trigger-if-all: 148 type: List<TriggerName> 149 description: > 150 A list of strings corresponding to 151 targeting expressions. The message will be 152 shown if all expressions are `true`. 153 default: [] 154 exclude-if-any: 155 type: List<TriggerName> 156 description: > 157 A list of strings corresponding to 158 targeting expressions. The message will not be 159 shown if any of the expressions are `true`. 160 default: [ ] 161 StyleData: 162 description: > 163 A group of properties (predominantly visual) to 164 describe the style of the message. 165 fields: 166 priority: 167 type: Int 168 description: > 169 The importance of this message. 170 0 is not very important, 100 is very important. 171 default: 50 172 max-display-count: 173 type: Int 174 description: > 175 How many sessions will this message be shown to the user 176 before it is expired. 177 default: 5 178 NotificationConfig: 179 description: Attributes controlling the global configuration of notification messages. 180 fields: 181 refresh-interval: 182 type: Int 183 description: > 184 How often, in minutes, the notification message worker will wake up and check for new 185 messages. 186 default: 240 # 4 hours 187 MicrosurveyConfig: 188 description: Attributes relating to microsurvey content. 189 fields: 190 utm-content: 191 description: Optional "utm_content" parameter for the privacy notice URL to specify the feature being surveyed. 192 type: Option<String> 193 default: null 194 icon: 195 type: Option<Image> 196 description: The icon shown in the survey. 197 default: null # If null, a default will be provided. 198 answers: 199 description: The list of answers to present to the user e.g. "Satisfied, Dissatisfied...". 200 type: List<MicrosurveyAnswer> 201 default: [] # Should not be defaulted 202 MicrosurveyAnswer: 203 description: Attributes relating to microsurvey content. 204 fields: 205 ordering: 206 type: Int 207 description: > 208 Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. 209 Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering 210 used will be the same as provided by the experiment. 211 default: 0 212 text: 213 type: Text 214 description: The text for the answer. 215 default: "" # This should never be defaulted. 216 217 enums: 218 ControlMessageBehavior: 219 description: An enum to influence what should be displayed when a control message is selected. 220 variants: 221 show-next-message: 222 description: The next eligible message should be shown. 223 show-none: 224 description: The surface should show no message.