I am trying to fetch Signal Messenger Messages.
they come like this:
[
{
"envelope":
{
"source":"APHONENUMBER",
"sourceNumber":"APHONENUMBER",
"sourceUuid":"SOMEUID",
"sourceName":"SOMENAME",
"sourceDevice":2,
"timestamp":1746072621643,
"serverReceivedTimestamp":1746072621400,
"serverDeliveredTimestamp":1746072629686,
"syncMessage":
{
"readMessages":
[
{
"sender":"ANOTHERPHONENUMBER",
"senderNumber":"ANOTHERPHONENUMBER",
"senderUuid":"SOMEOTHERUID",
"timestamp":1746041119011
},
{"sender":"APHONENUMBER","senderNumber":"APHONENUMBER","senderUuid":"SOMEUID","timestamp":1746041117020}
]
}
},
"account":"APHONENUMBER"
},
{
"envelope":
{
"source":"APHONENUMBER",
"sourceNumber":"APHONENUMBER",
"sourceUuid":"SOMEUID",
"sourceName":"SOMENAME",
"sourceDevice":2,
"timestamp":1746072623669,
"serverReceivedTimestamp":1746072623637,
"serverDeliveredTimestamp":1746072629687,
"syncMessage":
{
"sentMessage":
{
"destination":"ANOTHERPHONENUMBER",
"destinationNumber":"ANOTHERPHONENUMBER",
"destinationUuid":"SOMEOTHERUID",
"timestamp":1746072623669,
"message":"hi",
"expiresInSeconds":0,
"viewOnce":false
}
}
},
"account":"APHONENUMBER"
},
{
"envelope":
{
"source":"ANOTHERPHONENUMBER",
"sourceNumber":"ANOTHERPHONENUMBER",
"sourceUuid":"SOMEOTHERUID",
"sourceName":"ANOTHERNAME",
"sourceDevice":1,
"timestamp":1746072623471,
"serverReceivedTimestamp":1746072623948,
"serverDeliveredTimestamp":1746072629687,
"dataMessage":
{
"timestamp":1746072623471,
"message":null,
"expiresInSeconds":0,
"viewOnce":false,
"reaction":
{
"emoji":"šš½",
"targetAuthor":"APHONENUMBER",
"targetAuthorNumber":"APHONENUMBER",
"targetAuthorUuid":"SOMEUID",
"targetSentTimestamp":1746072623669,
"isRemove":false
}
}
},
"account":"APHONENUMBER"
},
{
"envelope":
{
"source":"ANOTHERPHONENUMBER",
"sourceNumber":"ANOTHERPHONENUMBER",
"sourceUuid":"SOMEOTHERUID",
"sourceName":"ANOTHERNAME",
"sourceDevice":1,
"timestamp":1746072623465,
"serverReceivedTimestamp":1746072623967,
"serverDeliveredTimestamp":1746072629687,
"receiptMessage":
{
"when":1746072623465,
"isDelivery":true,
"isRead":false,
"isViewed":false,
"timestamps":[1746072623669]
}
},
"account":"APHONENUMBER"
},
{
"envelope":
{
"source":"ANOTHERPHONENUMBER",
"sourceNumber":"ANOTHERPHONENUMBER",
"sourceUuid":"SOMEOTHERUID",
"sourceName":"ANOTHERNAME",
"sourceDevice":1,
"timestamp":1746072624012,
"serverReceivedTimestamp":1746072624080,
"serverDeliveredTimestamp":1746072629687,
"receiptMessage":
{"when":1746072624012,"isDelivery":false,"isRead":true,"isViewed":false,"timestamps":[1746072623669]}},"account":"APHONENUMBER"},
{"envelope":{"source":"ANOTHERPHONENUMBER","sourceNumber":"ANOTHERPHONENUMBER","sourceUuid":"SOMEOTHERUID","sourceName":"ANOTHERNAME","sourceDevice":1,"timestamp":1746072624144,"serverReceivedTimestamp":1746072624212,"serverDeliveredTimestamp":1746072629687,"typingMessage":{"action":"STARTED","timestamp":1746072624144}},"account":"APHONENUMBER"},
{
"envelope":
{
"source":"ANOTHERPHONENUMBER",
"sourceNumber":"ANOTHERPHONENUMBER",
"sourceUuid":"SOMEOTHERUID",
"sourceName":"ANOTHERNAME",
"sourceDevice":1,
"timestamp":1746072624275,
"serverReceivedTimestamp":1746072624344,
"serverDeliveredTimestamp":1746072629687,
"dataMessage":
{
"timestamp":1746072624275,
"message":"Hi Ewald",
"expiresInSeconds":0,
"viewOnce":false,
"quote":
{
"id":1746072623669,
"author":"APHONENUMBER",
"authorNumber":"APHONENUMBER",
"authorUuid":"SOMEUID",
"text":"hi",
"attachments":[]
}
}
},
"account":"APHONENUMBER"
},
{
"envelope":
{
"source":"APHONENUMBER",
"sourceNumber":"APHONENUMBER",
"sourceUuid":"SOMEUID",
"sourceName":"SOMENAME",
"sourceDevice":2,
"timestamp":1746072624841,
"serverReceivedTimestamp":1746072624425,
"serverDeliveredTimestamp":1746072629687,
"syncMessage":
{
"readMessages":
[
{
"sender":"APHONENUMBER",
"senderNumber":"APHONENUMBER",
"senderUuid":"SOMEUID",
"timestamp":1746072623669
}
]
}
},
"account":"APHONENUMBER"
}
]
I fetch the messages with this:
sensor:
- platform: rest
name: "Signal message received test"
unique_id: signal_msg_rcv_t
resource: http://MYIP:8080/v1/receive/MYNUMBER
headers:
Content-Type: application/json
json_attributes_path: $.[0].envelope
json_attributes:
- source
- sourceName
- timestamp
value_template: "{{ value_json[0].envelope.dataMessage.message }}"
But as you can see I donāt need index 0. I need index 3&7. Because those are the ones that actually hold the received messages. The rest are receiptMessage or syncMessage.
And how to do that for json_attributes_path: $.[0].envelope
How can I determine which index to use. And potentially extract two sensor values in one call. So not two different sensors, but one sensor, two values in one go.