Docs (WIP), Firebase

This commit is contained in:
Philipp Heckel 2022-04-19 19:22:19 -04:00
parent 5a9b2122c2
commit 3c3b2477af
3 changed files with 104 additions and 0 deletions

View file

@ -877,6 +877,102 @@ Here's an example that will open Reddit when the notification is clicked:
])); ]));
``` ```
## User actions
=== "`view` action"
``` json
{
"action": "view",
"label": "Open bing.com",
"url": "https://bing.com"
}
```
=== "`broadcast` action"
``` json
{
"action": "broadcast",
"label": "Send broadcast",
"intent": "io.heckel.ntfy.USER_ACTION",
"extras": {
"param": "this is a param",
"anotherparam": "this is another one"
}
}
```
=== "`http` action"
``` json
{
"action": "http",
"label": "Take picture",
"method": "POST",
"url": "https://homecam.lan/capture",
"headers": {
"Authorization": "..."
},
"body": "this is a message"
}
```
Examples:
=== "Open a website"
``` json
{
"action": "view",
"label": "Open bing.com",
"url": "https://bing.com"
}
```
=== "Open location in Google Maps"
``` json
{
"action": "view",
"label": "Show map",
"url": "geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California"
}
```
=== "Open a ntfy topic (deep link)"
``` json
{
"action": "view",
"label": "Show stats",
"url": "ntfy://ntfy.sh/stats"
}
```
=== "Send broadcast"
``` json
{
"action": "broadcast",
"label": "Send broadcast",
"intent": "my.custom.intent",
"extras": {
"message": "whats up, hello"
}
}
```
=== "Send a ntfy message"
``` json
{
"action": "http",
"label": "Send message",
"method": "POST",
"url": "http://ntfy.example.com/mytopic",
"headers": {
"Title": "another message",
"Tags": "tag1, tag2"
},
"body": "this is a message"
}
```
## Attachments ## Attachments
You can **send images and other files to your phone** as attachments to a notification. The attachments are then downloaded You can **send images and other files to your phone** as attachments to a notification. The attachments are then downloaded
onto your phone (depending on size and setting automatically), and can be used from the Downloads folder. onto your phone (depending on size and setting automatically), and can be used from the Downloads folder.

View file

@ -81,6 +81,13 @@ func toFirebaseMessage(m *message, auther auth.Auther) (*messaging.Message, erro
"message": m.Message, "message": m.Message,
"encoding": m.Encoding, "encoding": m.Encoding,
} }
if len(m.Actions) > 0 {
actions, err := json.Marshal(m.Actions)
if err != nil {
return nil, err
}
data["actions"] = string(actions)
}
if m.Attachment != nil { if m.Attachment != nil {
data["attachment_name"] = m.Attachment.Name data["attachment_name"] = m.Attachment.Name
data["attachment_type"] = m.Attachment.Type data["attachment_type"] = m.Attachment.Type

View file

@ -53,6 +53,7 @@ type action struct {
Method string `json:"method,omitempty"` // used in "http" action, default is POST (!) Method string `json:"method,omitempty"` // used in "http" action, default is POST (!)
Headers map[string]string `json:"headers,omitempty"` // used in "http" action Headers map[string]string `json:"headers,omitempty"` // used in "http" action
Body string `json:"body,omitempty"` // used in "http" action Body string `json:"body,omitempty"` // used in "http" action
Intent string `json:"intent,omitempty"` // used in "broadcast" action
Extras map[string]string `json:"extras,omitempty"` // used in "broadcast" action Extras map[string]string `json:"extras,omitempty"` // used in "broadcast" action
} }