Как получать данные о клиентах с помощью $rawRequest
В Aimylogic есть переменная $rawRequest
, с помощью которой можно получать данные о клиентах из каналов.
Вы можете использовать содержимое переменной $rawRequest
для того, чтобы:
- обращаться к клиентам по имени;
- ограничить доступ к боту для определенного списка клиентов;
- собирать и передавать данные клиентов.
Как определить тип канала
Содержимое и формат переменной $rawRequest
зависят от канала, из которого поступил запрос к боту.
Если ваш бот подключен к нескольким каналам, перед использованием $rawRequest
вам необходимо определить тип канала. Он хранится в переменной $channelType
.
Вы можете определить тип канала при помощи блока Услови я, прописав в нем выражения для каждого канала.
Например, если вы опубликовали бота в каналах Telegram и VK в блоке Условия должны присутствовать следующие выражения:
$channelType === "telegram"
$channelType === "vk"
Как протестировать сценарий
$rawRequest
в тестовом виджете.Если вы добавите перем енную $rawRequest
в сценарий, а затем нажмете Тестировать, то в окне тестового виджета появится сообщение об ошибке.
Такое поведение возникает из-за того, что бот не может получить данные, так как вы тестируете бота не в канале.
Чтобы протестировать сценарий, подключите нужный канал и поговорите с ботом в этом канале.
Если вы хотите протестировать сценарий именно в тестовом виджете, сначала настройте сценарий, протестируйте его и только после этого добавьте переменную $rawRequest
.
Telegram
Переменная $rawRequest
в Telegram возвращает данные в следующем формате:
{
"update_id": 123456789,
"message": {
"message_id": 67,
"from": {
"id": 123456789,
"is_bot": false,
"first_name": "John",
"username": "johndoe",
"language_code": "en"
},
"chat": {
"id": 123456789,
"first_name": "Doe",
"username": "johndoe",
"type": "private"
},
"date": 1560773004,
"text": "/start",
"entities": [
{
"offset": 0,
"length": 6,
"type": "bot_command"
}
]
}
}
Если в сценарии используются инлайн-кнопки, то формат данных в переменной $rawRequest
будет следующий:
{
"update_id": 123456789,
"callback_query": {
"message_id": 67,
"from": {
"id": 123456789,
"is_bot": false,
"first_name": "John",
"username": "johndoe",
"language_code": "en"
},
"chat": {
"id": 123456789,
"first_name": "Doe",
"username": "johndoe",
"type": "private"
},
"date": 1560773004,
"text": "/start",
"entities": [
{
"offset": 0,
"length": 6,
"type": "bot_command"
}
]
}
}
Вы можете обращаться к клиенту по имени, используя блок Текст:
Также вы можете использовать другие элементы массива, полученного из $rawRequest
:
- Имя пользователя в Telegram:
$rawRequest.message.from.username
. - Язык общения клиента:
$rawRequest.message.from.language_code
. - ID чата:
$rawRequest.message.from.id
.
$username
через выражение $username = $rawRequest.callback_query.from.username
.Вы можете использовать имена пользователей Telegram, чтобы ограничить им доступ к боту.
ВКонтакте
В ВКонтакте переменная $rawRequest
возвращает данны е в таком формате:
{
"type": "message_new",
"object": {
"id": 30,
"date": 1560772728,
"out": 0,
"user_id": 123456789,
"read_state": 0,
"title": "",
"body": "/start",
"owner_ids": [
]
},
"group_id": 183098298,
"user_info": {
"first_name": "John",
"last_name": "Doe",
"id": "185902215"
}
}
При помощи $rawRequest
вы можете получить следующие данные из ВКонтакте:
- Имя клиента:
$rawRequest.user_info.first_name
. - Фамилию клиента:
$rawRequest.user_info.last_name
. - ID клиента:
$rawRequest.user_info.id
.
В сценарии вы можете сгенерировать ссылку на профиль клиента в ВКонтакте через блок Текст следующим образом: https://vk.com/id$rawRequest.user_info.id
.
Кроме того, вы можете разрешить доступ к боту только определенному списку аккаунтов с помощью такого условия для каждого аккаунта:
Здесь 123456
— ID клиента на стороне ВКонтакте.
От условия сделайте переход к блоку с приветствием. От варианта else создайте экран с текстом Доступ запрещен
.
Аналогичным образом вы можете запретить доступ к боту определенным аккаунтам: укажите аккаунты в блоке Условия, соедините эти условия с экраном Доступ запрещен
, а вариант else соедините с приветственным экраном.