Lanka Документація Ланки

Завдання

Завдання запускається за розкладом. Є два види:

  • Зі спільними даними. Скрипт працює без відвідувача: бот виконує його сам, навіть коли ніхто не пише. Наприклад, щоночі завантажити список лікарів з іншого сервісу в app.*, а вдень показувати його одразу.
  • З кожним відвідувачем. Для кожної людини з вибраних аудиторій бот виконує скрипт з її змінними, а потім, якщо задано ланку, запускає їй цю ланку. Наприклад, щоранку нагадати про візит тим, у кого він сьогодні.

Як додати

  1. Відкрийте «Завдання» в меню зліва.
  2. Натисніть «Нове завдання».
  3. Задайте назву.
  4. У полі «Коли запускати» виберіть, як часто: кожні кілька хвилин чи годин, щодня, у вибрані дні тижня або щомісяця, і час. Під полем видно, як це читається: «По пн, ср, пт о 09:00».
  5. У полі «Скрипт працює з» виберіть «Спільними даними» або «Кожним відвідувачем».
  6. Для відвідувачів виберіть аудиторії.
  7. Напишіть скрипт.
  8. Для відвідувачів, за бажанням, виберіть ланку або створіть разову ланку тут же. Її редактор відкривається під полем.
  9. Натисніть «Зберегти». Завданню для відвідувачів досить і самої ланки.

Час рахується за часовим поясом бота. Пояс змінюють у «Налаштування бота».

Що бачить скрипт

Скрипт пишуть так само, як у кроці «Скрипт». Правила мови описані на сторінці «Скрипти».

  • app.* — справжні дані бота. Зміни в app.* зберігаються.
  • fetch, page_meta і save_image працюють з тими самими обмеженнями, що й у розмові.
  • platform.now — момент запуску.

У завданні зі спільними даними user.* і session.* порожні: відвідувача немає. Записане туди зникає після запуску.

У завданні для відвідувачів скрипт працює окремо для кожної людини: user.* — її змінні, і зміни в них зберігаються. Те, що скрипт запише в session.*, побачить ланка, яку людина отримає після нього.

Цей скрипт оновлює список лікарів. Якщо сервіс не відповів, лишається старий список:

temp.resp = fetch("https://clinic.example.com/api/doctors", {timeout: 20})
app.doctors = temp.resp.error ? app.doctors : temp.resp.body

Цей скрипт прибирає замовлення, старші за 30 днів:

app.orders = filter(app.orders, item.date >= add_days(platform.now, -30))

Запуск і помилки

  • Перемикач біля завдання вмикає і вимикає запуск за розкладом.
  • «Запустити зараз» виконує завдання одразу, навіть коли воно вимкнене.
  • Під назвою видно час останнього запуску. Для спільних даних — ключі app.*, які він змінив. Для відвідувачів — скільком людям завдання виконалось і скільком з помилкою.
  • Якщо завдання зупинилося з помилкою, її текст видно на картці. Наступний запуск відбудеться за розкладом.
  • На сторінці завдання є «Історія запусків»: останні 50 запусків з тим, що вони змінили, і з помилками. Для відвідувачів там видно, у кого саме сталася помилка.
  • Коли завдання за розкладом перестає виконуватися, бот надсилає вам повідомлення в Telegram. Поки воно падає далі, повторних повідомлень немає.

Бот може мати до 10 завдань. Завдання для відвідувачів за один запуск охоплює до 1000 людей і надсилає повідомлення в темпі, який дозволяє Telegram.