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: