В Aimylogic есть переменная $rawRequest, которая может помочь вам получить данные о пользователях. Вы можете использовать содержимое переменной $rawRequest, чтобы обращаться к пользователям по имени, чтобы ограничить доступ к боту для определённого списка пользователей, чтобы собирать и передавать данные пользователей.

Содержимое и форма $rawRequest зависит от канала. Переменная $rawRequest содержит текст текущего пользовательского запроса в формате канала, из которого запрос поступил в бота. Например, для канала Яндекс Алиса будет такой формат.

Если у вас один бот подключен к нескольким каналам, то, прежде чем использовать содержимое $rawRequest конкретного канала, возможно, для вас будет иметь смысл определить тип канала. Вы можете сделать это с помощью блока условий таким образом:

$channelType === "telegram"
$channelType === "vk"
$channelType === "facebook"




Помните, что если вы тестируете функционал, описанный ниже, в тестовом виджете Aimylogic, вы, ожидаемо, вместо имени пользователя и другой информации получите ошибку, так как бот не может получить данные из канала, которого нет. Если вы хотите получить имя пользователя из определённого канала - добавьте этот канал и тестируйте сценарий в соответствующем канале.

Telegram

В телеграме $rawRequest возвращает данные в таком формате:

{"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.message.from.first_name!


Вы можете использовать другие элементы массива, полученного из $rawRequest:
Юзернейм пользователя в формате $rawRequest.message.from.username
Язык пользователя в формате $rawRequest.message.from.language_code
Chat id пользователя в формате $rawRequest.message.from.id

Вы также можете использовать информацию о username пользователя телеграма, чтобы ограничить доступ к боту для определенного списка пользователей. Как это сделать читайте здесь: Авторизация в Telegram

VK

В вк $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.user_info.first_name
Фамилия - $rawRequest.user_info.last_name
VK ID - $rawRequest.user_info.id
Можно сделать ссылку на профиль пользователя вк таким образом: https://vk.com/id$rawRequest.user_info.id

Можно ограничить доступ к боту для определённых аккаунтов вк таким образом:

где 1234567 - Id пользователя вк.


Если id сходится с записанным в условии, то переводим на приветствие. От варианта "else" добавим связь с блоком "Доступ запрещён".

Вы можете посмотреть пример ограничения доступа по id в этой статье: Авторизация в Telegram

Facebook
В фейсбуке переменная $rawRequest выдаёт следующее содержимое:

{"sender":{"id":"2052290888172725","first_name":"John","last_name":"Doe"},"recipient":{"id":"1122334455667788"},"timestamp":1560770895758,"message":{"seq":0,"text":"/start"}}

Вы можете использовать эти данные в следующем формате:
Имя пользователя - $rawRequest.sender.first_name
Фамилия - $rawRequest.sender.last_name

Дополнительные действия

Вы можете также отправлять значения $rawRequest себе сообщением в телеграм, письмом с помощью IFTTT или в гугл-таблицу.

К примеру, так может быть выглядеть HTTP-запрос для отправки имени пользователя телеграма вам в телеграм:

{
"chat_id": 123456780,
"text": "имя клиента: $rawRequest.message.from.first_name"
}




Инструкцию о том, как отправлять сообщения в телеграм, вы можете найти здесь.

Тестировать отправку нужно в телеграме, иначе вы увидите ошибку.
Была ли эта статья полезна?
отменить
Спасибо!