Audio Reflecto Bot
Tags: octograd2020, githubsdp
Published: 2020-05-20 18:08:59

## My Final Project
Motivational Interviewing (MI) is a collaborative therapeutic approach for strengthening a person’s own motivation and commitment to change for the better. The goal of the project was to build a voice-only bot that engages the user in a conversation based on MI to help them align their values and actions, which all people aspire to have in their daily lives. Reflecto Bot meets the project objectives of being efficient, effective, pleasant, and ethical (based on user feedback and adherence to Canada’s privacy act, PIPEDA, and Ontario’s health information act, PHIPA) and the constraint of being implemented on an existing voice framework.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/kzvontsxtfvm0o0bqnwg.png)

## Demo Link
https://drive.google.com/file/d/15qreKhQ-ZqyfJ6qc1jJkTx74Y4JT8XM4/view?usp=sharing

## Link to Code
https://github.com/singh264/Audio-Reflecto-Bot

## How I built it (what's the stack? did I run into issues or discover something new along the way?)
Reflecto Bot relies on the Amazon Alexa platform. The user started the process by speaking to an Alexa-enabled device, like an Amazon Echo Dot. A key component of Reflecto Bot is the Alexa Skill, which holds our language model. The language model uses Alexa’s NLP system maps the user’s speech to a set of our predefined intents. To determine what Reflecto Bot will respond to the user, we rely on an Amazon Lambda Function, which is the service where our backend Node.js code resides. The Lambda Function contains a handler for each intent that is defined in our language model. In order to maintain the transcript of the conversation, our Lambda Function connects to an Amazon DynamoDB database. The Lambda Function also invokes Pandorabot’s SmallTalk chatbot called Rosie. We use Rosie’s Artificial Intelligence Markup Language (AIML) library, to categorize the users' responses, and specify how the chatbot should respond more intelligently.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/nj9qrd8ygnoz1r2x0w2t.png)

Reflecto Bot comprises five modules: Introduction and Values Categorizer (to obtain the user’s values and their importances), Actions Gatherer (to obtain the user’s actions and their performance frequencies or time), Alignment (to compute alignment between the values and actions based on their importances and frequencies), Discussion (which is 15 fixed MI questions along with dynamic Pandorabots for unaligned values), and finally User Feedback (to help the developers improve Reflecto Bot).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/czd76q9ccb3d5chmbw9r.png)

## Additional Thoughts / Feelings / Stories

After obtaining the necessary ethics approval from the University of Toronto's faculty of Electrical and Computer Engineering, user tests were conducted with ten people. The average numerical scores (out of 10) from the user tests were: commitment to change after using Reflecto Bot: 7, naturalness of conversation: 5.3, and satisfaction: 5.6. Users had differing opinions on the conversation’s length depending on how many values they chose. In general, users liked the thought-provoking questions and dynamic Pandorabots responses, but sometimes the responses were off-topic. Reflecto Bot is publicly deployed on the Alexa Skills Store and is accessible to anyone with an Alexa device or the Amazon Alexa mobile app.

Here is the design fair poster that my team and I created:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/blzsudzkieq76a6t8gmn.png)