Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

Session Persistence is the Web Widget’s ability to continue the session on a different page in the same domain where the widget is embedded. This functionality currently only works for pages loaded within the same tab of the browser.

In order to get the session persistence functionality, you would have to update the API keys generated for the project to include the session persistence toggle.

  • Session persistence is only supported on Digital People on HumanOS 2.4+

  • The embed code must be present on every page that you would want to embed the Digital Person on. Some websites allow for a “global embed” functionality and this feature can be used to have the widget appear on every single page on the website.

  • Using Page Reload, Page Back, and Page Forward buttons of the browser with session persistence enabled will mute the Digital Person once the page loads. This is intentional browser behavior since these actions are not “interactions with the domain” which is a policy implemented by most browsers to determine if autoplay is allowed. More information can be found in this Google article relating to autoplay.

Navigation using Content Cards

There are several ways to implement navigation if you have a persisted widget across multiple pages. As a conversation writer, you can use the Internal Links Card(s) to present links to the desired pages within your domain to the user. The user can then click on the card to navigate to the desired page. The page would reload to the new page and the Digital Person would resume session from there.

Code Block
languagejson
{
  "output": {
    "generic": [
      {
        "values": [
          {
            "text": "Cool! let me show you how i can persist on different page loads with you. \\@showcards(internallink) \nLet's go to the Use Cases page together! \n#PauseTwo\n#PauseTwo\n"
          }
        ],
        "response_type": "text",
        "selection_policy": "sequential"
      }
    ]
  },
  "context": {
    "public-internallink": {
      "id": "internalLink",
      "data": {
        "url": "https://smitstage.wpengine.com/use-cases-copy/",
        "title": "Soul Machines Use Cases",
        "imageUrl": "https://smitstage.wpengine.com/wp-content/uploads/baseEightDP-2048x2048.png",
        "description": "End-to-end creativity and collaboration platform to enhance your digital worlds with AI avatars."
      },
      "type": "internalLink"
    }
  }
}

Example Code for navigation using Internal link Card

Navigation using links on the webpage

Clicking on a link within a webpage can redirect a user to another page, in which case widget embed code must be present on the possible navigable pages to make sure session persistence is maintained.

Custom DP Response on Page Load

Digital People can be trained to introduce a page with custom responses when users are redirected to new pages. When a new page is loaded, we send a Page loaded PageMetadata as the input to the NLP. We also set pageUrl as a variable that contains the URL of the loaded page. For training the intent, use page loaded PageMetadata as the training phrase. In order to respond differently to various URLs, you will need to do a conditional response based on the pageUrl. More specific examples provided below.

These examples aim to keep a welcome sentence for the user when they first connect and to not repeat unnecessary phrases or fallback if the url URL is not set up to be recognised recognized in the corpus.

Watson

  1. In a Watson skill, set up an intent with Page Loaded Metadata as a user example:

    Image RemovedImage Added
  2. Moving to Dialog in the left hand menu, modify Welcome to also trigger if the page loaded metadata intent is triggered.

    Image RemovedImage Added
  3. Add a child node underneath welcome that recognizes the page loaded intent. 

    Image RemovedImage Added
  4. Add a child node underneath the one you just created (in the screenshot above, it’s called Navigation). Using the $pageUrl that has been sent from the widget (no need to create this anywhere else in Watson), we can change what the assistant recognizes to change the response provided like below:

    Image RemovedImage Added
  5. At the bottom of this node under “Then assistant should” change it to Jump To and select Navigation (If assistant recognizes (condition)).

  6. Repeat steps 4 and 5 for as many URLs as you would like your corpus to recognize. Each should be a child node of Navigation like this:

    Image RemovedImage Added

DialogFlow CX

  1. Click the Start Page in the flow diagram to expand it.

  2. Click the + button next to Route (above Default welcome intent)

  3. Click the Intent dropdown and select +new Intent

  4. Choose a display name (in this case Page LoadedMetadata) and add page loaded as the training phase.

    Image RemovedImage Added
  5. Save the intent

  6. Make the fulfillment of the route your greeting message and change Transition to +new Page. Choose a Page name for the new page. In this case, it’s Determine page as this is where we will implement different routes based on different URLs.

  7. Save the Route

  8. Click the new page in the flow chart to expand it.

  9. Click the + next to Routes

  10. Change the Intent to use the same as the previous route (Page LoadedMetadata)

  11. Add a Condition for if the $session.params.pageUrl = ‘[url expected]’. This can be Or, And or a custom expression depending on if you’d like other conditions.

    Image RemovedImage Added
  12. Change the fulfilment for fulfillment of what you would like your persona to say.

  13. Change the Transition Page to the same one (Determine page) so that it loops.

  14. Repeat 9-13 for as many URLs as you would like this corpus to recognize. If the URL is not found, the persona will stay quiet unless it fulfils fulfills a different route of your choosing.

  15. If you find that your persona is repeating the welcome message for urls URLs that have not been coded for then we can use parameters like so:

    1. In the Start Page, page loaded Metadata route set a condition for $session.parameter.welcome not equal to 1:

      Image RemovedImage Added
    2. In the same route, set the parameter to 1 after the route is triggered in parameter presets:

      Image RemovedImage Added
    3. If you would like to trigger a welcome message again in the same session, you will need to set the welcome parameter to something other than 1 using Parameter Presets in a route or form parameter.

Contents

Table of Contents