Tokens (Tags for the user) are variables available in the Flow Editor to pass information between cards.
There are two types of tokens: trigger tokens and global tokens.
Trigger Tokens
When triggering a Flow, some information might be useful to use in that Flow. For example, when it starts raining, the mm/hour could be a token.
Tokens have a pre-defined type
, which can be either string
, number
, boolean
or image
. If the type is not defined, the token is assumed to be of type string
.
Tokens are drag-and-dropable by the user. They can be dropped in compatible fields, such as a text field for String
tokens, or in a special droptoken field (read below in the section about Arguments). This way, the user can make advanced flows with variables.
Example
To add tokens to a trigger, just add a property tokens
to your /app.json
.
/app.json
{
"id": "com.athom.example",
...
"flow": {
"triggers": [
{
"id": "rain_start",
"title": {
"en": "It starts raining"
},
"tokens": [
{
"name": "mm_per_hour",
"type": "number",
"title": {
"en": "mm/h"
},
"example": 5
},
{
"name": "city",
"type": "string",
"title": {
"en": "City"
},
"example": {
"en": "Amsterdam"
}
}
]
}
}
]
And when firing your trigger, add them as second argument:
/app.js
let rainStartTrigger = new Homey.FlowCardTrigger('rain_start');
let tokens = {
'mm_per_hour': 3,
'city': 'New York'
}
rainStartTrigger
.register()
.trigger( tokens )
.catch( this.error )
.then( this.log )
Global Tokens
A token can also be registered globally, which makes it accessible in any Flow and does not require the app to trigger the Flow. For example a weather app could expose the current temperature as a global token.
By default a device's capability are registered as global tokens.
Example
/app.js
let myToken = new Homey.FlowToken( 'my_token', {
type: 'number',
title: 'My Token'
});
myToken.register()
.then(() => {
return myToken.setValue( 23.5 );
})
.catch( err => {
this.error( err );
});