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

#amazon-web-services #amazon-cognito #aws-pinpoint

#amazon-веб-сервисы #amazon-cognito #aws-pinpoint

Вопрос:

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

Комментарии:

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

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

Ответ №1:

Из моего исследования я выяснил, что, поскольку вы используете веб-приложение без использования AWS Amplify framework, вам необходимо добавить дополнительные строки кода в ваше приложение, чтобы отправлять данные Cognito authentication analytics в ваш проект 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.log(err, err.stack); // an error occurred
       else     console.log(data);           // successful response
     });
     
  • В приведенном выше фрагменте кода идентификатор проекта / приложения Pinpoint добавляется как часть параметра «AnalyticsMetadata«, Когда клиент выполняет вызовы API (например, вход, регистрация и т. Д.) В пул пользователей Cognito. Таким образом, к вызовам API будет привязан идентификатор проекта pinpoint, и Cognito сможет использовать эту информацию для отправки данных в ваш проект Pinpoint. Без этого важного шага данные аналитики не будут отправляться в Pinpoint и приведут к описанному вами поведению.
  1. При использовании CLI (для целей проверки / тестирования) вы можете выполнить следующую команду AWS CLI initiate-auth, приведенную ниже :
     $ 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 для мобильных приложений (AWS Mobile SDK или JavaScript — AWS Amplify JavaScript library).

Комментарии:

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

Ответ №2:

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

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

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

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

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