Documentation

Do you use documentation to use NewBot Framework

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
}
Parameter Type Description
usersMap<User>Map object containing a list of users. The key is represented by the user's identifier
userUserThe user who reads the script
dataObjectObject sent in the exec () method
executionExecutionObject related to the current interpreter to manipulate the conversational script
levelStringName of the function in the conversational script where the user is located
insObjectInformation about the current instruction

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'
            }
        }
    }
}
© 2019 NewBot