🌟

Amazon Pinpointのハンズオンをやってみた(その9)

2023/09/30に公開

はじめに

Amazon Pinpointのハンズオン9回目をお送りします。
イベントベースのジャーニー作成をやっていきたいと思います。

カスタムイベント

AWS LambdaAmazon Pinpoint Python SDKBoto3を使って、カスタムイベントを記録します。前回作成したジャニーをコピーし、カスタムイベントに基づいてエンドポイントを処理します。

Amazon Pinpoint では、モバイルアプリとウェブアプリの両方でカスタマーのイベントをトラッキングができます。これらのイベントはカスタムイベントと呼ばれ、Amazon Pinpoint のキャンペーンやジャーニーのイベントトリガーとして使用することができます。
すべてのカスタムイベントはエンドポイントに関連付けられ、イベントの属性とメトリックを指定できます。例えば、カスタムイベント purchase は、属性 product とメトリック price を持つことができます。
記録されたカスタムイベントデータは、Amazon Pinpoint コンソール > あなたのプロジェクト(Your project) > 分析(Analytics) > イベント(Events) で確認することができます。最初にフィルタを有効にすることで、分析したいカスタムイベントを選択することができるようになります。
カスタムイベントを記録するために、Amazon Pinpointは豊富なREST API とAWS SDKs を提供しています。

ハンズオンのURL

https://catalog.workshops.aws/amazon-pinpoint-customer-experience/ja-JP/journeys/event-based-journey

Amazon Pinpointのカスタムイベントを記録

AWS Pthon SDK Boto3AWS Lambdaを使用して、コードをホストして実行します。

まずはLambdaから始めます。関数を作成していきましょう。

関数名ランタイムなどを設定していきます。
設定が完了したら、関数の作成ボタンをクリックします。

関数が作成できたら、下記のコードをコピーして中身を貼り付けます。

import boto3
import datetime
import time

client = boto3.client('pinpoint')

def lambda_handler(event, context):

    application_id = event['application_id']
    endpoint_id = event['endpoint_id']
    event_type = event['event_type']

    response = client.put_events(
            ApplicationId = application_id,
            EventsRequest={
                'BatchItem': {
                    endpoint_id: {
                        'Endpoint': {
                        },
                        'Events':{
                            'registration_success': {
                                'EventType': event_type,
                                'Timestamp': datetime.datetime.fromtimestamp(time.time()).isoformat()
                            }
                        }
                    }
                }
            }
        )

    return response

次にこのLambda 関数に対して、Amazon Pinpoint プロジェクトput_eventsを実行できる権限を与えます。

ロール名リンクから、インラインポリシーを作成していきましょう。

前にも似たようなことをやっているので、ちょっと端折っていますが、下記のJSONを貼り付けて、リージョンとアカウントIDは自分のものに変更していきます。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "PutEvent",
			"Effect": "Allow",
			"Action": [
				"mobiletargeting:PutEvent*"
			 ],
			"Resource": "arn:aws:mobiletargeting:AWS-REGION:AWS-ACCOUNT-ID:*"
		}
		]
}

これで、ポリシーの作成ができました。

Lambda 関数の方に戻ります。

下記のデータをイベント JSONに貼り付けます。
※application_idはPinpointのプロジェクトIDに置き換えます。
※endpoint_idはダイナミックセグメントolder_than_35をエクスポートし、1列目のIdの値で置き換えてください。

{
  "application_id": "---",
  "endpoint_id": "---",
  "event_type": "registration_success"
}

ここまでの作成が完了したら、テストを実施します。
下記のように返却されたらOK!!

次はジャーニーに移動します。
アクティブな項目にチェックを入れ、アクション > ジャーニーを複製を選択します。

複製したら、アクティビティの実行時に参加者の追加を選択し、イベント名をregistration_successと入力し、保存ボタンをクリックします。

アクション > 設定に移動し、開始日時終了日時の両方で、リセットをクリックします。
あとは、下記のスクリーンショット通りの設定を行い、保存ボタンをクリックします。

設定はこれで完了で、パブリッシュします。

最後にLambda 関数からテストを行ってみます。
先ほど作成したイベントベースのジャーニーのテスト英露オードで指定した縁遠いんとを対象にregistration_successイベントがトリガーされるはずです。

ジャーニーが始まったので、テストしてみます。

あれー、、送信できなかった?

うーん、まだなんでメールが送信できなかったか分からずじまいでしたが、ひとまず先に進むことにします。
さて、次回ですが、いよいよ分析に入ります。
ネイティブチャートのモニタリングをしていきたいと思います。
それではまた次回!

GitHubで編集を提案

Discussion