Перейти к основному содержимому

Отмена напоминаний

Это часть серии статей, посвященной созданию бота для отправки напоминаний через сервис $pushgate.

  1. Уточнение часового пояса
  2. Создание напоминаний
  3. Отмена напоминаний (вы находитесь здесь)

Разработка сценария

Добавим в бота, разработанного на предыдущем шаге, возможность отменять созданные напоминания до их наступления.

Вновь перейдите на вкладку NLU > Интенты, добавьте новый интент /Cancel и наполните его такими тренировочными фразами, как отменить, не надо, я передумал.

Перейдем к разработке сценария:

state: Cancel
intent!: /Cancel
if: $session.reminderId
script:
$pushgate.cancelEvent($session.reminderId);
delete $session.reminderId;
random:
a: Я отменил ваше последнее напоминание.
a: Последнее напоминание успешно отменено.
else:
go!: /CatchAll

В стейте, предназначенном для обработки интента, предусмотрено ветвление в зависимости от наличия в структуре данных $session поля reminderId:

  • Если поле присутствует, то ранее записанный в него идентификатор события передается в метод $pushgate.cancelEvent. Событие отменяется, а его идентификатор удаляется из $session.
  • Если такого поля нет, клиент либо еще не создавал ни одного напоминания, либо только что его удалил. В обоих случаях приемлемо перейти в стейт /CatchAll.

Тестирование сценария

С помощью тестового виджета убедитесь, что после отмены событие не приходит в сценарий:

Отмена напоминания
подсказка
В приведенной реализации бот умеет отменять только последнее созданное напоминание. Мы предлагаем вам реализовать возможность отмены любого из запланированных напоминаний самостоятельно.