davquar / voicecrm Goto Github PK
View Code? Open in Web Editor NEWProject for the Human Computer Interaction on the Web 2021 course at Sapienza University of Rome
Project for the Human Computer Interaction on the Web 2021 course at Sapienza University of Rome
See:
self.speak_dialog("generic-data-done-repeat", {"data": utt_person})
Instead of utt_person
, we should use the real contact name (whenever possible).
Everything useful to disambiguate someone.
If the user doesn't provide a nickname, it becomes None. We had fixed it, but apparently something has broken it again.
The official mycroft image is outdated. We should use a locally cooked Mycroft build.
Bug in the intent parser (#72)
Right now if you say something like "with elon musk", it does not match "elon musk". The contact search function should remove stopwords from the utterance.
UML diagrams to describe the interaction flow.
3 possible ways:
Example:
\- you already have jack sparrow. I'll stop here.
\- are you sure this is another person?
In dialogs like "a nickname that you use to refer to elon?", include at least the surname.
The compact intent set for "new reminder" may skip our skill and directly call the reminder-skill
of mycroft, therefore we should fine tune our intent files to prevent it.
E.g. this should be avoided: "remind me to call michael jordan tomorrow morning โ Sure, saving a reminder for tomorrow at eight o'clock"
Depends on #30
The user should be able to delete the last registered thing (contact, activity, reminder)
The Adapt intent parser is more powerful and flexible; it also doesn't have the infamous bugs of Padatious.
To migrate it should be sufficient to:
require
and optionally
to allow both long and compact intents.As an alternative to the last point, it is also possible to use both parsers: Adapt for compact intents and Padatious for simple ones.
The utterance that we pass to skill-reminder
via the message bus should somewhere include the person who the reminder is related to. E.g. remind me to {activity} related to {person} on {datetime}
When the user doesn't speak in time, or doesn't speak at all, mycroft understands None
date = parse.extract_datetime(utt)[0]
The problem was introduced after adding [0]
Ignore things like "the name is X", etc.
The user should not be able to insert invalid things.
Male, female, other
Ignore:
Also, validation code should be put - if possible - inside the validator
field of mycroft methods, like get_response
.
See:
lingua_franca
match_one
/fuzzy_match
E.g. when the user says something containing "stop" or any action word, but there is no exact match, we can ask the user for confirmation.
Allow the user to stop the interaction, to go back, rephrase or repeat something, etc.
This implicitly tells the user whether mycroft has correctly understood the request or not, and at the same time proceeds with the task.
Ask the user "do you want to add another activity/reminder with/about this contact?" before exiting.
Contacts can have relationships between them, e.g. son, father, friend, spouse, etc...
"relationships": [
"<contact_id>": {"<relationship>", ...}
....
]
Relationships:
The supported actions should be extended to {repeat, back*, continue*, exit}
*: when needed
Improve user experience with a better and satisfying vocal interaction:
Check dialog in speak instructions
Complete intent files
Optimize, if possible, Mycroft vocal comprehension and adjust the speak interval time
Instead of hard-coding phrases or user intents in the code, put them in files under the locale
directory.
This can allow us to define variations and to translate the skill.
Normally extract_datetime
should return None
if there is no datetime in the utterance, but sometimes it fails.
Example saying "nevermind":
Traceback (most recent call last):
File "/opt/mycroft/mycroft/skills/mycroft_skill/event_container.py", line 73, in wrapper
handler(message)
File "/opt/mycroft/skills/crm-skill/__init__.py", line 267, in handle_new_activity
parsed_datetime = parse.extract_datetime(utt)
File "/opt/mycroft/mycroft/util/parse.py", line 122, in extract_datetime
default_time)
File "/opt/mycroft/.venv/lib/python3.6/site-packages/lingua_franca/internal.py", line 597, in call_localized_function
return _call_localized_function(func, *args, **kwargs)
File "/opt/mycroft/.venv/lib/python3.6/site-packages/lingua_franca/internal.py", line 575, in _call_localized_function
in kwargs.items()
File "/opt/mycroft/.venv/lib/python3.6/site-packages/lingua_franca/lang/parse_en.py", line 707, in extract_datetime_en
words = clean_string(text)
File "/opt/mycroft/.venv/lib/python3.6/site-packages/lingua_franca/lang/parse_en.py", line 641, in clean_string
s = _convert_words_to_numbers_en(s, ordinals=None)
File "/opt/mycroft/.venv/lib/python3.6/site-packages/lingua_franca/lang/parse_en.py", line 48, in _convert_words_to_numbers_en
tokens = tokenize(text)
File "/opt/mycroft/.venv/lib/python3.6/site-packages/lingua_franca/lang/parse_common.py", line 255, in tokenize
for index, word in enumerate(Normalizer.tokenize(text))]
File "/opt/mycroft/.venv/lib/python3.6/site-packages/lingua_franca/lang/parse_common.py", line 34, in tokenize
utterance = re.sub(r"([0-9]+)([\%])", r"\1 \2", utterance)
File "/usr/lib/python3.6/re.py", line 191, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object
Even if all the entities are recognized by the intent parser, the execution stops at the state 0, because it is not incremented when using compact intents.
The nickname is always saved even if the user skipped the nickname question
Handle the repetition of the name when it asks "whom". Replace ask_yesno with wrap_get_response and voc_match.
It should ask only one time.
When the user asks to register something about a contact that doesn't exist, and mycroft starts the nested task, it should continue from where it was interrupted.
The handle_new_contact
function may return the just created contact :)
set that elon and mike horse are friends
>> I don't know this person yet . should I add them?
The phrase should include the contact that you don't have ("i don't know mike horse [...]")
When the user wants to delete the last action, the interaction between her/him and mycroft is very poor. We need to expand the set of phrases that mycroft says during this interaction.
When mycroft reads you a list of activities, the time is unnatural. It should be improved.
When more actions are done (like new activity --> new contact) we can remove "finishing.dialog/end-new-contact.dialog" at the end of the first action and substitute it with an intermediate intent
When more contacts are found, "self.speak_dialog("generic-data-done-repeat", {"data": utt_name})" is useless
Maybe we can add a dialog in "last-activities", before reading the activities list
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.