Where's my...

This custom sentence finds your lost phone/keys/wallet. It makes use of the Bermuda integration, which uses Bluetooth proxies to track devices (and therefore people) from to room to room in the house. For each device, Bermuda creates two sensors sensor.<device>_area and sensor.<device>_area_last_seen.

To use intent scripts you have to install the intent script integration.

Custom sentence

language: "en"
intents:
  CustomFind:
    data:
      - sentences:
          - "( where is | where's | where are | find ) my {device}"
lists:
  device:
    values:
      - in: "watch"
        out: "sensor.watch_area"
      - in: "smartwatch"
        out: "sensor.watch_area"
      - in: "keys"
        out: "sensor.keys_tag_area"
      - in: "wallet"
        out: "sensor.wallet_tag_area"
      - in: "phone"      
        out: "sensor.nokia_area"
      - in: "mobile"
        out: "sensor.nokia_area"
      - in: "mobile phone"
        out: "sensor.nokia_area"

Intent

CustomFind:
  action:
    - variables:
        last_seen: "{{ device }}_last_seen"
    - choose:
        - conditions: "{{ states(device) in ('unavailable', 'unknown') }}"
          sequence:
            - action: script.tts_response
              data:
                tts_sentence: >-
                  {% if device == "sensor.keys_tag_area" %}
                     Last time I saw them, they were in the {{ states(last_seen) }}. I don't know where they are now.             
                  {% else %}
                     Last time I saw it, it was in the {{ states(last_seen) }}. I don't know where it is now.
                  {% endif %}                  
        - conditions: "{{ has_value(device) }}"
          sequence:
            - action: script.tts_response
              data:
                tts_sentence: >-
                  {% if device == "sensor.keys_tag_area" %}
                      They're in the {{ states(device) }}              
                  {% else %}
                      It's in the {{ states(device) }}
                  {% endif %}

Notes

In the custom sentence...

For each device the value passed to the intent script is the entity ID of the "area" sensor generated by Bermuda. This saves some processing later.

In the intent...

The variable last_seen contains the entity ID of the "last seen" sensor provided by Bermuda. This is used if the current area is unavailable or unknown.

Two different responses are generated, depending on whether the state of the area sensor is known ({{ has_value(device) }}) or not ({{ states(device) in ('unavailable', 'unknown') }}). In each case tts_sentence is tweaked to make it grammatically correct.