Kalliope reminder with snooze

Tuesday, November 7, 2017

mpdmopidykalliopereminder

Quick blog post to talk about how I setup Kalliope to remind me stuff, but with a snooze feature.

The default setup of the neurotimer let you ask Kalliope to remind you stuff after some time (minutes or hours).

I really like it because I have a poor short term memory, so when I have something to do in 30min, I use the kalliope neurotimer module to help me remember… But sometime, I want Kalliope to remind me again after 5 min because I didn’t have the time to do at the time Kalliope reminded me.

Let’s take a real life use case:

Let’s say I am in a game (starcraft2 fan here ^^) and someone is calling me. When in a game, I can’t (don’t want to) pick up the phone, but I want to remember to call back the person. For this I’m using the neurotimer to do so, with a sentence like "Remind me in XX minutes to YYY".

This is the default setup explained in the neurotimer README file here.

But that is not enough for me, because I may be still in game when being reminded by Kalliope, so I want to have the ability to tell kalliope to remind me again in X minutes, without re-asking the full order like before.

The workflow I want:

    Me: "Kalliope… remind me in 10 minutes to call back dad"
    Kalliope: "I'll remind you in 10 minutes to call back dad"
    [… 10minutes later …]
    Kalliope: "You asked me to remind you call back dad"
    Kalliope: "Do you want me to remind you again?"
      option1: (I want another reminder)
        Me: "Yes"
        Kalliope: "When?"
        Me: "In 5 minutes"
        [… 5 minutes later …]
        Kalliope: "You asked me to remind you to call back dad"

          *Option: Again, I'm in a sort of a loop here, so as long as I say "yes", it will remind me again until I say no (or anything other than yes).*

      Option2:
        Me: "No"
        Kalliope: "Ok, I won't remind you again."

So how does it work? I’m using the Neurotimer module, with the Neurotransmitter and the Kalliope memory to do so.

It does bring a limitation though, as you can’t have multi reminder with “snooze” as the memory will only remember the last one.

My configuration to do so is the following:

Brain file:

      {% raw %}
      ---
        - name: "reminder-synapse"
          signals:
            - order: "remind me to {{ remember }} in {{ time }} minutes"
          neurons:
            - neurotimer:
                minutes: "{{ time }}"
                synapse: "reminder-todo"
                forwarded_parameters:
                  remember: "{{ remember }}"
                kalliope_memory:
                  reminder_2: "{{ remember }}"
            - say:
                message:
                  - "Ok sir, reminder setup"

        - name: "reminder-todo"
          signals:
            - order: "reminder_todo_no_order"
          neurons:
            - say:
                message:
                  - "Sir, you asked me to remind you to {{ remember }}"
            - say:
                message: "Do you want me to remind you again ?"
            - neurotransmitter:
                from_answer_link:
                  - synapse: "reminder2"
                    answers:
                      - "oui"
                  - synapse: "no-response"
                    answers:
                      - "non"
                default: "no-response"

        - name: "reminder2"
          signals:
            - order: "reminder2-no-order"
          neurons:
            - say:
                message: "When do I have to remind you to {{ kalliope_memory['reminder_2'] }} ?"
            - neurotransmitter:
                from_answer_link:
                  - synapse: "reminder-via-memory"
                    answers:
                      - "in {{time}} minutes"
                  - synapse: "reminder-via-memory"
                    answers:
                      - "dans {{time}} minutes"
                default: "no-response"

        - name: "reminder-via-memory"
          signals:
            - order: "reminder-via-memory-no-order"
          neurons:
            - neurotimer:
                minutes: "{{ time }}"
                synapse: "reminder-todo"
                forwarded_parameters:
                  remember: "{{ kalliope_memory['reminder_2'] }}"
            - say:
                message:
                  - "Ok, I'll remind you in {{time}} minutes to {{ kalliope_memory['reminder_2'] }}"

      {% endraw %}

Nota: The “no-response” is a default synapse I created that simply answer “ok sir” or something like this :).

And voilà :)


Contact

If you find any issue or have any question about this article, feel free to reach out to me via email, mastodon, matrix or even IRC, see the About Me page for details.

See Also

Kalliope as your personal DJ

Headless RaspberryPi installation