Docs (WIP), Firebase

pull/212/head
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
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.

View File

@ -81,6 +81,13 @@ func toFirebaseMessage(m *message, auther auth.Auther) (*messaging.Message, erro
"message": m.Message,
"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 {
data["attachment_name"] = m.Attachment.Name
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 (!)
Headers map[string]string `json:"headers,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
}