Default value for intent

Hello
Situation
I have following intent:

[SetTimer]
hour_expr     =  ( (0..59)  {hours} (Stunden | Stunde) )      
minute_expr =  ( (1..90)  {minutes} (Minuten | Minute ) )
second_expr = ( (1..90)  {seconds}  (Sekunden | Sekunde) )
time_expr = ((<hour_expr> [[und] <minute_expr>]  [[und] <second_expr>]) |  ( <minute_expr>  [[und]  <second_expr> ] )   |  <second_expr> )

stelle [(im | in der) ($rooms){room}] einen (Timer|Alarm) [(im | in der) ($rooms){room}] auf <time_expr>

Problem:
If I speak something without hours or seconds these slots are not used.
`

  • Stelle einen alarm im wohnzimmer auf 2 Minuten
    Result:

      "slots": {
          "minutes": 2
      },
    

`
I tried it with that (see: last Part : | (:0){hours} (:0){minutes} <second_expr> ), but I don’t know how to do it for all parts.

time_expr=((<hour_expr>[[und]<minute_expr>][[und]<second_expr>])|(<minute_expr>[[und]<second_expr> ] )|(:0){hours}(:0){minutes}<second_expr>)
  • Stelle einen alarm im wohnzimmer auf 2 Sekunden
    Result:

      "slots": {
         "hours": "0",
         "minutes": "0",
         "seconds": 2
      },
    

Wish:
I would like to have default value of 0 (zero) for all slots, which are not given.

Thanks for all hints

I found the Solution. Quit simple.

time_expr=(((:0){minutes} (:0){seconds}<hour_expr>[[und]<minute_expr>][[und]<second_expr>])| ((:0){hours}(:0){seconds}<minute_expr>[ [und] <second_expr> ] )|((:0){hours}(:0){minutes} <second_expr>))

Just to add: (in the hour Part)

(:0){minutes}(:0){seconds}

And: (in the minute Part)

(:0){hours}(:0){seconds}

And:(in the seconds Part)

(:0){hours}(:0){minutes}

Like that, I can set a timer in Hassio

- service: script.turn_on
  data_template:
      entity_id: script.script_settimer
      variables:
        siteId: >
          {{trigger.event.data._intent.siteId}}
        sessionId: >
          {{trigger.event.data._intent.sessionId}}
        room: >
          {% if trigger.event.data.room %}
            {{ trigger.event.data.room}}
          {% else %}
            {{ trigger.event.data._intent.siteId}}
          {% endif %}
        seconds: >
            {{trigger.event.data.seconds}}
        minutes: >  
            {{trigger.event.data.minutes }}
        hours: >
            {{trigger.event.data.hours}}

And the script:

script_settimer:
alias: script_settimer
sequence:
- service: timer.start
  data:
      entity_id: timer.alarm
      duration: >
        {{hours}}:{{minutes}}:{{seconds}}    

- service: script.turn_on
  data_template:
      entity_id: script.script_talk_to_satellite
      variables:
        siteId: >
          {{siteId}}
        sessionId: >
          {{sessionId}}   
        text: "Ich habe den Alarm auf {{hours}}  Stunden, {{minutes}} Minuten und {{seconds}} Sekunden gestellt"
1 Like