Как подключить Cognito к Pinpoint для аналитики?

Я пытаюсь получить базовую аналитику для пула пользователей Cognito. Это казалось достаточно простым: я создал проект в Pinpoint, затем перешел к своему пулу пользователей, перешел в «Общие настройки» > «Аналитика», нажал кнопку «Добавить аналитику», выбрал клиент приложения Amazon Cognito, который использует мое приложение, и указал на Pinpoint. проект, который я только что создал, установил флажок «Поделиться данными профиля пользователя» (хотя я предполагаю, что это не обязательно), и в нем было сообщение о том, будет ли использоваться роль IAM и так далее. Нажал «Сохранить», ошибки нет, я предполагал, что в этот момент я начну видеть Analytics в Pinpoint, но абсолютно ничего не появляется. У меня есть сообщение о том, что я еще не включил какие-либо функции, но я не вижу никаких функций. Мне нужно включить. На данный момент меня не волнуют кампании, а затем в разделе «Аналитика приложений» кажется, что вы вручную обновляете свое мобильное или веб-приложение, чтобы что-то отправлять, но я подумал, что это было, если вам нужно что-то настроить. Я ошибаюсь? Будет ли эта интеграция работать, только если вы измените свое веб-приложение, чтобы явно отправлять данные в Pinpoint? Я просто предположил, что если я подключу Cognito и Pinpoint, аналитика покажет, поскольку Cognito, очевидно, знает, что люди входят в систему, и вам не нужно вручную делать какой-то дополнительный запрос.

два импортных вопроса: используете ли вы AWS Amplify или AWS Mobile SDK? и вы используете собственное мобильное приложение или веб-приложение?

aksyuma 10.12.2020 05:57

@syumaK Я использую веб-приложение, но не Amplify. Я до сих пор не уверен, почему это имеет значение. Если вы подписываете людей или выполняете аутентификацию с помощью Cognito, разве Cognito не сможет сообщить об этом, не используя ничего другого? Ничего страшного, если ответ "нет", просто мне это было непонятно. Казалось, что вы просто сможете соединить их, и данные будут автоматически передаваться из Cognito в Pinpoint.

Rocket04 10.12.2020 19:24
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
2 494
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Из своего исследования я выяснил, что, поскольку вы используете веб-приложение без использования платформы AWS Amplify, вам необходимо добавить в приложение дополнительные строки кода, чтобы отправлять данные аналитики аутентификации Cognito в ваш проект Amazon Pinpoint.

  1. Если вы используете Javascript SDK, вы можете добавить фрагмент кода свойства initate-Auth в ваше внешнее приложение:

     var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
    
     var params = {
       AuthFlow: "USER_PASSWORD_AUTH",
       ClientId: 'STRING_VALUE', /* the client ID attached to the Pinpoint project */
       AuthParameters: {
         'USERNAME': 'STRING_VALUE',
         'PASSWORD': 'STRING_VALUE'
       },
       AnalyticsMetadata: {
         AnalyticsEndpointId: 'STRING_VALUE' /* the Pinpoint project ID */
       },
     };
     cognitoidentityserviceprovider.initiateAuth(params, function(err, data) {
       if (err) console.info(err, err.stack); // an error occurred
       else     console.info(data);           // successful response
     });
    
  • В приведенном выше фрагменте кода идентификатор проекта/приложения Pinpoint добавляется как часть параметра «Метаданные аналитики», когда клиент выполняет вызовы API (например, вход, регистрация и т. д.) в пул пользователей Cognito. Таким образом, к вызовам API будет прикреплен идентификатор проекта Pinpoint, и Cognito сможет использовать эту информацию для отправки данных в ваш проект Pinpoint. Без этого важного шага аналитические данные не будут отправляться в Pinpoint, что приведет к описанному вами поведению.
  1. Если вы используете интерфейс командной строки (для проверки/тестирования), вы можете выполнить следующую команду AWS CLI инициировать-аутентификацию ниже:

    $ aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=STRING_VALUE,PASSWORD=STRING_VALUE --client-id STRING_VALUE --analytics-metadata AnalyticsEndpointId=STRING_VALUE
    

Суть в том, что:

Интеграция Amazon Cognito с Amazon Pinpoint работает только для приложений (клиентов), которые используют Cognito SDK для мобильных приложений (AMS Mobile SDK или JavaScript — библиотека JavaScript AWS Amplify).

Если я использую идентификатор проекта, он не будет работать правильно. В качестве значения для AnalyticsEndpointId необходимо использовать пользовательский UUID.

LordOfThunder 07.01.2022 08:27

Просто примечание к ответу syumaK: да, вам нужно обновить вызов initAuth вашего кода, чтобы включить свойство AnalyticsMetadat. Однако я обнаружил, что AnalyticsEndpointId НЕ ДОЛЖЕН быть идентификатором проекта Pinpoint.

Я полагаю, что, поскольку вы уже настроили Cognito для интеграции с проектом Pinpoint, он знает, в какой проект Pinpoint вы уже отправляете метрики. AnalyticsEndpointId должен быть уникальным идентификатором для входа.

Документация определенно ненадежная здесь. cli от syumaK, похоже, описывает это иначе, чем Cognito API Reference

Что случилось со мной, так это то, что я использовал идентификатор проекта pinpoint, и когда я вхожу в систему с несколькими пользователями, он думает, что это один и тот же. Ежедневное количество активных пользователей остается на уровне единицы. Служба поддержки AWS пояснила, что это должен быть уникальный идентификатор для каждого пользователя. Итак, после изменения идентификатора на адрес электронной почты пользователя я начинаю получать точные цифры для ежедневных активных пользователей.

Также кажется, что это примерно так же полезно, как и для того, чтобы не использовать Cognito SDK для мобильных приложений или Amplify. Вы можете получить только такую ​​информацию, как ежедневные/ежемесячные активные пользователи, показатели аутентификации. У вас нет возможности дальнейшей разбивки по сегментам и т. д.

Другие вопросы по теме