Parsing JSON from a webhook

Hi there,

I’ve got a device with the ability to POST it’s status to a server every X seconds - this device is situated headless and remote, so being able to keep an eye on it is essential.

With the webhook output, I can get items like ‘name’ and ‘time’ out perfectly fine, but objects inside the ‘info’ array aren’t parseable though trigger.json.info.status or trigger.json['info']['status']

I’m really stumped by this - everything I’ve read said it should be possible by doing that!

Here’s the output from the trace…

this:
  entity_id: automation.new_automation_3
  state: 'on'
  attributes:
    last_triggered: '2023-03-12T21:11:25.418901+00:00'
    mode: single
    current: 0
    id: '1678647306127'
    friendly_name: New Automation
  last_changed: '2023-03-12T21:07:19.630018+00:00'
  last_updated: '2023-03-12T21:11:27.634795+00:00'
  context:
    id: 01GVBTKXFAVDR749FPAKPT0D74
    parent_id: null
    user_id: null
trigger:
  platform: webhook
  webhook_id: 'REDACTED'
  json:
    hash: 1f2f3106470b8f2a2ec40ede03457533860ef5c1
    version: '3.2'
    name: PR 12 Black
    time: '1678655545'
    info: >-
{"version":"3.2","timeZoneOffset":0,"battery":41,"dropboxAccount":"","signedInAs":"REDACTED","time":1678655545,"queues":{"dropboxQueue":0,"textQueue":0,"hubQueue":0,"uploadQueue":16,"emailQueue":0},"total":{"photosTaken":33,"photoSessions":31,"photoTexts":0,"gifTexts":0,"gifEmails":2,"videoSessions":0,"videoTexts":0,"photoEmails":3,"videoEmails":0,"textErrors":0,"gifSessions":21,"emailErrors":3},"eventSyncServer":"http:\/\/192.168.1.138:8080","syncMethod":"GET","date":"20230312","availableInMB":17508,"today":{"photosTaken":27,"photoSessions":25,"photoTexts":0,"gifTexts":0,"gifEmails":2,"videoSessions":0,"videoTexts":0,"photoEmails":3,"videoEmails":0,"textErrors":0,"gifSessions":13,"emailErrors":3},"totalInMB":60984,"model":"iPad
      Pro 12.9\" 3rd Generation","status":"Startup","dropboxSyncPrefix":""}
  query:
    __type: <class 'multidict._multidict.MultiDictProxy'>
    repr: <MultiDictProxy()>
  description: webhook
  id: '0'
  idx: '0'
  alias: null

Any help would be much appreciated!

Is info a JSON string that looks like an object? What does this give?

{{ ((trigger.json['info'])|from_json)['status'] }}