Commit Graph

204 Commits (031daac17bf0fa203f2001e5622452c4c1a6c882)

Author SHA1 Message Date
Åke Forslund 2881b1842f Setting storage is no longer forced at shutdown
Risk of corruption if the skill service was terminated while settings
were written was determined to be greater than any benefit from this.
2017-09-01 10:45:05 -05:00
Åke Forslund 0782064819 Write settings dict to disk more frequently
====  Tech Notes ====
After an intent has been handled the settings will be stored if any changes are detected.

A force option was added to the .store method of the settings class which always writes the dict to disk even if no changes has been made. This is used during shutdown.
2017-09-01 10:45:05 -05:00
Michael Nguyen 995d67e612 Merge pull request #1018 from forslund/bugfix/issue-1014
Bugfix/issue 1014
2017-08-31 15:59:32 -05:00
Michael Nguyen 2dc6e47bea Merge pull request #1020 from forslund/bugfix/issue-1019
Fix expect response for speak_dialog
2017-08-31 15:58:54 -05:00
Åke Forslund 144e9c016c Automatically find skill directory in __init__
====  Tech Notes ====
Previously the _dir parameter was poplated from the skill loader between calling __init__() and initialize(). The skill path can however be gleaned from with in the __init__() of MycroftSkill.

Doing this makes the settings accessable from __init__() as well and will allow a more straight forward usage.
2017-08-31 15:54:46 -05:00
Åke Forslund b44b2914af Fix expect response for speak_dialog
==== Fixed Issues ====
the expect_response pararmeter is now correctly passed along to
self.speak()

====  Tech Notes ====
NONE - explain new algorithms in detail, tool changes, etc.

====  Documentation Notes ====
NONE - description of a new feature or notes on behavior changes

==== Localization Notes ====
NONE - point to new strings, language specific functions, etc.

==== Environment Notes ====
NONE - new package requirements, new files being written to disk, etc.

==== Protocol Notes ====
NONE - message types added or changed, new signals, APIs, etc.
2017-08-25 14:26:33 +02:00
Åke Forslund 3be861cee2 Fix trailing references causing memory leak
==== Fixed Issues ====

====  Tech Notes ====
This PR corrects a couple of small issues led to skills being left in memory when.
- Handler for `stop.mycroft` weren't removed from event emitter when
skill shut down. Now is added using `self.add_event()`
- registered intent list `self.events` created a circular reference that
python couldn't resolve a live so this is now deleted at shutdown
- Timers in scheduled skills weren't terminated properly. Now if the
timer is alive it will be joined

====  Documentation Notes ====
Registring event handlers should use `self.add_event` instead of
`self.emitter.on()` To make sure they are cleaned up when skill is
terminated.

==== Localization Notes ====
NONE - point to new strings, language specific functions, etc.

==== Environment Notes ====
NONE - new package requirements, new files being written to disk, etc.

==== Protocol Notes ====
NONE - message types added or changed, new signals, APIs, etc.
2017-08-25 11:15:50 +02:00
ginanjar azie 41c7921bbb make message parameter on intent handler optional 2017-08-24 11:15:25 +07:00
Åke Forslund dea591e9b8 Cleanup imports 2017-08-22 08:45:06 +02:00
Åke Forslund e61b516ea1 Add more docstrings 2017-08-22 07:40:28 +02:00
Åke Forslund 12bf78cd5f Move funcs only used in skill_tester from core.py
====  Tech Notes ====
Some functions have been orphaned in core.py and are only used in the
tests. To clean up these have been moved to where they're used.
2017-08-21 15:59:48 +02:00
Åke Forslund ebcbbd3a60 Fix skill container
==== Fixed Issues ====
#1007

====  Tech Notes ====
The converse system changed the api for the load_skill() function this
since the skill_container wasn't updated accordingly it stopped working.
This PR makes updates the container to use the new interface.
2017-08-21 15:09:51 +02:00
Jarbas f04f5107e7 small fix (#1005) Rebase issues with converse method
====  Tech Notes  ====
- Use skill id instead of name
- use time() function correctly
2017-08-21 09:18:01 +02:00
Michael Nguyen f2f5925b09 fixing issue 998 2017-08-17 22:05:49 -05:00
Matthew D. Scholefield 9de5a13659 Add decorator support for intent files and fix regular decorator 2017-08-17 16:01:11 -05:00
Matthew D. Scholefield 69d17a373b Create PadatiousService and add padatious to requirements.txt 2017-08-17 16:01:11 -05:00
Jarbas d661b8d2e7 Add conversational support to skill system
The most recently used skills now have an opportunity to preview all
utterances before they hit the intent system.

==== Tech Notes ====
Skills get a preview in the order of activation -- most recent first --
and if they can consume the utterance or ignore it. If consumed,
processing stops. If ignored, the next most recent skill gets a shot
at it. Finally, if no skill consumes it the intent system takes over,
running as it always has.

Skills remain "active" for 5 minutes after last use.

A skill achieves this by implementing the converse() method, e.g.

def def converse(self, utterances, lang="en-us"):
    if .... :
        return True  # handled, consume utterance
    else:
        return False  # not for this skill, pass it along
2017-08-17 12:09:17 -05:00
Åke Forslund 811cbdb6da Remove requrement to build Intents
====  Tech Notes ====
IntentBuilder objects always need to be built into an Intent to be
usable in mycroft. Since this is always neccessary the code doing this
can be moved so users don't need to do this step.

This commit makes the `register_intent()` method check the handler
argument type, if it's an IntentBuilder object it builds the Intent, if
it's an Intent it continues as normal, if it's any other type it will
raise a ValueError
2017-08-17 11:49:00 +02:00
harika 4c3dd3aa7c Updating skill_tester to automate skills testing(regression) 2017-08-17 02:05:02 -05:00
harika 632df2a498 Update tests 2017-08-17 02:05:02 -05:00
Åke Forslund f19ac28a5c Add some safety to the add/remove context methods
====  Tech Notes ====
Invalid context or word arguments will now raise ValueError
2017-08-15 21:27:19 -05:00
Åke Forslund b9a054e669 Manual context injection
A skill can inject context to enable and disable intent handlers
automatically depending on previous conversation.
2017-08-15 21:27:19 -05:00
Åke Forslund 1d7d02161d Add a default shutdown method for fallback skills
====  Tech Notes ====
Adds a shutdown method that removes all handlers registered by the
current instance.
2017-08-09 14:24:21 +02:00
Åke Forslund c363662b67 Remove need for name parameter
====  Tech Notes ====
If name is not provided the class name will be used
2017-08-09 14:18:14 +02:00
Åke Forslund 7f5f1ac2c1 Fix double __init__ in MycroftSkill
==== Fixed Issues ====
NONE

====  Tech Notes ====
During earlier rebase it seems like a double instance of __init__ got
into MycroftSkill.

====  Documentation Notes ====
NONE

==== Localization Notes ====
NONE

==== Environment Notes ====
NONE

==== Protocol Notes ====
NONE
2017-08-09 13:31:55 +02:00
Matthew D. Scholefield 6f1a2dbe55 Convert static methods in FallbackSkill to class methods
This makes it more concise and mimics the behavior of self, but for static methods
2017-08-03 13:49:32 -05:00
Matthew D. Scholefield 3b6942a250 Move intent fallback behavior to new FallbackSkill base class 2017-08-03 13:49:32 -05:00
Matthew D. Scholefield 4afe6687c4 Fix intent failed messages before running fallbacks 2017-08-03 13:49:02 -05:00
Matthew D. Scholefield a86f0478a4 Add intent fallback system
Also removes multi utterence intent fail. Only makes sense to emit an intent_failure regardless of the amount of intents
2017-08-03 13:49:02 -05:00
Åke Forslund db6127a0ed Catch exceptions in user provided stop() method
==== Fixed Issues ====
#960

====  Tech Notes ====
The messagebus handler for "mycroft.stop" halts and exits if an
exception occurs in any methods that are registered to that name. The
handler executes the stop() method that's provided by the user and is
not verified. To ensure that other skills are unaffected exceptions in
the user provided method are caught.

====  Documentation Notes ====
NONE - things like description of a new feature or notes on behavior
changes

==== Localization Notes ====
NONE - point out new strings, functions needing international versions,
etc.

==== Environment Notes ====
NONE - new package requirements, new files being written to disk,
etc.

==== Protocol Notes ====
NONE - message types added or changed, new signals, etc.
2017-08-03 14:14:31 +02:00
Åke e7c55aaa43 Merge pull request #933 from MycroftAI/feature/skill-configuration
Feature/skill configuration
2017-08-02 08:57:28 +02:00
Michael Nguyen 37ada28dbd refactored skill settings and fixed test 2017-07-27 16:28:32 -05:00
Steve Penrod e8e0853825 Merge pull request #838 from MycroftAI/feature/display_state_manager
Feature/display state manager
2017-07-21 19:58:07 -05:00
Åke Forslund 6f41964796 Make name parameter optional.
==== Fixed Issues ====

==== Tech Notes ====
Uses supplied name parameter if present, otherwise uses name of class.

==== Documentation Notes ====
The skill creation documentation should mention that the name parameter
is only an option.

==== Localization Notes ====
NONE

==== Environment Notes ====
NONE

=== Protocol Notes ====
NONE
2017-07-19 16:47:26 -05:00
Matthew D. Scholefield 90aff68034 Reverting "Add intent fallback system (#899)"
This is because this will break wolfra alpha skill unless they update
skills, but if they update before getting the new version, it will also
break wolfram

This reverts commit 6ca4161335.
2017-07-14 17:53:42 -05:00
Matthew D. Scholefield 6ca4161335 Add intent fallback system (#899)
* Create new FallbackSkill base class for implementing fallback behavior
Also removes multi utterance intent fail. Only makes sense to emit an intent_failure regardless of the amount of intents
2017-07-14 17:27:26 -05:00
Michael Nguyen f62a771e28 merge changes 2017-07-06 16:59:26 -05:00
Michael Nguyen f361392628 Merge branch 'dev' of https://github.com/MycroftAI/mycroft-core into feature/skill-configuration 2017-07-06 12:40:50 -05:00
Åke Forslund 653d1e6f5e Change logging level for missing dialog/vocab to debug 2017-07-05 19:37:33 +02:00
Åke Forslund 54783a1dd1 Minor cleanup 2017-07-05 19:35:26 +02:00
Åke Forslund a2644bc97c Load data files and decorated intent handlers automatically. 2017-07-05 19:35:26 +02:00
Åke Forslund eb6cd79e52 Minor cosmetic fixes
- underscore in front of variables/methods not intended for users
- docstrings
- remove debug printout
2017-07-05 19:35:26 +02:00
Åke Forslund 7955feaec7 Add support for decorating handlers with intents 2017-07-05 19:35:26 +02:00
Michael Nguyen b6a7234be3 Merge branch 'dev' of https://github.com/MycroftAI/mycroft-core into feature/skill-configuration 2017-06-30 17:36:08 -05:00
Jarbas 2c0ed93e4b pep8 2017-06-30 20:27:33 +01:00
Jarbas ebe1c7fcea use get 2017-06-29 21:44:21 +01:00
Jarbas 8af5ce09cf read blacklisted skills from config 2017-06-29 20:36:02 +01:00
Michael Nguyen d3621b7fca [WIP] refactored 2017-06-28 17:31:35 -05:00
Michael Nguyen e3b4e7c6e3 [WIP] modify settings.py to post metadata to api, and get settings form api 2017-06-28 11:32:19 -05:00
Michael Nguyen c0b603ab51 state manager implemented 2017-06-16 13:31:44 -05:00
kfezer 3988da5ffb Merge pull request #692 from forslund/feature/issue-691
#691 - adding setting per skill
2017-05-30 16:47:33 -07:00
Åke Forslund 3a71f85301 Replace load_settings() with a settings property
settings are now loaded and created when required and not directly at
load of skill.
2017-05-20 08:31:22 +02:00
Åke Forslund 40010e90f0 Store settings object on shutdown 2017-05-20 08:30:07 +02:00
Åke Forslund b6a34f8cee Add skill settings to skills 2017-05-20 08:29:05 +02:00
Åke Forslund 4912573cab Remove ignoring SIG_CHLD
Ignoring SIG_CHLD can be convenient but parts of the python standard
library relies on the behaviour of SIG_CHLD and will not work correctly
in this configuration.
2017-05-20 08:16:52 +02:00
Chris b1abdba19c Fixed typo
There was a typo ("Lodaded" instead of "Loaded") which I have fixed
2017-05-18 16:49:07 -03:00
Åke Forslund 484d4a9ce3 Move ignore SIGCHLD to entry points.
Ignoring SIGCHLD trips up unittests, this was done as the unittest loaded mycroft.skills.core
2017-05-18 16:49:07 -03:00
Augusto Monteiro 'Sparky 237827a099 #671 - fixing auto load 2017-04-17 10:26:34 -07:00
Augusto Monteiro 'Sparky 13fe3fe12a #636 - Removing old skills folder 2017-04-06 17:14:18 -07:00
kfezer a475341346 Merge branch 'dev' into feature/issue-553 2017-03-30 20:49:36 +00:00
kfezer 622765015d Revert "Fixes Issue 588" 2017-03-30 08:50:24 -07:00
kfezer f7c781d119 Update core.py
Fixed Pep8 Issue
2017-03-29 16:27:49 -07:00
kfezer 4c24466120 Merge branch 'dev' into feature/issue-553 2017-03-29 17:28:10 +00:00
kfezer 80b54296b3 Merge pull request #591 from MycroftAI/bugfix/issue-588
Fixes Issue 588
2017-03-29 16:40:06 +00:00
kfezer de27ad4caa Merge pull request #572 from SoloVeniaASaludar/bugfix/issue-571
Update core.py
2017-03-29 16:39:06 +00:00
kfezer@gmail.com 348a9111a2 modified: mycroft/skills/core.py
Fixed typo
2017-03-27 13:56:13 -07:00
Åke Forslund be8dd47250 Add expect_response option to speak_methods
if expect_response flag is set to True the stt will be triggered just as if the wakeword has been received or the button on the mycroft enclosure has been pressed.
2017-03-17 20:20:27 +01:00
SoloVeniaASaludar 852d1d3c15 Update core.py 2017-03-16 16:43:53 +01:00
SoloVeniaASaludar a8f7e84a2c Update core.py 2017-03-16 16:29:11 +01:00
Åke Forslund 8df393c813 Remove handler from registered_intents list, it wasn't used 2017-03-14 22:01:48 +01:00
Åke Forslund 49c5a3e523 Add debug and error logging 2017-03-14 21:55:04 +01:00
Åke Forslund f0eb55effb Add functionality to remove and restore intents. 2017-03-13 18:15:12 +01:00
JarbasAI b0bca504ee added blacklist check to load_skill
skill blacklisting was checked in load_skills which is no longer used in favor of watch_skills calling load_skill directly
2017-03-11 13:46:18 -06:00
JarbasAI b13070f276 added reload_skill flag 2017-03-09 01:56:23 -06:00
Arron Atchison 8599146dc4 fix pep8 in skills folder 2017-02-15 15:37:52 -06:00
Karl Fezer d4e169c4a3 modified: mycroft/skills/core.py
Added more verbose logging to the core.py file which adds skills on boot-up.

Issue #511
2017-02-15 15:37:52 -06:00
Åke Forslund 4788664418 Load data files from skill directory when loading skill. 2017-02-15 15:37:52 -06:00
Åke Forslund 23fe0fff2b Load skill data nicely without throwing exceptions
Check if dialog and vocab dirs exist before trying to load files. Log an error if it fails.
2017-02-15 15:37:52 -06:00
penrods acfdff416b More Location integration for #487
For the Weather Skill:
* When talking about the current city, the city name is generally not spoken (more natural)
* A "pretty" name of just the city is used instead of the complete name
* Works around the recurring issue with OWM where they report bad min/max temps (same as the current temp)
* Changed "Location is not valid" to "I don't know that location" (people don't say "not valid")

For the Time Skill:
* The timezone is extracted from the device location setting
* Time responses are more varied and shorter

This change adds MycroftSkill.location_pretty and MycroftSkill.location_timezone properties.
2017-02-03 10:49:54 -06:00
Augusto Monteiro 672b208b86 #479 - Fixing reminder stop
- Setting daemon on timer to True to make timer thread cancelable
- Refactoring shutdown to use super instead of static super
- Removing cleanup
2017-02-01 23:40:13 -03:00
Augusto Monteiro 6b324c6df2 #479 - Refactoring terminate process to use shutdown instead of cleanup 2017-02-01 23:40:13 -03:00
Åke 9d9ab7b826 Test allow test to finsh immediately (#453)
Add cleanup procedure to skills:
MycroftSkill cleanup does nothing, ScheduledSkill will cancel running timers to make sure it's not blocking termination.

Tests updated to use this allowing unit test to exit after completion.
2017-01-20 15:50:00 -06:00
Ethan Ward 451f0f5195 Update for pep8 2017-01-18 16:41:48 -03:00
Ethan Ward 93893f3473 Update skills system to load from subfolders 2017-01-18 16:41:48 -03:00
Ethan Ward c4bc2ea161 Update to fix pep8 errors (#420) 2017-01-18 16:41:48 -03:00
Augusto Monteiro eff50a5135 Issues 395 - Refactoring configurationSkill and adding log on mycroftSkill 2016-12-17 10:27:01 -05:00
Jonathan D'Orleans 416191e598 Issues 350 - Synchronizing local and remote configuration 2016-12-17 10:27:01 -05:00
Jonathan D'Orleans ccceb62b7a Issues 351 - Renaming metadata to data and simplifying data usage 2016-12-17 10:15:24 -05:00
Jonathan D'Orleans 348cc3fac0 Issues 351 - Renaming message_type to type 2016-12-17 10:15:24 -05:00
Ethan Ward 743c430996 Update test coverage to include loading vocab (#294)
* Issues #226 - Add tests for adding vocab

* pep8

* Issues 226 - Update tests

* Issues #226 - Remove debug lines
2016-07-18 15:44:36 -05:00
Ethan Ward eed3dd3af8 Update load_data_files to load regex files (Fixes #256) (#271)
* Issues 256 - Change loading all files to load regex

* Issues 256 - Readd regex call
2016-07-08 18:11:18 -05:00
Ethan Ward 44e6016d3f Issues 274 - Add base media skill to blacklisted skills (#275) 2016-07-08 18:01:50 -04:00
Ethan Ward 90905d526c Issues 108 - Change regex to be localized (#222)
* Issues 108 - Add load_regex_files

* Issues 108 - Update weather skill with new regex syntax

* Issues 108 - Update stock skill with new regex syntax

* Issues 108 - Add stock regex file

* Issues 108 - Update time skill to use new regex syntax

* Issues 108 - Update desktop skill to use new regex syntax

* Issues 108 - Update volume skill to use new regex syntax

* Issues 108 - Update wikipedia skill to use new regex syntax

* Issues 108 - Update spelling skill to use new regex syntax

* Issues 108 - Update sms skill to use new regex syntax

* Issues 108 - Update calling skill to use new regex syntax

* Issues 108 - Remove unused argument

* Issues 108 - Add unit tests

* Issues 108 - Minor changes to fix tests

* Issues 108 - Preserve intended test logic

* Issues 108 - Address feedback

* Issues 108 - Update test formatting

* Issues 108 - Change file location
2016-06-28 16:20:48 -04:00
Eugene R. Miller fbdf3b6e79 #161 refactored user dir 2016-06-18 13:02:25 -06:00
aatchison f319fb37c4 Revert "custom skills #161" 2016-06-17 11:40:21 -05:00
Eugene R. Miller e1eedc0908 #161 fixed pep8 2016-06-17 09:50:14 -06:00
Eugene R. Miller 694377faf6 #161 oops fixed typo 2016-06-17 07:47:53 -06:00
Eugene R. Miller 80c8a451f2 #161 fixed pep8 issue and a few typos 2016-06-17 03:07:28 -06:00
Eugene R. Miller 6efd787945 #161 added custom skills 2016-06-17 03:03:11 -06:00
Jonathan D'Orleans c46bc43e72 Issues 96 - Moving configuration to init 2016-06-09 18:26:10 -04:00
Jonathan D'Orleans efff3dbda6 Issues 96 - Renaming get_config to get only 2016-06-09 18:25:37 -04:00
Ryan Sipes 8f2c451938 Fixed Missing License Headers on All Files.
GPL LIcense added to the top of each python file.
2016-05-26 11:16:13 -05:00
Leo Arias d618676089 Issues-4 - Fix pep8 errors. 2016-05-23 17:23:47 +00:00
Arron Atchison 6e42bb1736 In the 1970s computer users had to understand the arcane syntax of the machines they used. They programed their computers using the machine's native language and hardly gave it a thought.
The 1980s birthed a new form of interaction between computers and users.  For the first time computers became capable of understanding the most basic form of human communication - pointing and grunting.  The mouse and the GUI revolutionized computing and made computers accessible to the masses.

We have now entered a third era.  We are rapidly approaching a time when computer systems will understand human language and respond using the most natural form of human communication – speech.

This is an important development.  Some might even call it revolutionary.

Despite its importance, however, the technologies that will underpin this new method of interaction are the property of major tech firms who don't necessarily have the public's best interests at heart.

Not anymore.

Meet Mycroft – the worlds first open source natural language platform.  Mycroft understands human language and responds with speech.  It is being designed to run on anything from a phone to an automobile and will change the way we interact with open source technologies in profound ways.

Our goal here at Mycroft is to improve this technology to the point that when you interact with the software it is impossible to tell if you are talking to a human or a machine.

This initial release of the Mycroft software represents a significant effort by the Mycroft community to give the open source world access to this important technology.  We are all hoping that the software will be useful to the public and will help to usher in a new era of human machine interaction.

Our community welcomes everyone to use Mycroft, improve the software and contribute back to the project.  With your help and support we can truly make Mycroft an AI for everyone.

Joshua W Montgomery – May 17, 2016
2016-05-20 09:16:01 -05:00