Seeking assistance customizing a sentence/intent with templating - eviltoast

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!

  • paf@jlai.lu
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    8 months ago

    Not 100℅ sure…

    Your intent script might need to be a bit different using

    speech:
       text:
    

    As shown below https://www.home-assistant.io/integrations/intent_script/

       intent_script:
        CustomOutsideHumidity:
          speech:
           text: "It is currently {{ states('sensor.outside_humidity') }} percent humidity outside."
    

    Aldo have a look at https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax/ for the common.yaml

    • Mike Wooskey@lemmy.d.thewooskeys.comOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      8 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@jlai.lu
        link
        fedilink
        English
        arrow-up
        1
        ·
        8 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: