Howdy.

I have the following helpers:

  • input_text.countdown_date_01_name
  • input_datetime.countdown_date_01_date,
  • input_text.countdown_date_02_name
  • input_datetime.countdown_date_02_date
  • I want to add a couple more if I can get this to work

I want to be able to speak “how many days until X”, where X is the value of either input_text.countdown_date_01_name or input_text.countdown_date_02_name, and have Home Assistant speak the response “there are Y days until X”, where X is the value of either input_text.countdown_date_01_name or input_text.countdown_date_02_name, whichever was spoken.

I know how to determine the number of days until the date that is the value of input_datetime.countdown_date_01_date or input_datetime.countdown_date_02_date. But so far I’ve been unable to figure out how to configure the sentence/intent so that HA knows which one to retrieve the value of.

In config/conversations.yaml I have:

intents:
  HowManyDaysUntil:
    - "how many days until {countdownname}"

In config/intents/sentences/en/_cmmon.yaml I have:

lists:
  countdownname:
    values:
      - '{{ states("input_text.countdown_date_01_name") }}'
      - '{{ states("input_text.countdown_date_02_name") }}'

In config/intent_scripts.yaml I have:

HowManyDaysUntil:
  action:
    service: automation.trigger
    data:
      entity_id: automation.how_many_days_until_countdown01

(this automation currently is hardocded to calculate and speak the days until input_datetime.countdown_date_01_date)

The values of my helpers are currently:

  • input_text.countdown_date_01_name = “vacation”
  • input_datetime.countdown_date_01_date = "6/1/2024’

When I speak “how many days until vacation” I get Unexpected error during intent recognition.

I’d appreciate your help with this!

    • Mike WooskeyOP
      link
      fedilink
      English
      23 months ago

      Thanks for the references, but at least one example from https://www.home-assistant.io/integrations/intent_script/ seems to be wrong/outdated.

      From that page:

      Local lists

      Sometimes you don’t need a slot list available for all intents and sentences, so you can define one locally, making it usable only in the context of the intent data (like a collection of sentences) where it was defined. For example:

      language: en
      intents:
        AddListItem:
          data:
            - sentences:
                - add {item} to [my] shopping list
              lists:
                item:
                  wildcard: true
      

      This is the code in my conversations.yaml:

      intents:
        HowManyDaysUntil:
          data:
            - sentences:
                - how many days until {countdownname}
              lists:
                countdownname:
                  - "this"
                  - "that"
      

      Here are the only difference I see between my code and the example above:

      • I don’t have language: en (but when I add it, I get Invalid config for 'conversation' at conversations.yaml, line 1: 'language' is an invalid option for 'conversation', check: conversation->language)
      • The example uses a wildcard and I’m using strings (but I’m following their other examples to have a list of strings)

      However, this yaml gets Invalid config for 'conversation' at conversations.yaml, line 9: value should be a string 'conversation->intents->HowManyDaysUntil->0', got None

      Perhaps I can’t have intents in conversations.yaml? Or maybe not lists? I started this project by editing config/intents/sentences/en/_cmmon.yaml but that’s a bad idea because an update would wipe my customizations. What’s the appropriate place for me to add custom sentences/intents/responses/lists?

      • @paf
        link
        English
        13 months ago

        i’m willing to try to help you but to be honest, it is far from my limited knowledge… and i’m also not english native so i do sometimes struggle to understand some specifc docs…

        That being said, looks like exemple given at https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax/ isn’t inside _common.yaml

        # Example light_HassTurnOn.yaml
        language: "en"
        

        also i just realised that this is developer document which could explain why _common.yaml modifications would be wiped out after an update.

        I just had a look to the non developer doc and it suggest intent_script is to be added to configuration.yaml and intent to custom_sentences/<language> as shown here https://www.home-assistant.io/integrations/conversation/

        # Example configuration.yaml entry
        intent_script:
        
        # Example temperature.yaml entry
        language: "en"
        intents: