bind
Функция bind
предназначена для установки обработчиков.
подсказка
Обработчики — особые функции, которые вызываются на различных этапах обработки запроса или при возникновении внештатных ситуаций в диалоге.
Принцип работы
Рассмотрим общий принцип работы обработчиков.
- Создается функция, которая как аргумент принимает объект
$context
— текущий контекст обработки запроса. В теле функции производятся любые действия, необходимые по сценарию. - При установке функции в качестве обработчика при помощи функции
bind
указывается его тип. Тип определяет ситуацию, в которой обработчик будет вызван. - Также при установке обработчик привязывается к определенному пути в иерархии стейтов сценария. По умолчанию это корневой путь
/
. - Обработчик и вы зов функции
bind
помещается либо в отдельный файл с расширением.js
, который импортируется в сценарий при помощи тегаrequire
, либо в тело тегаinit
.
подсказка
При нахождении контекста бота в стейте, путь к которому начинается так же, как путь, к которому привязана функция-обработчик, она будет вызываться во всех случаях, разрешенных его типом.
Синтаксис
Функция bind
принимает 4 аргумента.
Аргумент | Тип | Описание | Обязательный |
---|---|---|---|
type | Строка | Тип обработчика | Да |
handler | Функция | Функция-обработчик | Да |
path | Строка | Абсолютный путь для привязки обработчика | Нет |
name | Строка | Имя обработчика | Нет |
Рассмотрим пример вызова функции bind
:
bind(
"postProcess",
function($context) {
$context.session.lastState = $context.currentState;
},
"/Start",
"Remember last state"
);
- Тип об работчика
postProcess
, переданный в качестве первого аргумента, означает, что он будет вызываться после основного цикла обработки запроса. - Функция, переданная как второй аргумент, задает целевое действие. В данном случае оно заключается в том, что путь к текущему стейту сохраняется в
$session
как предыдущий стейт. - Обработчик привязывается к пути
/Start
. Он будет вызываться в стейте/Start
и во всех его дочерних стейтах — например,/Start/Hello
,/Start/Hello/1
и т. д.
предупреждение
При привязке к корневому пути
/
обработчик будет вызван при нахождении в любом стейте сценария.