

# AWS Glue Studio에서 Intercom에 연결
<a name="connecting-to-data-intercom"></a>

 Intercom은 제품, 현재, 고객 측면에서 비즈니스와 고객 간의 열린 채널을 제공하는 참여 OS로, 고객 여정 전반에 걸쳐 모든 참여를 최대한 활용할 수 있는 지속적인 대화를 생성합니다.

**Topics**
+ [Intercom에 대한 AWS Glue의 지원](intercom-support.md)
+ [연결을 생성하고 사용하기 위한 API 작업이 포함된 정책](intercom-configuring-iam-permissions.md)
+ [Intercom 구성](intercom-configuring.md)
+ [Intercom 연결 구성](intercom-configuring-connections.md)
+ [Intercom 엔터티에서 읽기](intercom-reading-from-entities.md)
+ [Intercom 연결 옵션](intercom-connection-options.md)
+ [제한 사항](intercom-limitations.md)
+ [새 Intercom 계정 생성 및 클라이언트 앱 구성](intercom-new-account-creation.md)

# Intercom에 대한 AWS Glue의 지원
<a name="intercom-support"></a>

AWS Glue에서는 다음과 같이 Intercom을 지원합니다.

**소스로 지원되나요?**  
예. AWS Glue ETL 작업을 사용하여 Intercom에서 데이터를 쿼리할 수 있습니다.

**대상으로서 지원되나요?**  
아니요.

**지원되는 Intercom API 버전**  
 v2.5. 버전별 엔터티 지원은 [Intercom 엔터티에서 읽기](intercom-reading-from-entities.md) 섹션을 참조하세요.

# 연결을 생성하고 사용하기 위한 API 작업이 포함된 정책
<a name="intercom-configuring-iam-permissions"></a>

 다음 샘플 정책은 연결을 생성하고 사용하는 데 필요한 IAM 권한을 설명합니다. 새 역할을 생성하는 경우 다음을 포함하는 정책을 생성합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

아래 관리형 IAM 정책을 사용하여 다음에 대한 액세스를 허용할 수 있습니다.
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – 다양한 AWS Glue 프로세스를 대신 실행하는 데 필요한 리소스에 대한 액세스 권한을 부여합니다. 이러한 리소스에는 AWS Glue, Amazon S3, IAM, Amazon CloudWatch Logs, Amazon EC2가 포함됩니다. 이 정책에 지정된 리소스의 이름 변환을 따르고자 한다면 AWS Glue 절차는 필요한 권한을 소유합니다. 이 정책은 크롤러, 작업 및 개발 엔드포인트를 정의할 때 지정된 역할에 일반적으로 추가됩니다.
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) - 정책이 연결된 자격 증명이 AWS Management Console을 사용하는 경우 AWS Glue 리소스에 대한 전체 액세스 권한을 부여합니다. 이 정책에 지정된 리소스의 이름 변환을 따르면 사용자는 콘솔 전체 용량을 소유합니다. 이 정책은 보통 AWS Glue 콘솔의 사용자에게 해당됩니다.

# Intercom 구성
<a name="intercom-configuring"></a>

AWS Glue를 사용하여 Intercom에서 데이터를 전송하려면 먼저 다음 요구 사항을 충족해야 합니다.

## 최소 요구 사항
<a name="intercom-configuring-min-requirements"></a>
+  Intercom 계정이 있습니다. 자세한 내용은 [새 Intercom 계정 생성 및 클라이언트 앱 구성](intercom-new-account-creation.md) 섹션을 참조하세요.
+  Intercom 계정이 API 액세스에 대해 활성화되어 있습니다.
+  계정에 대해 인증된 직접 호출을 수행하는 경우 AWS Glue에서 데이터에 안전하게 액세스하기 위해 사용하는 클라이언트 자격 증명을 제공하는 앱이 Intercom 개발자 계정 아래에 있어야 합니다. 자세한 내용은 새 Intercom 계정 생성 및 클라이언트 앱 생성 단계를 참조하세요.

 이러한 요구 사항을 충족하면 Intercom 계정에 AWS Glue를 연결할 준비가 된 것입니다.

# Intercom 연결 구성
<a name="intercom-configuring-connections"></a>

 Intercom에서는 OAuth 2에 대한 `AUTHORIZATION_CODE` 권한 부여 유형을 지원합니다.

 이 권한 부여 유형은 사용자를 인증하기 위해 사용자를 서드파티 권한 부여 서버로 리디렉션하는 방식에 의존하므로 '3각' OAuth로 간주됩니다. AWS Glue 콘솔을 통해 연결을 생성할 때 사용됩니다. AWS Glue 콘솔은 사용자를 Google Ads로 리디렉션합니다. 사용자가 로그인하고 Intercom 인스턴스에 액세스하도록 요청된 권한을 AWS Glue에 허용해야 합니다.

 사용자는 AWS Glue 콘솔을 통해 연결을 생성할 때 고유한 클라이언트 ID 및 클라이언트 보안 암호를 제공해야 합니다. 이 시나리오에서는 여전히 Intercom으로 리디렉션되어 로그인하고 리소스에 액세스할 수 있는 권한을 AWS Glue에 부여합니다.

 이 권한 부여 유형은 새로 고침 토큰과 액세스 토큰을 생성합니다. 액세스 토큰은 수명이 짧으며 새로 고침 토큰을 사용하여 사용자 상호 작용 없이 자동으로 새로 고칠 수 있습니다.

 권한 부여 코드 OAuth 흐름을 위한 연결된 앱 생성에 대한 자세한 내용은 [Ads API](https://developers.intercom.com/building-apps/docs/setting-up-oauth)를 참조하세요.

Intercom 연결을 구성하는 방법:

1.  AWS Secrets Manager에서 다음 세부 정보로 보안 암호를 생성하세요. AWS Glue에서 각 연결에 대한 보안 암호를 생성해야 합니다.

   1.  고객 관리형 연결 앱의 경우 - 보안 암호에는 연결된 앱 액세스 토큰, 새로 고침 토큰, client\$1id 및 client\$1secret이 포함되어야 합니다.

1. AWS Glue Glue Studio의 **데이터 연결**에서 아래 단계에 따라 연결을 생성하세요.

   1. **연결 유형**을 선택할 때 Intercom을 선택합니다.

   1. Intercom 환경을 제공합니다.

   1.  다음 작업에 대한 권한이 있고 AWS Glue에서 수임할 수 있는 IAM 역할을 선택하세요.

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1.  토큰을 넣기 위해 AWS Glue에서 이 연결에 사용할 `secretName`을 선택합니다.

   1.  네트워크를 사용하려는 경우 네트워크 옵션을 선택합니다.

1.  AWS Glue 작업 권한과 연결된 IAM 역할에 `secretName`을 읽을 수 있는 권한을 부여합니다.

# Intercom 엔터티에서 읽기
<a name="intercom-reading-from-entities"></a>

 **사전 조건** 
+  읽으려는 Intercom 객체. 사용 가능한 엔터티를 확인하려면 아래 지원되는 엔터티 테이블을 참조하세요.

 **지원되는 엔터티** 


| 개체 | API\$1Version | 필터링 가능 | 제한 지원 | 정렬 기준 지원 | Select \$1 지원 | 분할 지원 | 
| --- | --- | --- | --- | --- | --- | --- | 
| Admins | v2.5 | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| 회사 | v2.5 | 아니요 | 예 | 아니요 | 예 | 아니요 | 
| Conversations | v2.5 | 예 | 예 | 예 | 예 | 예 | 
| 데이터 속성 | v2.5 | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| Contacts | v2.5 | 예 | 예 | 예 | 예 | 예 | 
| Segments | v2.5 | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| Tags | v2.5 | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 
| 팀 | v2.5 | 아니요 | 아니요 | 아니요 | 예 | 아니요 | 

 **예제** 

```
Intercom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Intercom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "V2.5"
    }
)
```

 **Intercom 엔터티 및 필드 세부 정보** 


| 개체 | 필드 | 데이터 형식 | 지원되는 연산자 | 
| --- | --- | --- | --- | 
| Admins | type | String | NA | 
| Admins | id | String | NA | 
| Admins | avatar | Struct | NA | 
| Admins | name | String | NA | 
| Admins | 이메일 | String | NA | 
| Admins | away\$1mode\$1enabled | 불 | NA | 
| Admins | away\$1mode\$1reassign | 불 | NA | 
| Admins | has\$1inbox\$1seat | 불 | NA | 
| Admins | teams\$1ids | 나열 | NA | 
| Admins | job\$1title | String | NA | 
| 회사 | type | String | NA | 
| 회사 | id | String | NA | 
| 회사 | app\$1id | String | NA | 
| 회사 | created\$1at | DateTime | NA | 
| 회사 | remote\$1created\$1at | DateTime | NA | 
| 회사 | updated\$1at | DateTime | NA | 
| 회사 | last\$1request\$1at | DateTime | NA | 
| 회사 | 계획 | Struct | NA | 
| 회사 | company\$1id | String | NA | 
| 회사 | name | String | NA | 
| 회사 | custom\$1attributes | Struct | NA | 
| 회사 | session\$1count | Integer | NA | 
| 회사 | monthly\$1spend | Integer | NA | 
| 회사 | user\$1count | Integer | NA | 
| 회사 | industry | String | NA | 
| 회사 | size | Integer | NA | 
| 회사 | 웹 사이트 | String | NA | 
| 회사 | tags | Struct | NA | 
| 회사 | segments | Struct | NA | 
| Contacts | id | String | EQUAL\$1TO.NOT\$1EQUAL\$1TO | 
| Contacts | type | String | NA | 
| Contacts | workspace\$1id | String | NA | 
| Contacts | external\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | role | String | EQUAL\$1TO.NOT\$1EQUAL\$1TO | 
| Contacts | 이메일 | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | phone | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | avatar | String | NA | 
| Contacts | owner\$1id | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | social\$1profiles | Struct | NA | 
| Contacts | has\$1hard\$1bounced | 불 | EQUAL\$1TO | 
| Contacts | marked\$1email\$1as\$1spam | 불 | EQUAL\$1TO | 
| Contacts | unsubscribed\$1from\$1emails | 불 | EQUAL\$1TO | 
| Contacts | created\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | updated\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | signed\$1up\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1seen\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1replied\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1contacted\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1email\$1opened\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | last\$1email\$1clicked\$1at | DateTime | EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Contacts | language\$1override | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | 브라우저 | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | browser\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | browser\$1language | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | os | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | location | Struct | NA | 
| Contacts | location\$1country | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | location\$1region | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | location\$1city | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | android\$1app\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | android\$1app\$1version | String | NA | 
| Contacts | android\$1device | String | NA | 
| Contacts | android\$1os\$1version | String | NA | 
| Contacts | android\$1sdk\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | android\$1last\$1seen\$1at | 날짜 | NA | 
| Contacts | ios\$1app\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | ios\$1app\$1version | String | NA | 
| Contacts | ios\$1device | String | NA | 
| Contacts | ios\$1os\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | ios\$1sdk\$1version | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Contacts | ios\$1last\$1seen\$1at | DateTime | NA | 
| Contacts | custom\$1attributes | Struct | NA | 
| Contacts | tags | Struct | NA | 
| Contacts | notes | Struct | NA | 
| Contacts | companies | Struct | NA | 
| Contacts | unsubscribed\$1from\$1sms | 불 | NA | 
| Contacts | sms\$1consent | 불 | NA | 
| Contacts | opted\$1out\$1subscription\$1types | Struct | NA | 
| Contacts | referrer | String | NA | 
| Contacts | utm\$1campaign | String | NA | 
| Contacts | utm\$1content | String | NA | 
| Contacts | utm\$1medium | String | NA | 
| Contacts | utm\$1source | String | NA | 
| Contacts | utm\$1term | String | NA | 
| Conversations | type | String | NA | 
| Conversations | id | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | created\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | updated\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | source | Struct | NA | 
| Conversations | source\$1id | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1type | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO, | 
| Conversations | source\$1delivered\$1as | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO, | 
| Conversations | source\$1subject | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1body | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1author\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1author\$1type | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1author\$1name | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1author\$1email | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | source\$1url | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | contacts | Struct | NA | 
| Conversations | teammates | Struct | NA | 
| Conversations | 제목 | String | NA | 
| Conversations | admin\$1assignee\$1id | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | team\$1assignee\$1id | Integer | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | custom\$1attributes | Struct | NA | 
| Conversations | open | 불 | EQUAL\$1TO | 
| Conversations | state | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | 읽기 | 불 | EQUAL\$1TO | 
| Conversations | waiting\$1since | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | snoozed\$1until | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | tags | Struct | NA | 
| Conversations | 첫 번째\$1연락처\$1회신 | Struct | NA | 
| Conversations | priority | String | EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | topics | Struct | NA | 
| Conversations | sla\$1applied | Struct | NA | 
| Conversations | conversation\$1rating | Struct | NA | 
| Conversations | conversation\$1rating\$1requested\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | conversation\$1rating\$1replied\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | conversation\$1rating\$1score | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | conversation\$1rating\$1remark | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | conversation\$1rating\$1contact\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | conversation\$1rating\$1admin\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | 통계 | Struct | NA | 
| Conversations | statistics\$1time\$1to\$1assignment | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1time\$1to\$1admin\$1reply | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1time\$1to\$1first\$1close | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1time\$1to\$1last\$1close | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1median\$1time\$1to\$1reply | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1first\$1contact\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1first\$1assignment\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1first\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1first\$1close\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1assignment\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1assignment\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1contact\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1admin\$1reply\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1close\$1at | DateTime | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1last\$1closed\$1by\$1id | String | CONTAINS, EQUAL\$1TO, NOT\$1EQUAL\$1TO | 
| Conversations | statistics\$1count\$1reopens | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1count\$1assignments | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | statistics\$1count\$1conversation\$1parts | Integer | EQUAL\$1TO, NOT\$1EQUAL\$1TO, GREATER\$1THAN, LESS\$1THAN | 
| Conversations | conversation\$1parts | 나열 | NA | 
| 데이터 속성 | id | Integer | NA | 
| 데이터 속성 | type | String | NA | 
| 데이터 속성 | 모델 | String | NA | 
| 데이터 속성 | name | String | NA | 
| 데이터 속성 | full\$1name | String | NA | 
| 데이터 속성 | 레이블 | String | NA | 
| 데이터 속성 | 설명 | String | NA | 
| 데이터 속성 | data\$1type | String | NA | 
| 데이터 속성 | 옵션 | 나열 | NA | 
| 데이터 속성 | api\$1writable | 불 | NA | 
| 데이터 속성 | ui\$1writable | 불 | NA | 
| 데이터 속성 | 사용자 지정 | 불 | NA | 
| 데이터 속성 | archived | 불 | NA | 
| 데이터 속성 | created\$1at | 불 | NA | 
| 데이터 속성 | updated\$1at | DateTime | NA | 
| 데이터 속성 | admin\$1id | String | NA | 
| Segments | type | String | NA | 
| Segments | id | String | NA | 
| Segments | name | String | NA | 
| Segments | created\$1at | DateTime | NA | 
| Segments | updated\$1at | DateTime | NA | 
| Segments | person\$1type | String | NA | 
| Segments | count | Integer | NA | 
| Tags | type | String | NA | 
| Tags | id | String | NA | 
| Tags | name | String | NA | 
| 팀 | type | String | NA | 
| 팀 | id | String | NA | 
| 팀 | name | String | NA | 
| 팀 | admin\$1ids | 나열 | NA | 

 **분할 쿼리** 

 Spark에서 동시성을 활용하려는 경우 추가 Spark 옵션(`PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND`, `NUM_PARTITIONS`)을 제공할 수 있습니다. 이러한 파라미터를 사용하면 Spark 태스크에서 동시에 실행할 수 있는 `NUM_PARTITIONS`개의 하위 쿼리로 원본 쿼리가 분할됩니다.
+  `PARTITION_FIELD`: 쿼리 분할에 사용할 필드의 이름입니다.
+  `LOWER_BOUND`: 선택한 파티션 필드의 하한 값(경계 포함).

   날짜의 경우 Spark SQL 쿼리에 사용된 Spark 날짜 형식을 허용합니다. 유효한 값의 예제: `"2024-02-06"`.
+  `UPPER_BOUND`: 선택한 파티션 필드의 상한 값(경계 제외).
+  `NUM_PARTITIONS`: 파티션 수.

 엔터티 수준의 분할 필드 지원 세부 정보는 다음 표에 캡처되어 있습니다.


| Entity Name | 분할 필드 | 데이터 형식 | 
| --- | --- | --- | 
| Contacts | created\$1at, updated\$1at,last\$1seen\$1at | DateTime | 
| Conversations | id | Integer | 
| Conversations | created\$1at, updated\$1at | DateTime | 

 **예제** 

```
Intercom_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Intercom",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversation",
        "API_VERSION": "V2.5",
        "PARTITION_FIELD": "created_at"
        "LOWER_BOUND": "2022-07-13T07:55:27.065Z"
        "UPPER_BOUND": "2022-08-12T07:55:27.065Z"
        "NUM_PARTITIONS": "2"
    }
)
```

# Intercom 연결 옵션
<a name="intercom-connection-options"></a>

다음은 Intercom에 대한 연결 옵션입니다.
+  `ENTITY_NAME`(문자열) - (필수) 읽기에 사용됩니다. Intercom에서의 객체 이름.
+  `API_VERSION`(문자열) - (필수) 읽기에 사용됩니다. 사용할 Intercom Rest API 버전. 예: v2.5.
+  `SELECTED_FIELDS`(List<String>) - 기본값: 비어 있습니다(SELECT \$1). 읽기에 사용됩니다. 객체에 대해 선택할 열.
+  `FILTER_PREDICATE`(문자열) - 기본값: 비어 있습니다. 읽기에 사용됩니다. Spark SQL 형식이어야 합니다.
+  `QUERY`(문자열) - 기본값: 비어 있습니다. 읽기에 사용됩니다. 전체 Spark SQL 쿼리.
+  `PARTITION_FIELD`(문자열) - 읽기에 사용됩니다. 쿼리 분할에 사용할 필드입니다.
+  `LOWER_BOUND`(문자열) - 읽기에 사용됩니다. 선택한 파티션 필드의 하한 값(경계 포함).
+  `UPPER_BOUND`(문자열) - 읽기에 사용됩니다. 선택한 파티션 필드의 상한 값(경계 제외).
+  `NUM_PARTITIONS`(정수) - 기본값: 1. 읽기에 사용됩니다. 읽을 파티션 수.
+  `INSTANCE_URL`(문자열) - 사용자가 작업을 실행하려는 인스턴스의 URL. 예: [https://api.intercom.io](https://api.intercom.io).

# 제한 사항
<a name="intercom-limitations"></a>

다음은 Intercom 커넥터에 대한 제한 사항입니다.
+  회사 엔터티를 사용하는 경우 반환할 수 있는 회사 수는 10,000곳으로 제한됩니다. 자세한 내용은 [List all companies API](https://developers.intercom.com/docs/references/2.5/rest-api/companies/list-companies)를 참조하세요.
+  정렬 기준을 적용하는 동안 필터는 **연락** 엔터티와 **대화** 엔터티 모두에 필수입니다.
+  MCA는 SaaS 제공업체에서 지원합니다. 그러나 설명서에 언급된 API 사용 제한에 따라 AWS Glue에 MCA를 호스팅하지 않습니다. 이 경우 다른 워크로드에 영향을 미치고 리소스 경합으로 인해 잠재적으로 성능 문제가 발생할 수 있기 때문입니다.

# 새 Intercom 계정 생성 및 클라이언트 앱 구성
<a name="intercom-new-account-creation"></a>

**Intercom 계정 생성**

1. [Intercom URL](https://app.intercom.com/)을 선택하고 페이지 오른쪽 상단에서 **Start my free trial**을 선택하세요.

1. 페이지 오른쪽 상단에 있는 **Try for free** 버튼을 선택하세요.

1. 필요한 비즈니스 유형을 선택하세요.

1. 페이지에서 요청된 정보를 입력하세요.

1. 모든 정보를 입력한 후 **Register**를 선택하세요.



**Intercom 개발자 앱 생성**

**클라이언트 ID** 및 **클라이언트 보안 암호**를 가져오려면 개발자 계정을 생성합니다.

1. [https://app.intercom.com/](https://app.intercom.com/)으로 이동하세요.

1. 이메일 ID 및 암호를 입력하거나 Sign In Using Google을 선택하고 로그인하세요.

1. 왼쪽 하단에서 **사용자 프로파일**을 선택하고 설정을 선택하세요.

1. **Apps & Integration**을 선택하세요.

1. **Apps & Integration** 아래 **Developer Hub** 탭을 선택하세요.

1. **New app**을 선택하고 여기에서 앱을 생성하세요.

1. 앱 이름을 입력하고 **Create** 앱을 선택하세요.

1. 앱 내에서 **Authentication** 섹션으로 이동하세요.

1. **Edit**을 선택하고 리디렉션 URI를 추가하세요. 리전별 리디렉션 URL을 `https://<aws-region>.console.aws.amazon.com/gluestudio/oauth`로 추가하세요. 예를 들어 `https://us-east-1.console.aws.amazon.com/gluestudio/oauth for the us-east-1 region`을 추가하세요.

1. Basic Information 섹션에서 생성된 **클라이언트 ID** 및 **클라이언트 보안 암호**를 가져오세요.