Перейти к основному содержимому

$request

Объект, в котором хранятся данные о запросе пользователя.

Формат объекта

Объект содержит следующие поля.

примечание
Точный набор полей может отличаться в зависимости от канала.
ПолеТипОписание
accountIdСтрокаИдентификатор аккаунта.
botId, channelBotIdСтрокаИдентификатор бота.
channelTypeСтрокаТип канала.
channelUserIdСтрокаИдентификатор пользователя, уникальный для канала.
dataОбъектРазличные данные о запросе.
data.chatIdСтрокаИдентификатор сессии.
data.isTestChannelЛогическийtrue, если запрос отправлен из тестового виджета.
data.JustWidgetRawParamsОбъектПараметры, переданные в чат-виджет.
data.livechatStatusОбъектСтатус перевода на оператора.
data.requestHeadersОбъектHTTP-заголовки запроса, отправленного в канал.
предупреждение
Поле доступно только для каналов чат-виджет, Aimybox и Chat API.
eventСтрокаСобытие, которое произошло в сценарии. Исключает поле query.
queryСтрокаТекст запроса. Исключает поле event.
questionIdСтрокаИдентификатор запроса.
rawRequestОбъектДамп запроса в исходном виде, в котором он пришел в канал.
requestTypeСтрокаТип запроса.
userFromОбъектДанные о пользователе: id, firstName, lastName.
versionЧислоВерсия протокола. По умолчанию 1.

Примеры использования

$request.query

Поле query позволяет использовать в сценарии текст запроса и отправить его самому пользователю или куда-либо еще (например, в систему сбора аналитики):

state: NoMatch
event!: noMatch
a: Я не понял. Вы сказали: «{{$request.query}}».

$request.channelType

Поле channelType используется для ветвления сценария в зависимости от канала:

state: SwitchToAgent
intent!: /Перевод на оператора
# В этом сценарии перевод на оператора работает только в телефонном канале.
if: $request.channelType === "resterisk"
a: Подождите немного. Соединяю вас со специалистом.
TransferCallToOperator:
phoneNumber = 79123456789
else:
a: К сожалению, мы не можем соединить вас с оператором. Мы обязательно свяжемся с вами позже.
script:
$dialer.hangUp();
Список всех возможных значений channelType

$request.botId, $request.channelUserId

Используйте botId и channelUserId, когда в сценарии требуется присвоить боту или пользователю уникальный идентификатор. Например, их можно передать в метод $pushgate.createPushback:

state: Subscribe
intent!: /Подписаться
script:
// Создание пушбэка.
var pushback = $pushgate.createPushback(
$request.channelType,
$request.botId,
$request.channelUserId,
"newNotification",
{}
);

// Отправка ссылки на Pushgate API в сторонний сервис.
$http.post("https://example.com/subscribe", {
headers: {
"Content-Type": "application/json"
},
body: {
"link": pushback.link
}
});
a: Ура, вы подписаны! Теперь вы будете первым узнавать о наших акциях и предложениях.

$request.rawRequest

Поле rawRequest позволяет извлечь из запроса данные, которые предоставляет JAICP сам канал. Например, когда пользователь Telegram отправляет боту свой контакт, в сценарий приходит событие telegramSendContact. В стейте-обработчике этого события можно получить номер телефона пользователя:

state: GetPhoneNumber
event: telegramSendContact
script:
$client.phoneNumber = $request.rawRequest.message.contact.phone_number;
a: Спасибо! Наш менеджер свяжется с вами по номеру {{$client.phoneNumber}}.