Описание API SmartProfile

Схема получения данных

Используйте API SmartProfile для:

  • получения существующего адреса и телефона;
  • изменения ранее указанного адреса и телефона;
  • уточнения адреса.

Если у вашего смартапа есть необходимые разрешения, то данные пользователя будут доступны в объекте $request.payload.profile_data:

state: Welcome
    q!: оформи заказ
    a: Данные для заказа {{$request.payload.profile_data}}!

Форматы запроса

Получение данных

Чтобы получить клиентские данные, после добавления товара в корзину используйте сообщение "messageName": "GET_PROFILE_DATA". Этот тип сообщения можно использовать при оформлении, составлении и подтверждении заказа.

{
  "messageId": "1605196199186625000",
  "sessionId": "0062530b-5521-42cc-90b0-a9d65dea4e98",
  "messageName": "GET_PROFILE_DATA",
  "uuid": {
    "userId": "ec8a9097-1508-4bec-8d97-67f2329c03e0",
    "userChannel": "B2C"
  },
  "payload": {
  }
}

Изменение данных

Чтобы пользователь мог изменить данные из своего профиля, используйте сообщение "messageName": "CHOOSE_PROFILE_DATA". Этот тип сообщения можно использовать только после получения данных при оформлении заказа — "GET_PROFILE_DATA".

Пользователи могут изменить телефон и адрес:

  • для изменения телефона используйте "fields": [ "phone_number" ];
  • для изменения адреса используйте "fields": [ "address" ];
  • для изменения телефона и адреса используйте "fields": [ "address", "phone_number" ].
{
  "messageId": "1605196199186625000",
  "sessionId": "0062530b-5521-42cc-90b0-a9d65dea4e98",
  "messageName": "CHOOSE_PROFILE_DATA",
  "uuid": {
    "userId": "ec8a9097-1508-4bec-8d97-67f2329c03e0",
    "userChannel": "B2C"
  },
  "payload": {
    "fields": [
      "address",
      "phone_number"
    ]
  }
}

Уточнение данных

Если вашему сценарию не хватает данных (например, пользователь не указал в адресе код домофона), используйте сообщение "messageName": "DETAILED_PROFILE_DATA". Этот тип сообщения можно использовать только после получения данных при оформлении заказа — "GET_PROFILE_DATA".

Получить дополнительные данные можно только по адресу. Для этого используйте "fields": [ "address" ].

{
  "messageId": "1605196199186625000",
  "sessionId": "0062530b-5521-42cc-90b0-a9d65dea4e98",
  "messageName": "DETAILED_PROFILE_DATA",
  "uuid": {
    "userId": "ec8a9097-1508-4bec-8d97-67f2329c03e0",
    "userChannel": "B2C"
  },
  "payload": {
    "fields": [
      "address"
    ]
  }
}

Формат ответа

Формат ответа на запросы GET_PROFILE_DATA, CHOOSE_PROFILE_DATA и DETAILED_PROFILE_DATA:

{
  “messageId”: “1605196199186625000",
  “sessionId”: “0062530b-5521-42cc-90b0-a9d65dea4e98",
  “messageName”: “TAKE_PROFILE_DATA”,
  “payload”: {
    “profile_data”: {
      “customer_name”: “Иван“,
      “surname”: “Петров“,
      “patronymic”: “Иванович“,
      “birthDate”: “01.01.2000",
      “address”: {
        “address_string”: “Кутузовский проспект, 32”,
        “alias”: “”,
        “comment”: “”,
        “country”: “Россия“,
        “district”: “”,
        “location”: {
          “latitude”: 55.740486,
          “longitude”: 37.532083
        },
        “apartment”: “32”,
        “entrance”: “1”,
        “floor”: “”,
        “region”: “Москва“,
        “street”: “Кутузовский проспект“,
        “house”: “2"
      },
      “phone_number”: “+7 111 000 00 00”
    },
    “status_code”: {
      “code”: 1,
      “description”: “success”
    }
  },
  “uuid”: {
    “userId”: “ec8a9097-1508-4bec-8d97-67f2329c03e0”,
    “userChannel”: “B2C”
  }
}

Коды ошибок

Код
Текст ошибки
Описание
001 SUCCESS Данные существуют и получено клиентское согласие
100 EMPTY DATA Данные отсутствуют в профиле
101 CLIENT DENIED Клиент отклонил автозаполнение
102 FORBIDDEN Запрещенный вызов от смартапа для GET_PROFILE_DATA
103 FORBIDDEN REQUEST Запрещенный вызов от смартапа для CHOOSE_PROFILE_DATA и DETAILED_PROFILE_DATA в случае отсутствия клиентского согласия
104 Access Denied Запрещенный вызов от смартапа для CHOOSE_PROFILE_DATA и DETAILED_PROFILE_DATA в случае отсутствия прав на изменение или уточнение данных

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней