unicef / iogt

BSD 2-Clause "Simplified" License
25 stars 36 forks source link

Dynamic, programmable web experiences on IoGT powered by RapidPro #600

Open cbunicef opened 3 years ago

cbunicef commented 3 years ago

As an ADMINISTRATOR I would like to design non-linear informational, educational, storytelling, training, etc experiences that are tailored to users' inputs and appear as web pages. There is evidence that storytelling, including digital and non-linear, is an effective method for behavior change. Similarly there is evidence that customizing content to users based on their inputs is effective in increasing engagement with websites.

As an ADMIN I would like to be able to design more complex interactions between users and IoGT, including:

  1. Fully branched survey design
  2. Dynamic text on pages
  3. Setting and displaying variables in text
  4. Fully programmable experiences

As a UNICEF ADMIN I would like to be able to programme these interactions through a powerful and well-adopted platform.

As a USER I would like content I see on IoGT to be more engaging, responsive to my inputs, and customized for me.

This could be accomplished through a RapidPro integration, where messages appear as web pages with input or response options.

A simple implementation: Messages could combine one image + text and be displayed simply as a web page, with "Quick Reply" or input options at the bottom.

More powerful implementation: Add some script elements that can be interpreted by IoGT. One possibility would be markdown support, another possibility is HTML support. There could be some elements that are unique to IoGT, eg [page-button page="1000"] is interpreted to a Page Button element leaving to Page 1000.

cbunicef commented 2 years ago

@volloholic @ChrisMarsh82 @istride per our conversations about the "Cranky Uncle" misinformation tool and RapidPro connection.

cbunicef commented 1 year ago

Here is a proposed process, utilizing the existing RapidPro connection built for the chat box:

  1. User clicks into a new type of Page, eg Dynamic Web Section/Page/something else (example name)
  2. This initiates a connection with RapidPro and sends a message to RapidPro initiating a flow
  3. RapidPro responds with a message to the IoGT server
  4. Some light processing is done on the message to convert to IoGT formatting and elements, eg buttons
  5. The processed output is displayed as an IoGT Page
  6. Many of the links on that Page, rather than send the user to a different area of the site, would initiate a message that is sent to RapidPro
  7. Repeat from 3