Сервис для получен ия данных пользователей с их согласия.
Перед использованием сервиса, ознакомьтесь с условиями подключения сервиса SmartProfile. С принципом работы, типами сообщений и кодами ошибок можно ознакомиться в разделе API SmartProfile.
Сервис недоступен в проектах SaluteBot. Проверить работу сервиса в тестовом виджете нельзя.
Методы
getProfileData
Возвращает данные из профиля пользователя.
Пример вызова:
script: $smartProfile.getProfileData();
chooseProfileData
Позволяет изменить адрес доставки, телефонный номер и адрес электронной почты пользователя.
Пример вызова:
script:
var payload = {
"changeAddress": true,
"changePhone": true,
"changeEmail": true,
}
$smartProfile.chooseProfileData(payload)
Параметры метода:
changeAddress— обязательное поле. Логический тип. Может принимать значенияtrueилиfalse. Указывает на необходимость изменения адреса доставки.changePhone— обязательное поле. Логический тип. Может принимать значенияtrueилиfalse. Указывает на необходимость изменения телефонного номера заказчика.changeEmail— обязательное поле. Логический тип. Может принимать значенияtrueилиfalse. Указывает на необходимость изменения адреса электронной почты заказчика.
detailedProfileData
Предлагает пользователю уточнить данные адреса. Например, указать подъезд или этаж.
Пример вызова:
script: $smartProfile.detailedProfileData();
Пример ответа
Пример запроса данных пользователя можно посмотреть в демонстрационном приложении.
При успешном выполнении методов возвращается сообщение TAKE_PROFILE_DATA.
{
"messageId": 1605196199186625000,
"sessionId": "0062530b-5521-42cc-90b0-a9d65dea4e98",
"uuid": {
"userId": "ec8a9097-1508-4bec-8d97-67f2329c03e0",
"userChannel": "B2C"
},
"messageName": "TAKE_PROFILE_DATA",
"payload": {
"device": {},
"profile_data": {
"customer_name": "Иван",
"surname": "Иванов",
"patronymic": "Иванович",
"birthDate": "01.01.2000",
"phone_number": 79161234567,
"email": "ivanov@site.ru",
"address": {
"location": {
"latitude": 56.77,
"longitude": 23.88
},
"address_string": "Кутузовский пр-т 32",
"country": "Россия",
"region": "Москва",
"city": "Москва",
"settlement": "Поселок",
"district": "Ленинский",
"street": "Кутузовский проспект",
"house": 32,
"building": 1,
"floor": 12,
"entrance": 3,
"apartment": 134,
"door_code": 134,
"alias": "Офис в Москве",
"comment": "Дома после 18 часов",
"address_type": "Рабочий"
}
},
"status_code": {
"code": 1,
"description": "SUCCESS"
}
}
}
SUCCESS— Данные существуют и получено согласие пользователя. Соответствует коду001EMPTY DATA— Данные отсутствуют в профиле. Соответствует коду100CLIENT DENIED— Пользователь отклонил автозаполнение. Соответствует коду101FORBIDDEN— Запрещенный вызов от смартапа дляGET_PROFILE_DATA. Соответствует коду102FORBIDDEN REQUEST— Запрещенный вызов от смартапа дляCHOOSE_PROFILE_DATAиDETAILED_PROFILE_DATAпри отсутствии согласия пользователя. Соответствует коду103ACCESS DENIED— Запрещенный вызов от смартапа дляCHOOSE_PROFILE_DATAиDETAILED_PROFILE_DATAпри отсутствии прав на изменение или уточнение данных. Соответствует коду104
Идентификатор сообщения
Идентификатор сессии
uuid
object
Идентификатор пользователя
Идентификатор канала коммуникации
Название сообщения
payload
object
profile_data
object
Имя
Фамилия
Отчество
Дата рожден ия
Номер телефона
Адрес электронной почты
address
object
Данные адреса
location
object
Географические координаты
Широта
Долгота
Строка с данными адреса
Страна
Регион
Город
Тип населенного пункта
Район
Улица
Дом
Строение
Этаж
Подъезд
Номер квартиры или офиса
Код подъезда
Название адреса
Комментарий
Тип адреса
status_code
object
Возможные значения: [1, 100, 101, 102, 103, 104]
Код ответа
Возможные значения: [SUCCESS, EMPTY DATA, CLIENT DENIED, FORBIDDEN, FORBIDDEN REQUEST, ACCESS DENIED]
Описание ответа. Возможные значения:
После получения сообщения TAKE_PROFILE_DATA необходимо его обработать с помощью тега event:. Затем данные профиля сохранятся в поле {{data.eventData.profile_data }} системной переменной {{$request }}.
Теперь можно вывести, например, номер телефона:
state:
event!: TAKE_PROFILE_DATA
a: Номер телефона: {{$request.data.eventData.profile_data.phone_number}}
Также необходимую информацию можно получить с помощью выражения:
$request.rawRequest.payload.profile_data.phone_number
Это выражение выведет данные напрямую из поля rawRequset.payload.profile_data системной переменной $request.
Значительной разницы между вариантами доступа к данным нет.