Giter VIP home page Giter VIP logo

veeshostak / android-aws-architecture-components-dialogflow-chatbot Goto Github PK

View Code? Open in Web Editor NEW
15.0 5.0 7.0 4.49 MB

Android chatbot using: Dialogflow (Api.ai) for machine learning & NLP, AWS DynamoDB NoSQL Database, DynamoDB Object Mapper, AWS Cognito Identity. Android Architecture Components: Room Persistence Library, ViewModel, Live Data. MVVM Architecture Pattern

License: MIT License

Java 100.00%
android android-architecture android-architecture-component android-app android-architecture-lifecycle api-ai dialogflow aws aws-dynamodb aws-mobile

android-aws-architecture-components-dialogflow-chatbot's Introduction

android-aws-architecture-components-dialogflow-chatbot

Android chatbot using:

  • Dialogflow (Api.ai) for machine learning & NLP

  • AWS DynamoDB NoSQL database for storage with DynamoDB Object Mapper (lets us map client-side classes to DynamoDB tables, perform CRUD operations, and execute queries)

  • AWS Cognito Identity to create unique identities for users and authenticate them for secure access to DynamoDB

  • Android Architecture Components:

    • Room Persistence Library (provides an abstraction layer over SQLite) (compile-time verification of raw SQL queries, supports observable queries which return LiveData objects)

    • ViewModel (exposes the required data and interested parties can listen to it) (ViewModels do not contain code related to the UI. This helps in the decoupling of our app components) (also allows data to survive configuration changes such as screen rotations. )

    • LiveData (an observable data holder class) (it's lifecycle-aware, ensuring LiveData only updates app component observers that are in an active lifecycle state.)

Fiona AI Chat

Keep yourself entertained! Talk about anything with Fiona, as she grows smarter with every interaction.


Screenshots

Contributing

Code & Issues

If you wish to contribute to the app please fork the project and submit a pull request. If possible make the PR on the develop branch.

You can trace the status of known issues on Github Issues,

Licensing

Fiona AI Chat is licensed under the MIT License.

android-aws-architecture-components-dialogflow-chatbot's People

Contributors

veeshostak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

android-aws-architecture-components-dialogflow-chatbot's Issues

Write to AWS DynamoDB once by tracking conversation in Shared Preferences

Write to AWS DynamoDB once by tracking conversation in Shared Preferences.

(conversation remains stored in shared prefs after user exists app. Once the user starts app for the second time, push conversation (conversation from prev user session) to dynamoDB and reset DbPrefs).

Also have shared preferences for chat history. Maintain it by: Before delete of dbPrefs, copy to chatHistoryPrefs.

pseudocode:

// shared prefs for DB and for chat history

// shared prefs for db:
// user, has conersation, exits app (convo saved to shared prefs).
// starts app again-> get the last conversation
// from sharedPrefs and push to the db.
// reset shared prefs file

// shared prefs for chat history:
// maintain persistence until user clears conversation
// maintain by: Before delete db shared prefs, copy to chat history prefs


// open db shared prefs. see if data exists. if exists push it back to db,
// and clear shared prefs on success

Pushing back more than 10 messages if sendMessageButton is never pressed

Since we selectWelcomeChatMessage() on start of activity (based on if it's their first time or if they are returning),

if sendMessageButton is never pressed the check for at least 10 Chat messages won't occur, allowing ChatMessages to accumulate if the user quits and reenters the app multiple times without pressing sendMessageButton.

Instead, check size of allLocalNotInRemoteChatPosts while observing listNotInRemoteChatPostsViewModel so you don't push back a list of more than 10 ChatMessages

Java VM Android class loading error log4j-core

After updating Gradle to 3.0.1

Error:Execution failed for task ':app:javaPreCompileDebug'. > Annotation processors must be 
explicitly declared now.  The following dependencies on the compile classpath are found to 
contain annotation processor.  Please add them to the annotationProcessor configuration.
- log4j-core-2.2.jar (org.apache.logging.log4j:log4j-core:2.2)   Alternatively, set 
android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath
= true to continue with previous behavior.  Note that this option is deprecated and will be
removed in the future.   See https://developer.android.com/r/tools/annotation-processor-error-
message.html for more details.

adding log4j-core-2.2.jar (org.apache.logging.log4j:log4j-core:2.2 as dependency or setting
android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true

gives another error:

Rejecting re-init on previously-failed class 
java.lang.Class<org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup>:
java.lang.NoClassDefFoundError:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.