Difference between revisions of "Actions"
(14 intermediate revisions by the same user not shown) | |||
Line 19: | Line 19: | ||
| data-sort-value=0|0.1.0 | | data-sort-value=0|0.1.0 | ||
|| | || | ||
− | Plays an audio | + | Plays an audio. The <code>{URL}</code> part must be replaced with the audio URL. This action works in the same way as <code>video:{URL}</code>, except that the video screen is not displayed. Instead, the background screen is displayed. If the corresponding content item provides a <code>background</code> property, it is used, otherwise the next available <code>background</code> property (at higher level) is used. |
|- | |- | ||
| <code>image:{URL}</code> | | <code>image:{URL}</code> | ||
Line 60: | Line 60: | ||
Starts a playlist without a corresponding content page. The playlist data must be provided as <code>data</code> property by the corresponding content item. | Starts a playlist without a corresponding content page. The playlist data must be provided as <code>data</code> property by the corresponding content item. | ||
The data structure is the same like the '''Templated Items''' from the '''Content API'''. Please see [[Content Root Object]] for more information. | The data structure is the same like the '''Templated Items''' from the '''Content API'''. Please see [[Content Root Object]] for more information. | ||
+ | |||
+ | '''Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. <code>"playlist:json:{BASE64_ENCODED_JSON}"</code>).''' | ||
|- | |- | ||
| <code>slideshow:{URL}</code> | | <code>slideshow:{URL}</code> | ||
Line 76: | Line 78: | ||
Starts a slideshow without a corresponding content page. The playlist data must be provided as <code>data</code> property by the corresponding content item. | Starts a slideshow without a corresponding content page. The playlist data must be provided as <code>data</code> property by the corresponding content item. | ||
The data structure is the same like the '''Templated Items''' from the '''Content API'''. Please see [[Content Root Object]] for more information. | The data structure is the same like the '''Templated Items''' from the '''Content API'''. Please see [[Content Root Object]] for more information. | ||
+ | |||
+ | '''Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. <code>"slideshow:json:{BASE64_ENCODED_JSON}"</code>).''' | ||
|- | |- | ||
| <code>menu:{URL}</code> | | <code>menu:{URL}</code> | ||
Line 92: | Line 96: | ||
Shows a menu. The menu data must be provided as <code>data</code> property by the corresponding content item. | Shows a menu. The menu data must be provided as <code>data</code> property by the corresponding content item. | ||
Please see [[Menu Root Object]] for the data structure. | Please see [[Menu Root Object]] for the data structure. | ||
+ | |||
+ | '''Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. <code>"menu:json:{BASE64_ENCODED_JSON}"</code>).''' | ||
|- | |- | ||
| <code>content:{URL}</code> | | <code>content:{URL}</code> | ||
Line 108: | Line 114: | ||
Shows a content page. The content data must be provided as <code>data</code> property by the corresponding content item. | Shows a content page. The content data must be provided as <code>data</code> property by the corresponding content item. | ||
Please see [[Content Root Object]] for the data structure. | Please see [[Content Root Object]] for the data structure. | ||
+ | |||
+ | '''Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. <code>"content:json:{BASE64_ENCODED_JSON}"</code>).''' | ||
|- | |- | ||
| <code>panel:{URL}</code> | | <code>panel:{URL}</code> | ||
Line 124: | Line 132: | ||
Shows a content page in a panel. The content data must be provided as <code>data</code> property by the corresponding content item. | Shows a content page in a panel. The content data must be provided as <code>data</code> property by the corresponding content item. | ||
Please see [[Content Root Object]] for the data structure. | Please see [[Content Root Object]] for the data structure. | ||
+ | |||
+ | '''Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. <code>"panel:json:{BASE64_ENCODED_JSON}"</code>).''' | ||
|- | |- | ||
| <code>success:{TEXT}</code> | | <code>success:{TEXT}</code> | ||
Line 183: | Line 193: | ||
| data-sort-value=40|'''0.1.40''' | | data-sort-value=40|'''0.1.40''' | ||
|| | || | ||
− | Plays a plugin audio | + | Plays a plugin audio. The <code>{URL}</code> part must be replaced with the plugin URL. This action works in the same way as <code>video:plugin:{URL}</code>, except that the video screen is not displayed. Instead, the background screen is displayed. If the corresponding content item provides a <code>background</code> property, it is used, otherwise the next available <code>background</code> property (at higher level) is used. |
Please see the [[YouTube, Vimeo & Co.]] for plugin examples. | Please see the [[YouTube, Vimeo & Co.]] for plugin examples. | ||
|} | |} | ||
Line 213: | Line 223: | ||
It is possible to execute actions on server side. For this feature, you need programming skills, because you need to implement a service for your server. Server actions allow you to provide logins, member areas, parental controls, search queries, and more. All server actions are sent as HTTP POST requests. Parallel server actions are not allowed (only one server action can be running on application side). | It is possible to execute actions on server side. For this feature, you need programming skills, because you need to implement a service for your server. Server actions allow you to provide logins, member areas, parental controls, search queries, and more. All server actions are sent as HTTP POST requests. Parallel server actions are not allowed (only one server action can be running on application side). | ||
− | '''Note: The <code>Content-Type</code> header for all HTTP POST requests is set to <code>application/x-www-form-urlencoded</code> (instead of <code>application/json</code>) to ensure CORS support for simple services (by avoiding CORS preflight requests). Please ignore the <code>Content-Type</code> header on your server and handle all incoming data from the Media Station X application as JSON objects. Since version 0.1.90, you can set an <code>accurate:</code> prefix before <code>{URL}</code> to use the accurate headers (e.g. <code>execute:accurate:{URL}</code>, <code>execute:code:accurate:{URL}</code>, <code>execute:user:accurate:{URL}</code>, etc.). Since version 0.1.90, it is also possible to execute multiple server actions at the same time by using a <code>service:</code> prefix (e.g. <code>execute:service:{URL}</code>, <code>execute:service:accurate:{URL}</code>, <code>execute:service:user:accurate:{URL}</code>, etc.). However, to avoid | + | '''Note: The <code>Content-Type</code> header for all HTTP POST requests is set to <code>application/x-www-form-urlencoded</code> (instead of <code>application/json</code>) to ensure CORS support for simple services (by avoiding CORS preflight requests). Please ignore the <code>Content-Type</code> header on your server and handle all incoming data from the Media Station X application as JSON objects. Since version 0.1.90, you can set an <code>accurate:</code> prefix before <code>{URL}</code> to use the accurate headers (e.g. <code>execute:accurate:{URL}</code>, <code>execute:code:accurate:{URL}</code>, <code>execute:user:accurate:{URL}</code>, etc.). Since version 0.1.90, it is also possible to execute multiple server actions at the same time by using a <code>service:</code> prefix (e.g. <code>execute:service:{URL}</code>, <code>execute:service:accurate:{URL}</code>, <code>execute:service:user:accurate:{URL}</code>, etc.). However, to detect errors and avoid overloading, the maximum number of parallel service actions is limited to 128.''' |
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
Line 290: | Line 300: | ||
|| Reloads the current menu data. | || Reloads the current menu data. | ||
− | '''Note: The menu data can only be reloaded if it has not been loaded at startup or set via a data action. Since version 0.1.134, you can reload the menu data that has been loaded at startup by using the <code>reference</code> property.''' | + | '''Note: The menu data can only be reloaded if it has not been loaded at startup or set via a data action. Since version 0.1.134, you can reload the menu data that has been loaded at startup by using the <code>reference</code> property. Since version 0.1.144, you can also replace (and reload) the menu data that has been loaded at startup or set via a data action by using the <code>replace:menu:{CONTENT_FLAG}:{REQUEST_ACTION}</code> action.''' |
|- | |- | ||
| <code>reload:content</code> | | <code>reload:content</code> | ||
Line 298: | Line 308: | ||
Reloads the current content data. | Reloads the current content data. | ||
− | '''Note: The content data can only be reloaded if it has not been loaded at startup or set via a data action. Since version 0.1.134, you can reload the content data that has been loaded at startup by using the <code>reference</code> property.''' | + | '''Note: The content data can only be reloaded if it has not been loaded at startup or set via a data action. Since version 0.1.134, you can reload the content data that has been loaded at startup by using the <code>reference</code> property. Since version 0.1.144, you can also replace (and reload) the content data that has been loaded at startup or set via a data action by using the <code>replace:content:{CONTENT_FLAG}:{REQUEST_ACTION}</code> action.''' |
|- | |- | ||
| <code>reload:panel</code> | | <code>reload:panel</code> | ||
Line 306: | Line 316: | ||
Reloads the current panel content data. | Reloads the current panel content data. | ||
− | '''Note: The panel content data can only be reloaded if it has not been set via a data action.''' | + | '''Note: The panel content data can only be reloaded if it has not been set via a data action. Since version 0.1.144, you can replace (and reload) the panel content data that has been set via a data action by using the <code>replace:panel:{CONTENT_FLAG}:{REQUEST_ACTION}</code> action.''' |
|- | |- | ||
| <code>update:menu:{ID}</code> | | <code>update:menu:{ID}</code> | ||
Line 345: | Line 355: | ||
* <code>badge</code> | * <code>badge</code> | ||
* <code>badgeColor</code> | * <code>badgeColor</code> | ||
+ | * <code>stamp</code> | ||
+ | * <code>stampColor</code> | ||
* <code>progress</code> | * <code>progress</code> | ||
* <code>progressColor</code> | * <code>progressColor</code> | ||
+ | * <code>progressBackColor</code> | ||
* <code>wrapperColor</code> | * <code>wrapperColor</code> | ||
* <code>image</code> | * <code>image</code> | ||
Line 401: | Line 414: | ||
| data-sort-value=58|'''0.1.58''' | | data-sort-value=58|'''0.1.58''' | ||
|| | || | ||
− | If an action starts with the character <code>[</code> and ends with the character <code>]</code>, you can use the character <code>{{pipe}}</code> to execute multiple actions in a row. The <code>{ACTION}</code> part must be replaced with any action. If the corresponding content item provides a <code>data</code> property, it is used for each action. By the way, this syntax can also be used to perform a NOP (no operation) action by indicating an empty list (i.e. <code>[]</code>). | + | If an action starts with the character <code>[</code> and ends with the character <code>]</code>, you can use the character <code>{{pipe}}</code> to execute multiple actions in a row. The <code>{ACTION}</code> part must be replaced with any action. If the corresponding content item provides a <code>data</code> property, it is used for each action. If you want to use the <code>{{pipe}}</code> character within an action, please use the <code>{pipe}</code> keyword (e.g. <code>[reload:content{{pipe}}info:[P{pipe}I{pipe}P{pipe}E]]</code>). By the way, this syntax can also be used to perform a NOP (no operation) action by indicating an empty list (i.e. <code>[]</code>). |
'''Note: If you use actions like <code>video:{URL}</code> or <code>audio:{URL}</code> with this syntax, the corresponding content item properties (i.e. <code>playerLabel</code>, <code>background</code>, and <code>properties</code>) must be indicated in the action-related <code>data</code> property in order to be used.''' | '''Note: If you use actions like <code>video:{URL}</code> or <code>audio:{URL}</code> with this syntax, the corresponding content item properties (i.e. <code>playerLabel</code>, <code>background</code>, and <code>properties</code>) must be indicated in the action-related <code>data</code> property in order to be used.''' | ||
|} | |} |
Latest revision as of 19:28, 11 April 2024
All actions are indicated as strings and are used by content items to perform specific tasks (e.g. play a video, start a slideshow, etc.). Some actions use additional data, provided by the corresponding content item.
Note: The actions described here are the main actions that are perfectly adequate for the most media pages. However, if you want to create more complex and interactive media pages, please have a look at the Internal Actions.
Basic Actions[edit]
Syntax | Example | Since Version | Description |
---|---|---|---|
video:{URL}
|
video:http://msx.benzac.de/media/video1.mp4
|
0.1.0 |
Plays a video. The |
audio:{URL}
|
audio:http://msx.benzac.de/media/audio1.mp3
|
0.1.0 |
Plays an audio. The |
image:{URL}
|
image:http://msx.benzac.de/img/bg1.jpg
|
0.1.0 |
Shows an image. The |
image:context
|
image:context
|
0.1.0 |
Shows an image by using the current context. The image URL must be provided as |
link:{URL}
|
link:http://msx.benzac.de/info/
|
0.1.0 |
Opens a link. The |
link:window:{URL}
|
link:window:http://msx.benzac.de/info/
|
0.1.0 |
Opens a link in a separate window or in an external browser. The |
playlist:{URL}
|
playlist:http://msx.benzac.de/info/data/guide/videos.json
|
0.1.0 |
Loads a playlist without a corresponding content page. The Note: Please note that it is also possible to indicate request actions instead of URLs (e.g. |
playlist:data
|
playlist:data
|
0.1.0 |
Starts a playlist without a corresponding content page. The playlist data must be provided as Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. |
slideshow:{URL}
|
slideshow:http://msx.benzac.de/info/data/guide/images.json
|
0.1.0 |
Loads a slideshow without a corresponding content page. The Note: Please note that it is also possible to indicate request actions instead of URLs (e.g. |
slideshow:data
|
slideshow:data
|
0.1.0 |
Starts a slideshow without a corresponding content page. The playlist data must be provided as Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. |
menu:{URL}
|
menu:http://msx.benzac.de/info/data/guide/actions.json
|
0.1.0 |
Loads a menu. The Note: Please note that it is also possible to indicate request actions instead of URLs (e.g. |
menu:data
|
menu:data
|
0.1.0 |
Shows a menu. The menu data must be provided as Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. |
content:{URL}
|
content:http://msx.benzac.de/info/data/guide/videos.json
|
0.1.0 |
Loads a content page. The Note: Please note that it is also possible to indicate request actions instead of URLs (e.g. |
content:data
|
content:data
|
0.1.0 |
Shows a content page. The content data must be provided as Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. |
panel:{URL}
|
panel:http://msx.benzac.de/info/data/guide/panel.json
|
0.1.0 |
Loads a content page in a panel. The Note: Please note that it is also possible to indicate request actions instead of URLs (e.g. |
panel:data
|
panel:data
|
0.1.0 |
Shows a content page in a panel. The content data must be provided as Note: Please note that it is also possible to indicate the data inline as base64-encoded JSON (e.g. |
success:{TEXT}
|
success:This is a success message.
|
0.1.0 |
Shows a success message. The |
info:{TEXT}
|
info:This is an info message.
|
0.1.0 |
Shows an info message. The |
warn:{TEXT}
|
warn:This is a warning message.
|
0.1.0 |
Shows a warning message. The |
error:{TEXT}
|
error:This is an error message.
|
0.1.0 |
Shows an error message. The |
focus:{ID}
|
focus:content_item_id
|
0.1.0 |
Sets the focus to a specific item in the current context. The |
focus:index:{INDEX}
|
focus:index:0
|
0.1.0 |
Sets the focus to a specific item in the current context. The |
start
|
start
|
0.1.30 |
Sets up a new start parameter. The start parameter data must be provided as |
video:plugin:{URL}
|
video:plugin:http://msx.benzac.de/plugins/template.html
|
0.1.40 |
Plays a plugin video. The |
audio:plugin:{URL}
|
audio:plugin:http://msx.benzac.de/plugins/template.html
|
0.1.40 |
Plays a plugin audio. The |
HbbTV Actions[edit]
If you use the HbbTV version of Media Station X, you have additional actions available.
Syntax | Example | Since Version | Description |
---|---|---|---|
video:broadcast:current
|
video:broadcast:current
|
0.1.30 |
Plays the current broadcast channel. |
system:hbbtv:launch:{URL}
|
system:hbbtv:launch:http://msx.benzac.de/hbbtv.html
|
0.1.30 |
Launches a new HbbTV application. The |
For more information about the HbbTV specification, please visit: https://www.hbbtv.org.
Server Actions[edit]
It is possible to execute actions on server side. For this feature, you need programming skills, because you need to implement a service for your server. Server actions allow you to provide logins, member areas, parental controls, search queries, and more. All server actions are sent as HTTP POST requests. Parallel server actions are not allowed (only one server action can be running on application side).
Note: The Content-Type
header for all HTTP POST requests is set to application/x-www-form-urlencoded
(instead of application/json
) to ensure CORS support for simple services (by avoiding CORS preflight requests). Please ignore the Content-Type
header on your server and handle all incoming data from the Media Station X application as JSON objects. Since version 0.1.90, you can set an accurate:
prefix before {URL}
to use the accurate headers (e.g. execute:accurate:{URL}
, execute:code:accurate:{URL}
, execute:user:accurate:{URL}
, etc.). Since version 0.1.90, it is also possible to execute multiple server actions at the same time by using a service:
prefix (e.g. execute:service:{URL}
, execute:service:accurate:{URL}
, execute:service:user:accurate:{URL}
, etc.). However, to detect errors and avoid overloading, the maximum number of parallel service actions is limited to 128.
Syntax | Example | Since Version | Description |
---|---|---|---|
execute:{URL}
|
execute:http://msx.benzac.de/services/echo.php
|
0.1.30 |
Executes an action on server side and returns an action to be executed (e.g. to show a success/error message). The The returned action must be indicated as Note: If you return actions like Please see Responses for more information. |
execute:code:{URL}
|
execute:code:http://msx.benzac.de/services/echo.php
|
0.1.30 |
Executes an action on server side with an entered code and returns an action to be executed (e.g. to show a success/error message). The If the corresponding content item provides a
The returned action must be indicated as Note: If you return actions like Please see Responses for more information. |
execute:user:{URL}
|
execute:user:http://msx.benzac.de/services/echo.php
|
0.1.30 |
Executes an action on server side and returns an action to be executed (e.g. to show a success/error message). This action works in the same way as The
If you use HTTP sessions and your server manages them via cookies, you should always add the Note: For this action, the platform must support third-party cookies (a.k.a. cross-site tracking). Typically, this support can be enabled/disabled in the platform settings. Therefore, users should check whether this support is enabled on their platform before using this action. Additionally, please make sure you set the correct CORS HTTP header on server side (namely |
Extended Actions[edit]
These actions are useful when working with server actions (e.g. to perform a reload after login or to update content parts after successfully executing an action).
Syntax | Example | Since Version | Description |
---|---|---|---|
reload
|
reload
|
0.1.58 |
Reloads the application. |
reload:menu
|
reload:menu
|
0.1.58 | Reloads the current menu data.
Note: The menu data can only be reloaded if it has not been loaded at startup or set via a data action. Since version 0.1.134, you can reload the menu data that has been loaded at startup by using the |
reload:content
|
reload:content
|
0.1.58 |
Reloads the current content data. Note: The content data can only be reloaded if it has not been loaded at startup or set via a data action. Since version 0.1.134, you can reload the content data that has been loaded at startup by using the |
reload:panel
|
reload:panel
|
0.1.58 |
Reloads the current panel content data. Note: The panel content data can only be reloaded if it has not been set via a data action. Since version 0.1.144, you can replace (and reload) the panel content data that has been set via a data action by using the |
update:menu:{ID}
|
update:menu:menu_item_id
|
0.1.58 |
Updates the data of a menu item. The
Note: Only if the properties have been set (to a non Please see Menu Item Object for the data structure. |
update:content:{ID}
|
update:content:content_item_id
|
0.1.58 |
Updates the data of a content item. The
Note: Only if the properties have been set (to a non Please see Content Item Object for the data structure. |
update:content:overlay:{ID}
|
update:content:overlay:content_item_id
|
0.1.110 |
Updates the data of a content overlay item. The |
update:content:underlay:{ID}
|
update:content:underlay:content_item_id
|
0.1.112 |
Updates the data of a content underlay item. The |
update:panel:{ID}
|
update:panel:content_item_id
|
0.1.58 |
Updates the data of a panel content item. The |
update:panel:overlay:{ID}
|
update:panel:overlay:content_item_id
|
0.1.110 |
Updates the data of a panel content overlay item. The |
update:panel:underlay:{ID}
|
update:panel:underlay:content_item_id
|
0.1.112 |
Updates the data of a panel content underlay item. The |
data
|
data
|
0.1.58 |
This action can be used to execute multiple actions in a row. The actions must be provided as Note: If you use actions like |
[{ACTION}|{ACTION}|...]
|
[reload:content|info:Action executed.]
|
0.1.58 |
If an action starts with the character Note: If you use actions like |