Naming Conventions

  1. The Name key is one that allows us to differentiate between types of inputs. The following types are valid
    1. End of Form* - prefixed by eof__
    2. X percent completion* - prefixed by comp_X__
    3. All other normal ODK related
  2. Common Hidden fields provided are (to be added manually by form creator)
    1. isUserRegistered
  3. Managing Choices
    1. Label should always be in the following format - 1. <Name of the option>

Regex

For verifying a specific answer by the user. This could either be done for validations like phone number or for assessments, this can be used to verify if the answer for a particular question is correct or not.

Hidden Fields

Hidden fields are used for

  1. Prefilling the user context
  2. Aggregating and Calculating scores

Global Menu

  1. The Global form is part of a global Bot.
  2. The formID should be global_menu. Any form that has this formID would be treated differently.
  3. All flows that lead to end of the form need to be explicitly mentioned by prefixing the Name with eof_. So for example if on selecting the options, it exits from global form to normal form, opt_gender_criteria should be changed to eof__opt_gender_criteria. (Note the use of double underscore)
  4. The Global form needs to know to which Conversation Logic it needs to go next. This is done by post fixing the next linked BotID to the Name. So for example in point 3, it would get modified to eof_44a9df72-3d7a-4ece-94c5-98cf26307324__opt_gender_criteria. (Note the use of double underscore)

Form Update

Form updates are brute forced and if the previous xPath is not found, the user is sent back to the first question.