Create a JavaScript function and trigger it in ConverseScript
Let's use the functions
property:
import code from './main.converse'
export default {
code,
functions: {
nameFunctionJs() {
}
}
}
The ConverseScript script uses the function:
nameFunctionJs()
If the function has asynchronous values, let's return a promise:
import code from './main.converse'
export default {
code,
functions: {
nameFunctionJs() {
return new Promise((resolve, reject) => {
// any code
resolve()
})
}
}
}
Use ConverseScript parameters
Often, information is essential for the proper functioning of the function. For example, retrieve the user information or retrieve the user collection.
Using a magic variable
import code from './main.converse'
export default {
code,
functions: {
nameFunctionJs() {
const { user } = this.converse
// any code
user.setMagicVariable('foo', 'hello')
}
}
}
The script is as follows:
start() {
nameFunctionJs()
> { :foo }
}
Property converse
The converse
property is an object:
{
users: Map<User>,
user: User,
data: any,
execution: Execution,
level: String,
ins: Object
}
Return of a function
import code from './main.converse'
export default {
code,
functions: {
nameFunctionJs() {
return 'hello'
}
}
}
The script is as follows:
start() {
str = nameFunctionJs()
> { str }
}
Use an object
It is possible to use an object with several functions:
import code from './main.converse'
export default {
code,
functions: {
myObj: {
nameFunction() {
}
}
}
}
In ConverseScript
start() {
myObj.nameFunction()
}
With specific parameters:
import code from './main.converse'
export default {
code,
functions: {
myObj: {
nameFunction() {
const { user } = this.converse
}
}
}
}
Create a mock of the function
It is very useful to mock a function. Even though each function can be mocked in each unit test, it is also possible to change the behavior in a global way by associating the mock with a skill, which will be triggered during unit tests.
import code from './main.converse'
export default {
code,
functions: {
nameFunctionJs: {
$call() {
const { user } = this.converse
return 'hello'
},
$mock() {
const { user } = this.converse
return 'fake'
}
}
}
}
Last updated
Was this helpful?