def handler(event, context): verify_deploy_stage() event_batches = [ batch_from_dict(dynamodb_utils.deserialize(record["dynamodb"]["NewImage"])) for record in event["Records"] if record["dynamodb"].get("NewImage") ] status.handle_dialog_event_batches(event_batches) return {"statusCode": 200}
def handler(event: dict, context: dict) -> dict: verify_deploy_stage() event_batches = [ batch_from_dict(dynamodb_utils.deserialize(record["dynamodb"]["NewImage"])) for record in event["Records"] if record["dynamodb"].get("NewImage") ] _publish_event_batches_to_kinesis(event_batches) return {"statusCode": 200}
def _get_dialog_events(phone_number: str, stage: str) -> Iterator[DialogEventBatch]: dynamodb = get_boto3_client("dynamodb") table_name = f"dialog-event-batches-{stage}" args: Dict[str, str] = {} while True: result = dynamodb.query( TableName=table_name, IndexName="by_created_time", KeyConditionExpression="phone_number=:phone_number", ExpressionAttributeValues={":phone_number": {"S": phone_number}}, **args, ) for item in result["Items"]: yield batch_from_dict(dynamodb_utils.deserialize(item)) if not result.get("LastEvaluatedKey"): break args["ExclusiveStartKey"] = result["LastEvaluatedKey"]
def handler(event, context): verify_deploy_stage() event_batches = [ batch_from_dict(dynamodb_utils.deserialize(record["dynamodb"]["NewImage"])) for record in event["Records"] if record["dynamodb"].get("NewImage") ] dialog_events = [] for batch in event_batches: for event in batch.events: dialog_events.append(event) enqueue_outbound_sms_commands(dialog_events) for batch in event_batches: logging.info(f"Enqueue SMS commands for {batch.phone_number} at seq {batch.seq}") return {"statusCode": 200}