はじめに
KintoneでMA構築する上で、Lambdaを経由してAmazon Pinpointでメールの配信をする構築方法を説明します。
1.Kintone(CRM)の顧客情報をLambdaで取得する
2.pinpointに対してendpointを登録する
3.AWS コンソールで配信環境を設定する
- 3-1.セグメントを作成する
- 3-2.メールのテンプレートを作成する
- 3-3.キャンペーンを作成して配信設定する
配信グループで設定したユーザーに対して、キャンペーンで設定した配信日時にメール(SMS)を配信できます
Amazon Pinpointのメリット
kintoneで自動配信はプラグインを導入することで可能ですが、分析などを行う場合は様々なツールを使い開封率などを計測していく必要があります。
AWSのPinpointを使うことでメールの配信率や、開封率、メール内のリンククリック数も自動で出力できます。
また特定のメールを開封したユーザーのみ次のメールを配信するなどどいった複雑な処理もジャーニーを活用することでノーコードで簡単に設定できるようになります。
1.Kintone(CRM)の顧客情報をLambdaで取得する
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 コンソールで配信環境を設定する」を投稿してきます。