AndPlus acquired by expert technology adviser and managed service provider, Ensono. Read the full announcement

DELIVERABLES

A web application that integrates with the AWS SDK for Javascript to communicate with Amazon Lex.

Technologies Used

      • Amazon Lex
      • Amazon Lambda
      • AWS SDK for Javascript
      • React, Typescript & Brunch

TECHNICAL DEEP-DIVE

a diagram
Core ML vs. Tensorflow Lite
READ NOW

 

The AndPlus Innovation Lab is where our passion projects take place. Here, we explore promising technologies, cultivate new skills, put novel theories to the test and more — all on our time (not yours).

core ML and tensorflow lite machine learning models built in house at AndPlus
machine learning is being researched at AndPlus as we explore the future of big data management

 

Our Research

Amazon Lex became an immediate front-runner for the platform to help build the chatbot. The ease of integration and development was appealing. Having the same natural language processing and the same deep learning technologies that power Amazon Alexa was also an exciting factor that helped solidify Lex as the platform of choice. Amazon Lex provides a very similar console for developing Intents, Utterances and Slots and a straight-forward way to test the bot within the console as well. Those already familiar with the console-style configuration of Amazon Alexa skills will feel very comfortable working within the Lex console. Amazon Lex provides integration points within the pipeline for deferring data validation to an Amazon Lambda function. You can even use the same Lambda function to handle Intent Fulfillment. 

Defining the Utterances was probably the trickiest part of developing the bot within Lex. The samples and examples all started out with very specific, complete sentences for Utterances. In testing, complete sentences appear to limit the flexibility the user has regarding invoking the bot. Using shorter, keyword-focused Utterances appears to provide more flexibility and even allows for some Utterances to be combined. Utterances could also be defined to collect some of the slot data as well, as shown below.

Slots and Slot Types are how the bot gathers data from the user. The questions and interactions to the user are outlined to fill-in these slots with data related to the defined data type. Amazon has created a few built-in data types that cover common data you'd typically want to collect from a user (AMAZON.DATE and AMAZON.TIME for dates and times, for example). If more flexibility is needed, Amazon allows for defining custom slot types. These slot types can be either Expandable or Restrictive. Expandable will use the defined slot values as training data and fill the slot with the value provided by the user, if the user value is similar to the slot values. This allows for a non-exhaustive list of acceptable keywords to be defined. 

example of a conversation with a chatbot
two screenshots of a report

 

Deliverable

The bot was built using the Amazon Lex console to work through defining the Utterances, Slots and Slot Types necessary to support making an appointment with an AndPlus employee. An Amazon Lambda Javascript function was created to handle some basic date/time validation and request fulfillment. For fulfillment, the Lambda function simply reformatted a "Thank You" message (which can be handled by the Lex console), but the Lambda function would allow for integrating with an external API (to actually save the appointment and even check for scheduling conflicts during validation).

Amazon provides an AWS SDK in several languages, so the Javascript SDK was easy to add to a React web application. The AWS SDK provides a LexRuntime object for interacting with the Lex console.

 

How it Was Done

  • Create a bot in Amazon Lex
  • Define utterances, slots, slot types and interactions
  • Set up bot access with Amazon Cognito
  • Implement Javascript function in AWS Lambda for input validation and fulfillment
  • Integrate AWS SDK into React web application
  • Interact with bot

 

chris-martin

CHRIS MARTIN

AndPlus understands the communication between building level devices and mobile devices and this experience allowed them to concentrate more on the UI functions of the project. They have built a custom BACnet MS/TP communication stack for our products and are looking at branching to other communication protocols to meet our market needs. AndPlus continues to drive our product management to excellence, often suggesting more meaningful approaches to complete a task, and offering feedback on UI and Human Interface based on their knowledge from past projects.

Get in touch

LET’S BUILD SOMETHING AWESOME. TOGETHER.