cakebarIO / QuickAdd-for-Todoist

Effortlessly add tasks to your Todoist Inbox using just your voice with Alexa!
https://www.amazon.com/dp/B0D7948ZX5
2 stars 0 forks source link

Add ability to directly add to project lists #1

Open ajcherry opened 1 week ago

ajcherry commented 1 week ago

It looks like QuickAdd only adds tasks directly to the Todoist inbox, which can't be shared with others. For those of us that share our shopping list with multiple family members, it would be useful if this skill had a configuration option to add directly to a named project (similar to what the original integration did with "Alexa Shopping List").

btoconnor commented 1 week ago

+1 for this. We used alexa/todoist for a shopping list and I need to be able to share that list with family members.

thanks for creating this skill!

bulawayo88 commented 4 days ago

+1 Need to designate the specific list to add to. ie send shopping items to "shopping list" project.

cakebarIO commented 3 days ago

Custom lists are definitely on my roadmap! Thank you for affirming this logic!

Before researching custom list additions, I assumed the Todoist API could distinguish an authenticated user’s custom lists automatically. Unfortunately it can’t…and separate API calls need to be made to get a user’s lists, parse through them to find the proper list ID, and attach that ID to an add call.

This is not ideal from an efficiency standpoint.

So, my question…is this custom list logic worth an extra, possibly, two to three seconds for a response from the skill? Because of the extra API calls, it would create extra compute time…and to not affect all calls, it would need its own separate invocation…like “Alexa, tell QuickAdd to add [task] to my custom [list name] list,” or something of the sort. Would this be ok?

btoconnor commented 3 days ago

I have not done much Alexa skill programming - so forgive me if this is not the right path. I think Persistent Attributes would alleviate this right? By default the skill adds to the inbox, but if the user does an invocation to change the list, you could store the list ID to future calls?

cakebarIO commented 3 days ago

I have not done much Alexa skill programming - so forgive me if this is not the right path. I think Persistent Attributes would alleviate this right? By default the skill adds to the inbox, but if the user does an invocation to change the list, you could store the list ID to future calls?

I could do something like this, yes...but I would still need to make the API call to get the list in the first place...and then another call if those lists ever change...along with adding code to check whether even stored IDs are still valid...which becomes much more complex than simply making a unique API call when a certain invocation is spoken. Plus I am not storing user data right now. To set up a database and store IDs and user info is getting more complex (and costly) than I intended for this skill to be...especially when I'm not charging a subscription. My goal is not to make money on this skill...but I also don't want to lose money on what is supposed to be a simple tool to help people. That being said, I agree custom lists are a useful addition and I will investigate adding logic to assign tasks to custom lists. Thank you for your input on this!

bulawayo88 commented 3 days ago

Thanks for your hard work on this. I’m happy with “Alexa, tell QuickAdd to add [task] to my custom [list name] list”. This takes it from not useable to useable.

ajcherry commented 3 days ago

I agree with @bulawayo88 -- even if it's not perfectly elegant it's still better than not having the option at all. But maybe remove the word "custom" from the invocation (i.e. "Alexa, tell QuickAdd to add [task] to my [list name] list") just for the sake of brevity? Seems like it would be safe to assume that having "to my" in the invocation implies that you're adding to a specific list.

cakebarIO commented 11 hours ago

I am actively working on this but I'd like anyone's opinion on implementation.

Right now, there is a movement to have "Alexa, tell QuickAdd to add [task] to my [list name] list" be the workflow to add a [task] to a [list name]. However, what if the [list name] ends with "list?" => "Alexa, tell QuickAdd to add apples to my Grocery List list." => list would be redundantly repeated. Further, I cannot just assume "list" is part of the list name...for instance, if someone has a list named just "Grocery," auto-adding list to the end as "Grocery List" would not add that item to "Grocery."

I am trying to dynamically achieve custom list additions without making too many API calls to get lists, parse through them, and determine which one is being asked for...additionally, I cannot logically deduce whether a user has "list" as part of the list's name or not. As such, the full list name needs to be the last text spoken in the "Add" invocation (nothing after => I am using "to my" as the indicator a custom list is coming next).

Here is my proposed workflow...

"Alexa, tell QuickAdd to add [task] to my [list name]" ...it would be perfect for lists that have "list" in their names, but slightly wonky-sounding for lists that do not have "list" in their names => "Alexa, tell QuickAdd to add apples to my Grocery."

Additionally, any custom list name would NEED to be one whole word in Todoist => so a list named "Grocery List" would need to be changed to "GroceryList" (no spaces) in Todoist. This is baked in to the Todoist API and is not something I can change.

I'd love to get anyone's opinion!

bulawayo88 commented 5 hours ago

I concur with your proposal. It seems like the choice of least ridiculousness in light of the limitations.