У Kwizbot є можливість писати свої власні action's на Javascript

Для цього використовується модуль Action Jail

<aside> 🧑‍💻 Якщо ви не розробник і не володієте JS, можливо, все, що описано далі, буде незрозуміло.

</aside>

Можливості інтерфейсу

Загальний вигляд модуля в інтерфейсі конструктора

Загальний вигляд модуля в інтерфейсі конструктора

Ви можете створювати нові action'и самостійно прямо з інтерфейсу.

Основні функції в action:

const action_some_example()  = async function() { // або можна async function action_some_example() {
		// отримання всього стейту (всіх поточних змінних користувача)
    const state = this.getCurrentStateJSON();
    // отримання констант (або state.const)
    const constants = this.getCurrentConstJSON();   
    // отримати параметри з JSON-конфігуації 
    const node_params = this.getCurrentNodeParamsJSON();
}

Структура action'а та можливі виклики

/**
 * Sample action jail action
 * @method action_jail_sample
 * @return {string}
 */
const action_jail_sample = async function () {
	let result = 'custom_action_works';
	//You should init state first
	const state = this.getCurrentStateJSON();

	//You can read from current state
	const user_input = state.const['name']

	//You can read action config
	const req_params = state.node.json_obj;

	//You can set to state
	this.setCurrentStateConstant('custom_action_placeholder', 'I set from code');
	this.setCurrentStateConstant('user_input', user_input);

	//You can send action events just by returning text values
	return result;
};

module.exports = action_jail_sample;

Приклад простого action

Найпростіший приклад - це action, який встановлює значення плейсхолдера і повертає різні події залежно від уже встановлених значень у state.

Наприклад просимо користувача ввести число. Якщо він ввів <10, то ми говоримо, що це "маленьке число", а якщо >10, то говоримо, що це велике число і просимо ввести маленьке число.

Код action'а