버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

코드 블럭
languagepy
themeRDark
titleLambda code for Pinpoint campaign message
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자리 숫자)로 치환해야 하며, 아래는 테스트를 위해서 임의로 간단하게 구성한 예입니다.

...