Добавить пользователя в бота

Метод bots/addUser запускает бота для подписчика со стартового шага или с выбранного. Параметры, коды ошибок и как работает force при повторном проходе.

Обновлено

Запускает бота для человека: бот начинает с ним работать со стартового шага или с шага step_id.

Нужен личный токен с продуктом BotHunter — как получить. Кому доступен: владельцу сообщества и сотрудникам с ролью «Админ (полный доступ)» или «Рассылки и чат-боты».

Параметры

bot_id
строка
обязательный

ID бота — id из ответа bots/get.

Пример: 607d97c6a01c6a25972ed95e

uid
целое число
обязательный

Номер человека в соцсети или мессенджере, например id страницы ВКонтакте.

Пример: 102036383

channel
строка
обязательный

Канал бота — константы.

Пример: VK

step_id
строка

Шаг, с которого начать, — id из ответа bots/getSteps. Без него — стартовый шаг.

Пример: 607d97c6a01c6a25972ed960

force
целое число

1 — запустить бота, даже если человек уже проходил его.

Пример: 1

payload
объект или строка

Данные для бота: объект или строка. Значение ключа text бот получит как текст запуска.

Пример: {"text": "Текст", "param1": "value1"}

Чтобы бот увидел payload, включите в расширенных настройках бота «Сохранять входные параметры в переменную»; объект разберите блоком «Декодировать JSON». Пример запуска бота из другого бота — на странице API.

Результат

Возвращает {"status": "ok"} без поля response.

{
  "status": "ok"
}

Коды ошибок

Общие ошибки — на странице API.

Код

Когда

6

Не передан bot_id, uid или channel; неверный номер пользователя; неверный step_id или в боте нет такого шага; добавить пользователя не удалось.

7

«Бот не найден»: бота с таким bot_id нет или он из чужого сообщества. Та же ошибка, если bot_id записан в неверном формате.

Пример запроса

Подставьте свой токен вместо <ваш_токен>.

curl
PHP
Python
JavaScript
curl -X POST https://bot-api.targethunter.ru/external-api/v2/bots/addUser \
  -H "Authorization: Bearer <ваш_токен>" \
  -H "Content-Type: application/json" \
  -d '{"bot_id": "607d97c6a01c6a25972ed95e", "uid": 102036383, "channel": "VK", "force": 1, "payload": {"text": "Текст", "param1": "value1"}}'
$token = '<ваш_токен>';
$url = 'https://bot-api.targethunter.ru/external-api/v2/bots/addUser';
$params = [
    'bot_id' => '607d97c6a01c6a25972ed95e',
    'uid' => 102036383,
    'channel' => 'VK',
    'force' => 1,
    'payload' => [
        'text' => 'Текст',
        'param1' => 'value1',
    ],
];

$curl = curl_init($url);
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($params),
]);

$response = json_decode(curl_exec($curl), true);
curl_close($curl);
import requests

token = '<ваш_токен>'
url = 'https://bot-api.targethunter.ru/external-api/v2/bots/addUser'
params = {
    'bot_id': '607d97c6a01c6a25972ed95e',
    'uid': 102036383,
    'channel': 'VK',
    'force': 1,
    'payload': {
        'text': 'Текст',
        'param1': 'value1',
    },
}

response = requests.post(url, json=params, headers={'Authorization': f'Bearer {token}'})
print(response.json())
const token = '<ваш_токен>';
const params = {
  "bot_id": "607d97c6a01c6a25972ed95e",
  "uid": 102036383,
  "channel": "VK",
  "force": 1,
  "payload": {
    "text": "Текст",
    "param1": "value1"
  }
};

const response = await fetch('https://bot-api.targethunter.ru/external-api/v2/bots/addUser', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(params),
});
console.log(await response.json());

Как работает параметр force при разных настройках бота на разрешение повторного прохода

В расширенных настройках бота можно установить 1 из 3 вариантов на возможность повторного прохода бота:

Добавить пользователя в бота

Как сработает параметр force при различных ситуациях:

Когда пользователь находится в цепочке бота:

Если бот, в который добавляют - повторный проход возможен в любой момент, то:

  • force 0 - ничего не меняет, всё равно добавляется в бот заново;

  • force 1 - соответственно, тоже самое.

Если бот, в который добавляют - повторный проход возможен после завершения всей цепочки, то:

  • force 0 - ничего не происходит, повторно не добавляется;

  • force 1 - добавляется повторно. (по умолчанию, force 0, если не передается этот параметр)

Если бот, в который добавляют - повторный проход запрещён, то:

  • force 0 - ничего не происходит, повторно не добавляется;

  • force 1 - добавляется повторно (да, даже если запрещён повторный проход в настройках бота).
    (по умолчанию, force 0, если не передается этот параметр)

Иными словами, force НЕ имеет смысла использовать, если повторный проход в любой момент.