1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

KintoneからLambdaを経由してAmazon PinpointでMAを実装①

Last updated at Posted at 2022-08-31

はじめに

KintoneでMA構築する上で、Lambdaを経由してAmazon Pinpointでメールの配信をする構築方法を説明します。

1.Kintone(CRM)の顧客情報をLambdaで取得する

kintone1.png

2.pinpointに対してendpointを登録する

kintone2.png

3.AWS コンソールで配信環境を設定する
  • 3-1.セグメントを作成する
  • 3-2.メールのテンプレートを作成する
  • 3-3.キャンペーンを作成して配信設定する

配信グループで設定したユーザーに対して、キャンペーンで設定した配信日時にメール(SMS)を配信できます
aws_pinpoint.png

Amazon Pinpointのメリット

kintoneで自動配信はプラグインを導入することで可能ですが、分析などを行う場合は様々なツールを使い開封率などを計測していく必要があります。
AWSのPinpointを使うことでメールの配信率や、開封率、メール内のリンククリック数も自動で出力できます。
また特定のメールを開封したユーザーのみ次のメールを配信するなどどいった複雑な処理もジャーニーを活用することでノーコードで簡単に設定できるようになります。

1.Kintone(CRM)の顧客情報をLambdaで取得する

kintone1.png
boto3のインポート

import boto3
client = boto3.client('pinpoint')

kintone apiを叩きデータを取得

URLS = "https://***.cybozu.com/k/v1/records.json"
API_TOKEN = "APIトークン"

def get_kintone(body, token):
    headers = {'X-Cybozu-API-Token': token, 'Content-Type': 'application/json'}
    resp = requests.get(URLS, data=json.dumps(body), headers=headers)
    return resp

def lambda_handler(event, context):
    get_data = {'app': 'アプリID', 'query': 'ここにクエリ'}
  
    RESP = get_kintone(get_data, API_TOKEN)
    data1 = json.loads(RESP.text)

※サブドメイン、APIトークン、アプリID、クエリを書き換えてください

  • ユーザーの属性情報を取得
 while i < len(data1["records"]):
    # user infomation
    name = data1["records"][i]["name"]["value"]
    tel = data1["records"][i]["tel"]["value"]
    mail = data1["records"][i]["mail"]["value"]
    zipcode = data1["records"][i]["zipcode"]["value"]
    address_1 = data1["records"][i]["address_1"]["value"]

    i += 1

2.pinpointに対してendpointを登録する

  • endpointに追加するためのJSONに値を格納する
    json_body = {
                    "ChannelType": "EMAIL",
                    "Address": mail,
                    "Attributes": {
                    },
                    "Metrics": {},
                    "Demographic": {},
                    "Location": {},
                    "User": {
                        "UserId": mail,
                        "UserAttributes": {
                            "user_name": [name],
                            "tel": [tel],
                            "zipcode": [zipcode],
                            "address_1": [address_1]
                        }
                    }
                }

endpointに登録する

response = client.update_endpoint(
    ApplicationId='pinpointのアプリケーションIDを設定する',
    EndpointId=mail,
    EndpointRequest=json_body
)

全体のプログラムは下記の通りです
import boto3
client = boto3.client('pinpoint')

URLS = "https://***.cybozu.com/k/v1/records.json"
API_TOKEN = "APIトークン"

def get_kintone(body, token):
    headers = {'X-Cybozu-API-Token': token, 'Content-Type': 'application/json'}
    resp = requests.get(URLS, data=json.dumps(body), headers=headers)
    return resp

def lambda_handler(event, context):
    get_data = {'app': 'アプリID', 'query': 'ここにクエリ'}
  
    RESP = get_kintone(get_data, API_TOKEN)
    data1 = json.loads(RESP.text)
while i < len(data1["records"]):
    # user infomation
    name = data1["records"][i]["name"]["value"]
    tel = data1["records"][i]["tel"]["value"]
    mail = data1["records"][i]["mail"]["value"]
    zipcode = data1["records"][i]["zipcode"]["value"]
    address_1 = data1["records"][i]["address_1"]["value"]
    json_body = {
                    "ChannelType": "EMAIL",
                    "Address": mail,
                    "Attributes": {
                    },
                    "Metrics": {},
                    "Demographic": {},
                    "Location": {},
                    "User": {
                        "UserId": mail,
                        "UserAttributes": {
                            "user_name": [name],
                            "tel": [tel],
                            "zipcode": [zipcode],
                            "address_1": [address_1]
                        }
                    }
                }

    response = client.update_endpoint(
        ApplicationId='pinpointのアプリケーションIDを設定する',
        EndpointId=mail,
        EndpointRequest=json_body
    )
    
    i += 1

ここまでできればあとはコンソール側で配信設定を行うことで簡単に自動配信ができます。
今回はここまでの手順説明となります。
次回は「AWS コンソールで配信環境を設定する」を投稿してきます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?