0.0.3 • Published 3 years ago

lex-hook v0.0.3

Weekly downloads
3
License
MIT
Repository
github
Last release
3 years ago

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.

1) Install.

    /home/user/lex-hook/examples/order-flowers-bot$ npm install

2) Compile

    /home/user/lex-hook/examples/order-flowers-bot$ npm run compile

3) Test

    /home/user/lex-hook/examples/order-flowers-bot$ npm run test

4) 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.

5) Create a Lambda function, and name it orderflowers-code-hook.

6) Create a zip file containing ./dist/bundle/bundle.js. Then, upload the zip file to the orderflowers-code-hook Lamnbda function via the AWS Console, or via AWS CLI.

7) Create Lex Bot. See https://docs.aws.amazon.com/lex/latest/dg/gs-bp-create-bot.html.

8) 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

1) Logging framework.

2) Hook-functions should return Promises, and be invoked asynchronously.

3) 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/