Выбор контакта
Запрос в блок «Входящий Webhook» приходит не от человека, а от стороннего сервиса. Поэтому код сам указывает, к какому контакту относится запрос, — одной из функций ниже. Они есть только в этом блоке; в остальных блоках контакт уже известен.
Общие правила для всех функций:
- Контакт ищется только среди контактов этого бота. Удалённые контакты не находятся.
- Возвращает
true, если контакт найден, иfalse, если нет. - За один запрос можно вызвать только одну функцию и только один раз. Второй вызов — даже другой функции — завершит код с ошибкой, и блок ответит кодом
422. - Хотя бы одна функция должна быть записана в коде. Без неё блок не запустит код и ответит
422. - После того как контакт найден, коду становятся доступны его встроенные переменные, переменные и теги. До этого переменные контакта пусты, а обращение к
id,nameи другим данным контакта остановит код с ошибкой. - Если контакт не найден или функция не вызывалась, код выполнится, но ничего не сохранит: переменные, теги и глобальные переменные не запишутся, сообщения не уйдут, переход и связь «Продолжить» не сработают. Блок ответит
200с сообщениемCode executed without setting contact.
setContactById
setContactById(id)
Находит контакта по его ID на платформе.
| Параметр | Тип | Что передать |
|---|---|---|
id |
Число или строка из цифр | ID контакта. В сценарии его можно получить автоподстановкой {{ id }} |
if (setContactById(request.query.contact_id)) {
setContactVariable('оплата', 'получена');
sendMessage('Оплата получена, начинаем собирать ваш букет.');
}
Чтобы сторонний сервис знал ID, передайте его заранее — например, в ссылке на оплату или блоком «HTTP-запрос».
setContactByTelegramId
setContactByTelegramId(id)
Находит контакта по ID человека в Telegram.
| Параметр | Тип | Что передать |
|---|---|---|
id |
Число или строка из цифр | ID пользователя Telegram — то же, что в переменной telegram_id |
var message = request.data.message;
if (message && message.from && setContactByTelegramId(message.from.id)) {
setContactTag('писал_в_группе');
}
setContactByMaxId
setContactByMaxId(id)
Находит контакта по ID человека в MAX.
| Параметр | Тип | Что передать |
|---|---|---|
id |
Число или строка из цифр | ID пользователя MAX — то же, что в переменной max_id |
if (setContactByMaxId(request.data.user_id)) {
sendMessage('Курьер уже в пути.');
}
setContactByVkId
setContactByVkId(id)
Находит контакта по ID человека во ВКонтакте.
| Параметр | Тип | Что передать |
|---|---|---|
id |
Число или строка из цифр | ID пользователя ВКонтакте — число без id в начале |
if (setContactByVkId(request.data.vk_user_id)) {
setContactTag('оставил_отзыв');
}
setContactByViberId
setContactByViberId(id)
Находит контакта по ID человека в Viber.
| Параметр | Тип | Что передать |
|---|---|---|
id |
Строка | ID пользователя Viber — строка из букв, цифр и знаков, её нельзя превращать в число |
if (setContactByViberId(request.data.viber_id)) {
sendMessage('Ваш заказ передан в доставку.');
}