Employee Support Bot
At some point human-human interaction becomes invaluable: it's immediate and provides a clear sense of progress to the customer. The goal of this project is to provide a front-end to that interaction by gathering data from the user, answering any simple questions, and connecting them to an available agent.
Rather than customers calling into an automated system from the get-go and being placed on hold, they begin with chatting with a bot in an attempt to diagnose the nature of the problem. If it's a quick question (e.x. "what are your hours?"), the bot can simply answer. When the bot has identified the nature of the question and which support staff line would be most appropriate to handle it, it will notify the user that it has queued up their number to be addressed by a human staff member and will be called back.
Project Scope & Context
An enterprise application with a private integration into a company's Slack channel:
- Bot Intent Specifications
- Contacting HR
- Employee would initiate a ticket via the bot
- General info or personal file request
- Nature (HR: Payroll, health, etc.)
- Once the intent of the ticket is identified, store the state as
pending response
- The user is prompted that they will be placed in queue and contacted regarding their ticket via phone
- User can query for their state and estimated fulfillment time
- User can request phone or textual response
- Can provide "in the meantime" resources
- Can cancel request
- Distinct support staff bot to dequeue tickets, get a summary of the request, and initiate a fulfillment call.
A high level system diagram showcasing the Amazon Lex intents, associated data slots, and key Lambda functions.
Key Dependencies
- claudia - A JS framework to help create and deploy Node.js projects to AWS Lambda and API Gateway.
- AWS Javascript SDK
- DynamoDB Document Javascript SDK
Installation & Deployment
- Clone this project.
- Create an AWS profile named
claudia
(used inpackage.json
scripts) with the following IAM programmatic access permissions:- AWSLambdaFullAccess
- IAMFullAccess
- AmazonAPIGatewayAdministrator
- Add the profile keys to
.aws/credentials
(Reference) - Create a
employee-support-executor
IAM role with the AmazonDynamoDBFullAccess policy. - Install node 6.10.* to match the Lambda execution environment. Use nvm to manage multiple node versions, if needed.
- Make sure you have npm installed globally.
- In the command prompt run the following commands.
$ cd `project-directory`
$ npm install
- To create all of the cluadia configurations and deploy the Lambda functions with the default config specified in
package.json
.
$ npm run create
- To synchronize any changes to the respective Lambda functions.
Future Work
- Addressing potential privacy concerns (e.x. scheduling a call with someone else's phone number or looking up if someone has a scheduled call)
- Integrating with Amazon Cognito for user-specific actions and persistence
- Support for Amazon Connect contact centers integrations
References
AWS Lex
- Amazon Lex - Lambda Function Input Event and Response Format
- Lex & Alexa Slot Type Reference
- Integrating an Amazon Lex Bot with Slack