lex-hook
lex-hook is a library designed to make it easy to create AWS Lambda Code Hooks for Lex Bot Intents.
Consider this an Alpha-1 release. Interfaces will change.
Getting Started
The example below illustrates how to implement a Dialog and Fulfillment Code Hook for a simple Lex Bot using lex-hook
.
Install AWS Lambda function code for Order Flowers Bot Intent
Within the examples
directory there is sample code for an AWS Lambda Code Hook created using the lex-hook
library. Follow the steps below to install dependencies, compile, test, and package the code so it can be used to create
a Lambda function. Once this is done, create a Lex Bot, and configure the Bot to interact with the Lambda function just created. Finally,
from within the AWS Console, build the Lex Bot, and test it out.
-
Install.
/home/user/lex-hook/examples/order-flowers-bot$ npm install
-
Compile
/home/user/lex-hook/examples/order-flowers-bot$ npm run compile
-
Test
/home/user/lex-hook/examples/order-flowers-bot$ npm run test
-
Build using WebPack. Webpack will create a single JS file encompassing the code and all dependencies, located at
./dist/bundle/bundle.js
./home/user/lex-hook/examples/order-flowers-bot$ npm run build.
-
Create a Lambda function, and name it
orderflowers-code-hook
. -
Create a zip file containing
./dist/bundle/bundle.js
. Then, upload the zip file to theorderflowers-code-hook
Lamnbda function via the AWS Console, or via AWS CLI. -
Create Lex Bot. See https://docs.aws.amazon.com/lex/latest/dg/gs-bp-create-bot.html.
-
Test in the AWS Console.
Library Overview
In lieu of more formal documentation, the code, examples, and tests and corresponding documentation provide a good enough overview.
The source code @ ./src/index.ts
is composed of a number of logical components. These include Interfaces relevant to the library as a whole, Interfaces and classes relevant to dialog handling, and utility classes and methods.
There is a simple test @ ./tests/lex-hook.test.ts
. This serves as a simple, and admittedly incomplete test of the library itself.
Within ./examples/order-flowers-bot/src
, there is an index.ts
module that contains the Lambda entry-point function. This module uses a LexEventHandler
instance
defined within the Intent-specific ./examples/order-flowers-bot/src/order-flowers-intent.ts
module. This Intent specific module defines Dialog and Fulfillment handlers, and demonstrates using
a hook that is invoked each time a Slot value is evaluated. Finally, see ./examples/order-flowers-bot/tests/order-flowers-bot.test.ts
for an example test of event handling.
To Dos
-
Logging framework.
-
Hook-functions should return Promises, and be invoked asynchronously.
-
Enable route function to handle multiple Intents.
informational references
https://blog.logrocket.com/publishing-node-modules-typescript-es-modules/
https://itnext.io/step-by-step-building-and-publishing-an-npm-typescript-package-44fe7164964c
https://khalilstemmler.com/blogs/typescript/eslint-for-typescript/