Git Product home page Git Product logo

lisa's People

Contributors

bitdeli-chef avatar seraf avatar sjbrgsn avatar waffle-iron avatar

Stargazers

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

Watchers

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

lisa's Issues

Create singleton for Task Scheduler

Actually there's a crappy import and global to use the same instance of TaskScheduler.

As it can be used from anywhere and I need to use the same instance, it will be great to have a clean singleton.

Dynamic cron timer

LISA should be able to create a timer or add a cron by voice.

Example : "Turn off the tv in 30 minutes"
LISA will add the intent it in the scheduler and will not call the plugin directly.

accents

seraf : quand on emploie le "é" pour éteint et non le eteint erreur :
exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128)

!! on pouvait employer des accents .. avant ..

http://pastebin.com/Et6PLt21

Use mongodb replication

Should change the way LISA do connection to mongodb to enable the mongodb replication.
It will allow LISA to have failover and support the loss of data.

Create a version file

A version file will allow application to read the version and let setup.py read the same data. A unique file to manage the version number

Interface Design

We need a design for the web interface

  • CRUD for User Profiles
  • Dashboard with portlets from plugins
  • Plugin Management
  • Plugin Editor
  • WebChat with Lisa (backup solution if WebSocket isn't available)

AppStore, how it works

For the plugin submission, I want something which remains opensource and easy to submit.
Actually, I tested something which dynamically loads the plugin list.
There's two problems : it's slow and github have a rate limit on api call.
The solution I found is to generate a file each 5 minutes from my server in a cron (with authenticated account) which will contain the json metadata of all plugins. So it will need only one get from the browser to get the metadata of plugins. The README foreach plugin will be load by the http way so there won't be any rate limit on this.

Write Documentation

There is actually a short documentation written for the old LISA Engine. As everything has changed, it should be great to update the documentation and to make it translatable on transifex.

"zone" in JSON input and output

for JSON input, zone should be renamed in "sender zone" to be more explicit

for JSON output, clients_zone should be renamed in target_zones to be more explicit, an in plural because there could be a list of zone to target for the answer. I have not read the code, but sending "sender" as a parameter of the JSON output don't give the system the exact target and there should be a way to select later the right target, why not just put here the room name received in the input ?

  • Rewrite sender with the zone name to send the message to all clients in the zone
  • Rename variables INPUT zone=>sender_zone
  • Rename variables OUTPUT clients_zone=>target_zones

Plugin API : sending notifications to a client

A plugin should be able to send notifications to a client without any user action.

Ex : "Lisa, tell me to do the dishes in 1 hour".

The ToDo plugin then add a cron task, and is called back one hour later, and sends to the client a message through the TSS engine : "Master, don't forget to do the dishes"

Many other use cases, like reacting from an external event : temperature sensor, a google calendar event, an incoming phone call...

Android client

There's actually a problem with https://github.com/Seraf/LISA/blob/master/LISA-Client/android/android.py
The method isSpeaking() doesn't seems to wait before loop for a new sound.

It should works like this :
If there's the word LISA in the sentence matched :
LISA use tts and says "I listen" (this should be internationalized)
Then it records the sentence and send it to LISA engine.

It should be great to disable the sound of the recording (the annoying beep) of the first LISA match.

I have also an annoying bug, after some recognition, it throws me exception java null lang etc etc. After restarting the app it works correctly again for 1 o 2 recognition.

Here the question I asked on the google groups but without any answer : https://groups.google.com/forum/#!topic/android-scripting/PFwzUdNb6jA
Questions to resolve :
Should we code it natively in java ?
Should we suggest new features on the SL4A by patching the speech2text java interface ?

Packaging

As a python application, LISA should be installable with a "pip install lisa-server".
I'm a little confused about the twisted packaging and init.d service creation. Creating a distutils setup with twisted seems to be complicated and some rewriting may be donc on the current files.

Intent in json input

If intent is sent with the json, we know that the client already contacted wit. There's no need to contact it again, and lisa should use the intent given.
It will also help grammar client (like microsoft) to give all instructions needed to the rules engine

The json file is removed when installing a plugin

On the line https://github.com/Seraf/LISA/blob/master/lisa/server/plugins/PluginManager.py#L115 the json is removed during the plugin install.
It is not a problem on production, but during plugin development it's annoying.
The CLI should take an optionnal argument to know it is a development context and do not delete this json file.
This development argument should also be used to install/uninstall easily the plugin without removing the directory, and playing with pip.

Use google speech stream api

You could use google speech streaming api for speech recognition. As soon as level of sound incrises above some particular level you could start streaming voice to google, which will do speech recognition for you. Or you could use google streaming api only for longer texts. Example is on my gist https://gist.github.com/offlinehacker/5780124

Improve the plugin system

The plugin system need to be improved :

  • Plugins should have a manager to register
  • Find a solution to remove the crappy eval()
  • Dependancies management (python packages and dependancies between plugins)
  • Removing the json file at install (no need to sync)
  • Easy editing of the plugin on the webinterface
  • Baseclass to herit for plugins, providing a beautiful API

Remove plugin -> reload cron

When I remove a plugin, the cron task is kept in memory.
It should be removed, I need to think about a task reload or delete directly the entry (should be gettable by the name, and removable directly from the list)

Create a face for LISA

We need to create a face for LISA (then animate it) to include it in the LISA Web interface and the android app.

JARVIS-Web | Features

The web interface should provide :

  • Plugin management (configuration editor)
  • User management (need to be logged to play with it)
  • Chat (by websocket) (the text will be displayed or not)
  • Widgets (plugin for the web interface like music player)
  • Design for wall mounted tablets (so an interface for 7")
  • Display JARVIS animation

Send a stop speaking command to clients

Server should be able to send command to clients.
I will use the "type" field and a value "command", then in the body, I will put the command.
Plugins (and other clients) will be able to ask clients to stop speaking.
It will allow to send other command like entering a context mode, ask a question to the user and waiting for an answer without waiting for the triggers, etc ...

microphone

problème intermittent de micro : marche sur recherche google. sur lisa on voit le point rouge de chrome dans l'onglet qui dit que le micro est activé .*
impossible de cliquer sur l'icone de micro de lisa , reste blanc
comme inactif !!!
copie ecran : http://picpaste.com/Capture_du_2014-12-09_15_36_55-w62GCbQy.png
l "allowed domains" des settings de wit-ai n'a pas changé
et marchait

Rule format

A rule should have multiple conditions :

{
  "name": "Rule Name",
  "order": 999,
  "conditions": [
                        {
                          "name": " Condition1 name",
                          "if": "plugin",
                          "operator": "=",
                          "compare": "chat"
                        },
                        {
                          "name": " Condition2 name",
                          "if": "jsonData['zone']",
                          "operator": "=",
                          "compare": "2"
                         }
                       ]
  "then": "python code",
  "end": True
}

How to manage complexe rules with AND and OR conditions ?

Management script

LISA should have a CLI script to do easily some tasks. The manage.py from django will be used.

  • List all plugins installed/enabled | available
  • Install a plugin (from github or from local (insert json into database))
  • Upgrade a plugin (retrieve the last version of the plugin and update the database if needed)
  • Enable / Disable a plugin (a plugin can be installed but not loaded)
  • Delete a plugin (will completely remove the plugin from filesystem and database)
  • Create a plugin (bootstrap a plugin from a template)
  • Create the directories and setup.py files and copy the plugin to distrbute it easily

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.