Philipp Heckel 3 лет назад
Родитель
Сommit
12d347976c
1 измененных файлов с 49 добавлено и 37 удалено
  1. 49 37
      docs/publish.md

+ 49 - 37
docs/publish.md

@@ -805,7 +805,10 @@ all the supported fields:
 
 ## Action buttons
 You can add action buttons to notifications to allow yourself to react to a notification directly. This is incredibly
-useful and has countless applications.
+useful and has countless applications. 
+
+You can control your home appliances (open/close garage door, change temperature on thermostat, ...), react to common 
+monitoring alerts (clear logs when disk is full, ...), and many other things. The sky is the limit.
 
 As of today, the following actions are supported:
 
@@ -821,13 +824,31 @@ Here's an example of what that a notification with actions can look like:
   <figcaption>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</figcaption>
 </figure>
 
-You can set up to three user actions in your notifications, using either of the following methods:
+### Defining actions
+You can define **up to three user actions** in your notifications, using either of the following methods:
+
+* In the [`X-Actions` header](#using-a-header), using a simple comma-separated format
+* As a [JSON array](#using-a-json-array) in the `actions` key, when [publishing as JSON](#publish-as-json) 
+
+#### Using a header
+To define actions using the `X-Actions` header (or any of its aliases: `Actions`, `Action`), use the following format:
+
+=== "Header format (long)"
+    ```
+    action=<action1>, label=<label1>, paramN=... [; action=<action2>, label=<label2>, ...]
+    ```
+
+=== "Header format (short)"
+    ```
+    <action1>, <label1>, paramN=... [; <action2>, <label2>, ...]
+    ```
 
-* In the `X-Actions` header, using the **simple format**
-* As a **JSON array** in the `actions` key, when [publishing as JSON](#publish-as-json) 
+The `action=` and `label=` prefix are optional in all actions, and the `url=` prefix is optional in the `view` and `http` action.
+The format has **some limitations**: You cannot use `,` or `;` in any of the values, and depending on your language/library, UTF-8
+characters may not work. Use the [JSON array format](#using-a-json-array) instead to overcome these limitations.
 
-Using the `X-Actions` header (or any of its aliases: `Actions`, `Action`) and the **simple format** (details see below), you 
-can create the above notification like this. 
+As an example, here's how you can create the above notification using this format. Refer to the [`view` action](#open-websiteapp) and 
+[`http` action](#send-http-request) section for details on the specific actions:
 
 === "Command line (curl)"
     ```
@@ -842,7 +863,7 @@ can create the above notification like this.
     ```
     ntfy publish \
         --actions="view, Open portal, https://home.nest.com/; \
-                  http, Turn down, https://api.nest.com/device/XZ1D2, body=target_temp_f=65" \
+                   http, Turn down, https://api.nest.com/device/XZ1D2, body=target_temp_f=65" \
         myhome \
         "You left the house. Turn down the A/C?"
     ```
@@ -902,28 +923,8 @@ can create the above notification like this.
     ]));
     ```
  
-Here's the generic definition of the simple format: 
-
-=== "Simple format (long)"
-    ```
-    action=<action1>, label=<label1>, paramN=...[; action=<action2>, label=<label2>, ...]
-    ```
-
-=== "Simple format (short)"
-    ```
-    <action1>, <label1>, paramN=...[; <action2>, <label2>, ...]
-    ```
-
-`action=` and `label=` are optional in all actions, and `url=` is optional in the `view` and `http` action.
-
-Simple format examples:
-
-```
-http, Change temp, https://api.nest.com/XZ1D2, body=target_temp=65
-action=view, label=Open site, url=https://ntfy.sh; action=broadcast, label=Turn off, extras.cmd=turn-off
-```
-
-Alternatively, the same actions can be defined as **JSON array** (details see below), if the notification is defined as part of the JSON body 
+#### Using a JSON array
+Alternatively, the same actions can be defined as **JSON array** , if the notification is defined as part of the JSON body 
 (see [publish as JSON](#publish-as-json)):
 
 === "Command line (curl)"
@@ -1118,9 +1119,14 @@ Alternatively, the same actions can be defined as **JSON array** (details see be
     ]));
     ```
 
+The required/optional fields for each action depend on the type of the action itself. Please refer to 
+[`view` action](#open-websiteapp), [`broadcasst` action](#send-android-broadcast), and [`http` action](#send-http-request) 
+for details.
+
 ### Open website/app
-The `view` action opens a website or app when the action button is tapped, e.g. a browser, a Google Maps location, or
-even a deep link into Twitter or a show ntfy topic.
+The `view` action **opens a website or app when the action button is tapped**, e.g. a browser, a Google Maps location, or
+even a deep link into Twitter or a show ntfy topic. How exactly the action is handled depends on how Android and your 
+desktop browser treat the links. Normally it'll just a link in the browser. 
 
 Examples:
 
@@ -1130,7 +1136,7 @@ Examples:
 * `ntfy://` links will open ntfy (see [ntfy:// links](subscribe/phone.md#ntfy-links)), e.g. `ntfy://ntfy.sh/stats`
 * ...
 
-Here's an example using the simple format:
+Here's an example using the [`X-Actions` header](#using-a-header):
 
 === "Command line (curl)"
     ```
@@ -1355,13 +1361,16 @@ The `view` action supports the following fields:
 | `url`    | ✔️       | *URL*    | `https://example.com` | URL to open when action is tapped              |
 
 ### Send Android broadcast
-The `broadcast` action sends an [Android broadcast](https://developer.android.com/guide/components/broadcasts) intent
-when the action button is tapped. This allows integration into automation apps such as [MacroDroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid)
+The `broadcast` action **sends an [Android broadcast](https://developer.android.com/guide/components/broadcasts) intent
+when the action button is tapped**. This allows integration into automation apps such as [MacroDroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid)
 or [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm), which basically means
 you can do everything your phone is capable of. Examples include taking pictures, launching/killing apps, change device
 settings, write/read files, etc.
 
-Here's an example using the simple format:
+By default, the intent **`io.heckel.ntfy.USER_ACTION`** is broadcast, though this can be changed with the `intent` parameter (see below).
+To send extras, use the `extras` parameter. Currently, **only string extras are supported**.
+
+Here's an example using the [`X-Actions` header](#using-a-header):
 
 === "Command line (curl)"
     ```
@@ -1610,10 +1619,13 @@ The `broadcast` action supports the following fields:
 | `extras` | -️       | *map of strings* | *see above*             | Android intent extras. Currently, only string extras are supported. When publishing as JSON, extras are passed as a map. When the simple format is used, use `extras.<param>=<value>`. |
 
 ### Send HTTP request
-The `http` action sends a HTTP POST/GET/PUT request when the action button is tapped. You can use this to trigger REST APIs
+The `http` action **sends a HTTP request when the action button is tapped**. You can use this to trigger REST APIs
 for whatever systems you have, e.g. opening the garage door, or turning on/off lights.
 
-Here's an example using the simple format:
+By default, this action sends a **POST request** (not GET!), though this can be changed with the `method` parameter.
+The only required parameter is `url`. Headers can be passed along using the `headers` parameter.  
+
+Here's an example using the [`X-Actions` header](#using-a-header):
 
 === "Command line (curl)"
     ```