Aymkdn / assistant-plugins

Des plugins pour les Assistant (comme Google Home, Cortana, Alexa)
https://aymkdn.github.io/assistant-plugins/
MIT License
92 stars 21 forks source link

Ajouter un plugin de notification par ical #251

Closed Ybbet closed 5 years ago

Ybbet commented 5 years ago

Bonjour,

En lisant ton code (je ne suis pas hyper fluide avec le javascript), je vois que c'est Pushbullet qui active les actions d'assistant-plugins. Actuellement, je passe par une action IFTTT qui détecte le début d'un événement dans un calendrier précis et envoie à Pushbullet la commande notifier_{description_de_l_event} titre_de_l_event Cela fonctionne plutôt bien. Mais… j'ai un décalage parfois dans le déclenchement du message à mon Google Home. Exemple, un message doit être diffusé à 12h00. Avec le temps du "cron" IFTTT + Pushbullet, il y a un décalage de 1 à 2 minutes parfois.

La solution serait de créer un plugin "notification_ical" (à créer donc) qui lirait le contenu dudit calendrier. Cela permettrait d'être plus réactif à l'exécution (à la diffusion) du message. Mais pour cela, il faudrait que je puisse m'intégrer dans ton plugin… Je voudrais que toutes les minutes, assistant-plugins par l'intermédiaire de notification_ical vérifie si un événement commence. Si oui, on lance notifier_{description_de_l_event} titre_de_l_event.

Est-ce que tu as une idée s'il te plaît ?

Aymkdn commented 5 years ago

Tu pourrais créer ton propre plugin en utilisant le template mis à disposition.

Pour la partie cron tu peux utiliser un module Node comme https://www.npmjs.com/package/node-schedule

Une fois ton plugin créé, il peut interagir avec les autres plugins : https://github.com/Aymkdn/assistant-template/blob/95674f8fbd8a709d92227e40300be2084317c6ca/template.js#L35

Ybbet commented 5 years ago

Hello,

J'ai fait un test de développement dudit plugin. C'est un peu galère. Il a fallu que je comprenne comment tu as développé assistant-plugins principalement (vu que je veux utiliser un des éléments de ton écosystème). Mais voilà, il semble que j'ai réussi à faire quelque chose de fonctionnel. Tu pourras trouver le plugin "assistant-message" à cette adresse : https://github.com/Ybbet/assistant-message

Peux-tu me faire un retour sur le sujet s'il te plaît ? ;-)

Aymkdn commented 5 years ago

Je viens de soumettre une refactorisation de ton code. Mais en soit j'ai rien changé d'autre à ce niveau-là.

Par contre, j'avoue ne pas voir l'intérêt de ce plugin... J'aurais plutôt vu un plugin assistant-rappel-calendrier par exemple qui dirait un truc du genre : "Vous avez un événement programmé aujourd'hui à 14h : « emmener les enfants à la patinoire »".

Est-ce ici le but de ce plugin ? Si oui, le nom assistant-message est trompeur. Tu peux renommer le repository depuis les Settings https://github.com/Ybbet/assistant-message/settings

Ybbet commented 5 years ago

Hello,

Merci pour le refactoring. C'est vrai qu'il y a un doublon dans la fonction timestamp. Mes précédents tests ne m'avaient pas permis de mettre la fonction setTimeout avant le Promise. Mais là… ça marche. :-?

L'utilité de ce plugin est de diffuser des messages à des moments précis dans l'agenda. Il n'est pas de prévenir qu'un événement va se produire (cf. assistant-rappel-calendrier). Le titre de l'événement est le message qui sera diffusé. Dans le descriptif, on indique le ou les Google Home sur lesquels les messages seront diffusés. Pour ce qui d'avertir sur un nouvel événement, IFTTT le fait correctement.

Un exemple d'utilisation, j'ai des enfants, autonomes, qui se préparent le matin. J'ai programmé les jours d'école un événement à 8h ayant pour titre "C'est l'heure d'aller à l'école". Dans descriptif j'ai mis "salon, google_home2" pour indiquer la diffusion de ce message sur ces google Home. Un autre exemple, mes enfants mettent la table à tour de rôle chaque jour. J'ai créé un événement dans mon agenda pour prévenir à l'enfant responsable de cette tâche de mettre la table.

Mes exemples sont axés à une gestion routinière d'une petite famille. Mais on pourrait imaginer bien d'autres utilisations que cela. Tant qu'il est possible d'avoir un "assistant-plugins" et un Google Home.

Aymkdn commented 5 years ago

Oui donc c'est bien un rappel d'événement :-) Le plugin lisant sur les Google Home un événement d'un calendrier au moment où il est programmé. Toi tu l'utilises pour prévenir tes enfants, quand d'autres pourront l'utiliser pour avoir un rappel de diverses tâches.

Je veux bien le rajouter à la liste des plugins disponibles, mais à condition qu'il change de nom du coup, pour éviter toute confusion. Si tu es d'accord, alors je vérifierai les autres parties de ton plugin et je t'indiquerai quoi faire pour qu'il soit publié/listé avec les autres plugins !

Ybbet commented 5 years ago

Oui et non. Mais si on prend dans ce sens (cf. assistant-rappel-calendrier), on peut voir pour avoir un paramètre supplémentaire : "message". De ce fait, nous aurons 2 paramètres : ics et message. Ce dernier pourra être personnalisé par chacun et sera cité "avant" le titre de l'événement diffusé sur les Google Home. Je regarde pour renommer le plugin.

Ybbet commented 5 years ago

Bonjour,

Voici le plugin : https://github.com/Ybbet/assistant-rappel-calendrier Je reste à ta disposition si besoin.

Aymkdn commented 5 years ago

Nickel ! Merci !

J'ai soumis quelques mineures modifications.

Il te reste maintenant à le publier sur NPM :

  1. Crée un compte : https://docs.npmjs.com/creating-a-new-npm-user-account
  2. Publie sur NPM : https://docs.npmjs.com/creating-and-publishing-unscoped-public-packages#publishing-unscoped-public-packages

Une fois fait, dis le moi et je te rajoute dans la liste des plugins.

Merci pour ton partage :-)

Ybbet commented 5 years ago

Hello.

Je ne vois pas ta pull request. J'ai publié sur npm -> https://www.npmjs.com/package/assistant-rappel-calendrier

Aymkdn commented 5 years ago

En effet elles n'apparaîssent pas... Je regarde ça quand j'ai deux minutes !

Aymkdn commented 5 years ago

Voilà je les ai refaites ^^

N'oublie pas de modifier le numéro de version (dans package.json) et de republier sur NPM.

Et j'ai rajouté ton plugin dans la liste. Merci !