...
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
import json import boto3 import os import datetime from botocore.exceptions import ClientError # Pinpoint Project Id application_id = "4fcac97e77254e918fa8f9d919afde1e" region = os.environ['AWS_REGION'] client = boto3.client('pinpoint',region_name=region) # Pinpoint Project Id def get_segment_id(segment_name): try: response = client.get_segments( ApplicationId=application_id ) segment_list = response['SegmentsResponse']['Item'] for one in segment_list: if one['Name'] == segment_name: segment_id = one['Id'] except ClientError as e: print(e.response['Error']['Message']) else: print(segment_id) # print(json.dumps(response)) return segment_id def create_campaign(title, message, segment_id, icon_url, image_url): print(segment_id) try: response = client.create_campaign( ApplicationId=application_id, WriteCampaignRequest={ 'MessageConfiguration': { 'DefaultMessage': { 'Action': 'OPEN_APP', 'Body': message, 'Title': title, 'ImageIconUrl': icon_url, 'ImageUrl': image_url # 'ImageUrl': 'http://www.earlyadopter.co.kr/wp-content/uploads/2019/11/apple-airpods-pro-early-adopter-review-1.jpg' # 'MediaUrl': 'https://m.media-amazon.com/images/G/01/kindle/merch/2019/ONTHEGO/19951312/PUGE0013_Amazon_Puget_US_REV_2019_45_HD-forDP.mp4?_=1' }, }, 'Name': title, 'Description': "Campaign캠페인 Description메시지", 'SegmentId': segment_id, 'Schedule': { 'StartTime': "IMMEDIATE" # 'Frequency': 'ONCE', # 'StartTime': datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat() } } ) except ClientError as e: print(e.response['Error']['Message']) else: print (json.dumps(response)) def lambda_handler(event, context): if "body" in event: event = json.loads(event['body']) # Query parametersparmeters title = event["title"] message = event["message"] segment = event["segment"] icon_url = event["icon"] image_url = event["image"] segment_id = get_segment_id(segment) response = create_campaign(title, message, segment_id, icon_url, image_url) return { 'statusCode': 200, 'body': json.dumps(""){'result': response}), 'headers': { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' } } |
매개 변수중 Schedule에 있는 StartTime에 따라서 즉시 보낼 것인지, 특정 시간에 보낼 것인지 정해야 합니다.
...
코드 블럭 |
---|
{ "segment": "cart", "title": "안녕하세요 11월 06일 오후2{{User.UserId}}님", "message": "신제품 Echo Bud를 소개 합니다.", "messageicon": "{{User.UserId}}님 반갑습니다.https://apprecs.org/ios/images/app-icons/256/6d/580990573.jpg", "image": "https://pplware.sapo.pt/wp-content/uploads/2019/09/Amazon_Echo_Buds_02.jpg" } |
Lambda Policy
하단의 {account-id}는 본인 account-id(12자리 숫자)로 치환해야 하며, 아래는 테스트를 위해서 임의로 간단하게 구성한 예입니다.
...