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

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


person Rocket04    schedule 09.12.2020    source источник
comment
два вопроса об импорте: используете ли вы AWS Amplify или AWS Mobile SDK? а вы используете собственное мобильное приложение или веб-приложение?   -  person syumaK    schedule 10.12.2020
comment
@syumaK Я использую веб-приложение, но не использую Amplify. Я до сих пор не уверен, почему это имеет значение. Если вы подписываете людей или аутентифицируете их с помощью Cognito, разве Cognito не сможет сообщить об этом без необходимости использования чего-либо еще? Ничего страшного, если ответ отрицательный, просто мне это было непонятно. Казалось, что вы просто сможете соединить их, и данные будут передаваться из Cognito в Pinpoint автоматически.   -  person Rocket04    schedule 10.12.2020


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

person syumaK    schedule 13.12.2020

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

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

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

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

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

person user3672521    schedule 05.01.2021