> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Segment (Twilio)

> 사용자 데이터 및 메시징 이벤트를 위해 OneSignal을 Twilio Segment와 통합합니다.

<Frame caption="OneSignal Segment 통합 개요">
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0fe35d2-onesignal-segment-integration_1.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=f70d1f0b0ea879b548b634bb253ecacf" width="1280" height="720" data-path="images/docs/0fe35d2-onesignal-segment-integration_1.png" />
</Frame>

## 개요

OneSignal + Segment 통합을 통해 다음을 수행할 수 있습니다:

* Segment에서 OneSignal로 사용자 특성 및 이벤트를 보내 사용자 프로필을 강화하고 세그먼테이션을 강화하며 메시징을 트리거합니다.
* OneSignal에서 Segment로 메시지 전달 및 참여 이벤트를 보내 중앙 집중식 Analytics 및 데이터 웨어하우징을 수행합니다.

이 양방향 설정은 모든 주요 OneSignal 채널을 지원합니다: Push, In-App, Email 및 SMS.

***

## 요구 사항

* Growth, Professional 또는 Enterprise [OneSignal 계정](https://onesignal.com/pricing).
* Segment 관리자 권한
* 데이터를 보내려는 OneSignal [Mobile SDK](./mobile-sdk-setup) 및/또는 [Web SDK](./web-push-setup). [Email](./email-setup) 또는 [SMS](./sms-setup) 전용 통합은 SDK가 필요하지 않습니다.
* Segment.com `userId`에 매핑되는 OneSignal 속성: [External ID](./users).

***

## 설정

### 1. OneSignal 설정

OneSignal 대시보드에서 기존 앱을 사용하거나 새 앱을 만듭니다. 그런 다음 선호하는 채널을 설정합니다:

* [Web Push 설정](./web-push-setup)
* [Mobile Push 설정](./mobile-sdk-setup)
* [SMS 설정](./sms-setup)
* [Email 설정](./email-setup)

### 2. Segment을 OneSignal에 연결

OneSignal 대시보드에서 **Data > Integrations**로 이동하고 Segment.com 카드 내에서 **Active**를 클릭합니다. 그런 다음 설정 옵션을 계속 진행합니다.

#### 데이터 수신

OneSignal로의 "Data In"을 사용하면 Segment.com 계정에서 OneSignal로 [OneSignal 세그먼트](./segmentation), [태그](./add-user-data-tags) 및 [사용자 지정 이벤트](./custom-events)를 보낼 수 있습니다. OneSignal 대시보드의 Segment.com 설정 페이지의 *Data In* 섹션에서 **Authenticate**를 클릭합니다.

<Note>
  사용자 지정 이벤트는 현재 베타 버전입니다.
  액세스를 요청하려면 다음 정보와 함께 `support@onesignal.com`에 문의하세요:

  * 회사 이름
  * OneSignal Organization ID
  * 활성화하려는 앱 ID
</Note>

<Warning>
  사용자 지정 이벤트 추적을 활성화하면 Segment.com 통합에서 Tags 및 Events를 모두 보내므로 데이터 태그를 참조하는 기존 템플릿을 업데이트할 필요가 없습니다.
</Warning>

<Frame caption="Data In 인증 설정">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/48031e3-Data_in.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=3985a85e39ed139234cf81b3f29a0290" width="1182" height="428" data-path="images/docs/48031e3-Data_in.png" />
</Frame>

Authenticate를 클릭하면 Segment.com 웹 페이지가 열리고 Segment.com 계정에 로그인하라는 메시지가 표시됩니다. 그런 다음 Segment.com 계정에서 새 데이터 대상을 구성하라는 메시지가 표시됩니다.

<Frame caption="Segment 설정 구성 화면">
  <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/85c6577-segment_set_up.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=a8a554790d8c80595116aca43093627b" width="898" height="916" data-path="images/docs/85c6577-segment_set_up.png" />
</Frame>

#### 데이터 발신

Segment.com에 "Data Out"을 활성화하면 생성된 메시지 이벤트가 Segment.com 계정으로 다시 동기화됩니다. 이러한 메시지 이벤트는 OneSignal 플랫폼에서 사용자에게 메시지를 보낼 때 생성됩니다. 생성될 수 있는 이벤트 종류 및 전송되는 속성에 대한 자세한 내용은 [아래](./segment-onesignal-integration#message-events)에서 확인할 수 있습니다.

먼저 Segment.com 계정에서 OneSignal을 소스로 추가해야 합니다. Segment Connections Catalogue의 [OneSignal Source 목록](https://segment.com/docs/connections/sources/catalog/cloud-apps/onesignal/)으로 이동하면 됩니다.

거기에서 OneSignal 대시보드에 Segment.com API 토큰을 추가할 수 있습니다. Segment API 키를 추가하려면 OneSignal 대시보드에서 **Data > Integrations > Segment**로 이동하세요.

<Frame caption="Data Out API 키 구성">
  <img src="https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9d8eb5f-data_out_3.png?fit=max&auto=format&n=6tscVAtiSqz353kV&q=85&s=56098282da219dd7eb274b183b271362" width="1604" height="1052" data-path="images/docs/9d8eb5f-data_out_3.png" />
</Frame>

API 키를 설정한 후 Segment.com의 Data Policy 설정을 확인하여 Segment의 EU Residency Endpoint로 이벤트를 보내야 하는지 확인하세요.

모든 설정이 완료되면 OneSignal에서 사용하는 채널에 따라 Segment 계정과 동기화할 이벤트를 선택할 수 있습니다.

### 3. Segment에 OneSignal 대상 추가

**Segment.com Dashboard > Destinations** 내에서 **OneSignal**이 표시되어야 합니다. 표시되지 않으면 OneSignal을 새 대상으로 추가합니다.

OneSignal Destination을 활성화하면 OneSignal API Key와 App ID도 이미 표시되어야 합니다.

<Frame caption="Segment의 OneSignal 대상 구성">
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b191d42-turn-on-configuration-in-segment.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=aebe97a4fbfe4775b502b2c3186ff5fb" width="2046" height="946" data-path="images/docs/b191d42-turn-on-configuration-in-segment.png" />
</Frame>

API 키와 앱 ID가 설정되지 않은 경우 [OneSignal 대시보드](https://app.onesignal.com/apps/)로 이동하여 앱을 선택하고 **Settings > Keys & IDs**로 이동합니다. "App ID"와 "API key"를 Segment.com에 복사하여 붙여넣습니다.

#### 여러 Segment.com 소스

여러 소스가 있는 경우 [Segment의 **Personas > Spaces** 기능](https://segment.com/docs/personas/#personas-spaces)을 사용하여 여러 소스를 대상에 바인딩할 수 있습니다.

### 4. Segment에서 OneSignal로 데이터 전송

OneSignal은 채널 수준 레코드를 저장합니다: Push/IAM, Email 및 SMS. 이러한 레코드는 이미 OneSignal에서 생성되어 있어야 하며 Segment.com에서 보낸 `userID` 필드와 일치하도록 OneSignal에서 [External ID](./users) 별칭을 설정해야 합니다.

<Warning>
  **Segment User ID \<--> OneSignal External ID** 매핑이 없는 레코드는 삭제됩니다.
</Warning>

## 사용자 특성 또는 속성

Segment의 모든 고객 접점에서 데이터를 집계한 다음 이러한 사용자 속성을 실시간으로 [Tags](./add-user-data-tags)로 OneSignal에 보낼 수 있습니다.

**참고**: OneSignal은 중첩된 객체 또는 배열을 사용자 속성으로 허용할 수 없습니다.

[Identify](https://segment.com/docs/connections/spec/identify) - *Segment의 Identify 호출*을 사용하여 전송된 사용자 특성 또는 속성은 OneSignal에 데이터 태그로 저장됩니다. 예시:

<Frame caption="사용자 identify 호출 예시">
  <img src="https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/docs/0209647-Screenshot_2024-05-08_at_11.44.24_AM.png?fit=max&auto=format&n=ciRrThfP6xMpI7GY&q=85&s=423258a2b318e017771eb7a0586a88d9" width="2360" height="632" data-path="images/docs/0209647-Screenshot_2024-05-08_at_11.44.24_AM.png" />
</Frame>

[Track](https://segment.com/docs/connections/spec/track/) - *Segment의 Track 호출*을 사용하여 전송된 이벤트 및 관련 속성의 경우 OneSignal은 모든 *이벤트 속성*을 데이터 태그로 저장하지만 태그를 저장하는 동안 *이벤트 이름*은 *삭제*합니다. *이벤트 이름*을 데이터 태그에 유지하려면 OneSignal로 보내기 전에 속성에 이벤트 이름을 추가할 수 있습니다. 예시:

<CodeGroup>
  ```javascript track example theme={null}
  let timestampInSeconds = Int(NSDate().timeIntervalSince1970).toString()//convert to string since Segment adds decimals to end
  //name will be dropped and only properties will be sent to OneSignal as tag "last opened: timestampInSeconds"
  analytics.track(
    name: "iOS App Last Opened",
    properties: ["last opened": timestampInSeconds]
  )
  ```
</CodeGroup>

<Frame caption="Track 호출 속성 예시">
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/ce2b574-Screenshot_2024-05-08_at_11.49.34_AM.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=0a32647a69bae9078fa785b6df4a7d24" width="2360" height="632" data-path="images/docs/ce2b574-Screenshot_2024-05-08_at_11.49.34_AM.png" />
</Frame>

<Frame caption="사용자 특성 및 속성 인터페이스">
  <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/565e212-user-traits-or-properties.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=a18d3a422c087b32ce05d702b51b2e6b" width="1773" height="1209" data-path="images/docs/565e212-user-traits-or-properties.png" />
</Frame>

## Personas Audience 및 Computed Traits

[Persona Audiences](https://segment.com/docs/personas/)는 자동으로 [OneSignal의 세그먼트](./segmentation)로 표시됩니다.

Computed traits는 OneSignal 사용자 레코드의 [Tags](./add-user-data-tags)로 업데이트됩니다.

**Audience**

<Frame caption="Persona audience 및 computed traits 인터페이스">
  <img src="https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/c494a4b-persona-audience-or-computed-traits.png?fit=max&auto=format&n=9_Q1FZLh6C0BFLq-&q=85&s=2a858790b04fbcbc6676e894efd3254b" width="1773" height="1209" data-path="images/docs/c494a4b-persona-audience-or-computed-traits.png" />
</Frame>

Segment의 [Track 호출](https://segment.com/docs/connections/spec/track/)을 사용하여 전송된 Audiences는 *Audience Name*으로 OneSignal 세그먼트를 생성합니다.

Segment의 [Identify 호출](https://segment.com/docs/connections/spec/identify/)을 사용하여 전송된 Audiences는

* *Audience Name*으로 OneSignal 세그먼트 생성
* 일치하는 모든 사용자 레코드에 데이터 태그 추가 (Identify 호출에 추가 속성이 있는 경우)

<Frame caption="Segment에서 OneSignal에 생성된 세그먼트">
  <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/e5ad7f4-segments-in-onesignal.png?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=21e0f73a8bf21f50311b1c6e11535c51" width="1773" height="1209" data-path="images/docs/e5ad7f4-segments-in-onesignal.png" />
</Frame>

Identify 및 Track 호출은 사용자가 Audience에 들어가거나 나갈 때마다 OneSignal로 자동으로 전송됩니다.

**Computed Traits** Personas Computed Traits는 Identify 호출 또는 Track 호출로 OneSignal에 전달되는지 여부에 관계없이 OneSignal 사용자 레코드의 [Tags](./add-user-data-tags)로 저장됩니다. 그런 다음 이러한 데이터 태그를 사용하여 수동으로 OneSignal 세그먼트를 생성하고 메시징 워크플로를 자동화할 수 있습니다.

***

## 메시지 이벤트

## 이벤트 종류

OneSignal이 Segment로 보내는 메시지 이벤트 종류입니다

| MessageEvent Kind             | 이벤트 설명                        |
| ----------------------------- | ----------------------------- |
| Push Sent                     | 푸시 알림이 성공적으로 전송됨              |
| Push Received                 | 푸시 알림이 성공적으로 수신됨              |
| Push Clicked                  | 장치에서 푸시 알림을 터치함               |
| In-App Message Displayed      | In-App Message가 장치에 성공적으로 표시됨 |
| In-App Message Clicked        | 장치에서 In-App Message를 클릭함      |
| In-App Message Page Displayed | In-App Message 페이지가 표시됨       |
| Email Sent                    | Email이 성공적으로 전송됨              |
| Email Opened                  | 수신자가 Email을 열람함               |
| Email Unsubscribed            | 수신자가 Email 구독을 취소함            |
| Email Received                | 수신자가 Email을 수신함               |
| Email Reported As Spam        | 수신자가 Email을 스팸으로 신고함          |
| Email Bounced                 | 영구적인 오류로 인해 Email이 발신자에게 반송됨  |
| Email Failed                  | 수신자의 받은 편지함에 Email을 전달할 수 없음  |
| SMS Sent                      | 수신자에게 SMS를 보냄                 |
| SMS Delivered                 | SMS가 성공적으로 전달됨                |
| SMS Failed                    | SMS 전송 실패                     |

### 이벤트 속성

OneSignal에서 Segment.com으로 전송된 이벤트에 있는 속성입니다

| PROPERTY NAME       | 설명                                   |
| ------------------- | ------------------------------------ |
| `userId`            | 메시지와 연결된 `external_id`               |
| `anonymousId`       | `subscription_id`                    |
| `messageId`         | 개별 메시지의 식별자                          |
| `campaign_id`       | `messageId`와 동일한 값                   |
| `message_name`      | 메시지 이름                               |
| `message_title`     | 메시지 제목                               |
| `message_contents`  | 메시지 내용                               |
|                     |                                      |
| `subscription_type` | 메시지가 전송된 채널                          |
| `template_id`       | 사용된 메시지 템플릿                          |
| `subscription_id`.  | OneSignal에서 설정한 장치/Email/SMS 식별자     |
| `device_type`       | 메시지를 수신한 장치 유형                       |
| `language`          | 장치의 2자 언어 코드                         |
| `message_type`      | 전송된 메시지 유형, push, in-app, email, SMS |

## 자주 묻는 질문

### 구독 이벤트를 어떻게 전달할 수 있나요?

구독 이벤트는 현재 자동으로 전송되지 않습니다. OneSignal SDK Subscription Observer Methods로 수행할 수 있습니다. 자세한 내용은 [Subscription Tracking](./analytics-overview#subscription-tracking)을 참조하세요.

### OneSignal에서 Segment의 예약된 및 사용자 지정 사용자 속성 관리

* 모든 Segment의 사용자 특성은 데이터 태그로 OneSignal로 전송됩니다. OneSignal에서 허용되는 데이터 태그 수는 OneSignal 가격 플랜에 따라 다릅니다. 권한이 부여된 수를 초과하는 태그는 삭제됩니다.
* OneSignal은 일치하는 사용자에 대해 항상 firstName 및 lastName 속성을 업데이트합니다. 다른 모든 특성은 선착순으로 추가/업데이트됩니다. *firstName* 및 *lastName* 태그는 "first\_name" 및 "last\_name"으로 저장됩니다.
* 빈/null 값이 있는 OneSignal로 전송된 사용자 속성은 OneSignal 사용자 레코드에서 제거됩니다. 이는 데이터 태그 제한 내에 있는지 확인하기 위해 수행됩니다.

***
