

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menghubungkan ke Kustomer
<a name="connecting-to-data-kustomer"></a>

Kustomer adalah platform pengalaman pelanggan yang kuat yang menyatukan semua yang Anda butuhkan untuk melayani pelanggan Anda dengan lebih baik dalam satu easy-to-use alat.

**Topics**
+ [AWS Glue dukungan untuk Kustomer](kustomer-support.md)
+ [Kebijakan yang berisi operasi API untuk membuat dan menggunakan koneksi](kustomer-configuring-iam-permissions.md)
+ [Mengkonfigurasi Kustomer](kustomer-configuring.md)
+ [Mengkonfigurasi koneksi Kustomer](kustomer-configuring-connections.md)
+ [Membaca dari entitas Kustomer](kustomer-reading-from-entities.md)
+ [Opsi koneksi Kustomer](kustomer-connection-options.md)
+ [Keterbatasan Kustomer](kustomer-connection-limitations.md)

# AWS Glue dukungan untuk Kustomer
<a name="kustomer-support"></a>

AWS Glue mendukung Kustomer sebagai berikut:

**Didukung sebagai sumber?**  
Ya. Anda dapat menggunakan pekerjaan AWS Glue ETL untuk menanyakan data dari Kustomer.

**Didukung sebagai target?**  
Tidak.

**Versi Kustomer API yang didukung**  
Versi Kustomer API berikut didukung:
+ v1

# Kebijakan yang berisi operasi API untuk membuat dan menggunakan koneksi
<a name="kustomer-configuring-iam-permissions"></a>

Kebijakan contoh berikut menjelaskan izin AWS IAM yang diperlukan untuk membuat dan menggunakan koneksi. Jika Anda membuat peran baru, buat kebijakan yang berisi hal-hal berikut:

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

****  

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

------

Jika Anda tidak ingin menggunakan metode di atas, gunakan kebijakan IAM terkelola berikut ini:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Memberikan akses ke sumber daya yang diperlukan berbagai AWS Glue proses untuk dijalankan atas nama Anda. Sumber daya ini termasuk AWS Glue, Amazon S3, IAM, CloudWatch Log, dan Amazon. EC2 Jika Anda mengikuti konvensi penamaan untuk sumber daya yang ditentukan dalam kebijakan ini, AWS Glue proses memiliki izin yang diperlukan. Kebijakan ini biasanya dilampirkan pada peran yang ditentukan saat menentukan crawler, tugas, dan titik akhir pengembangan.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Memberikan akses penuh ke AWS Glue sumber daya saat identitas yang dilampirkan kebijakan menggunakan Konsol AWS Manajemen. Jika Anda mengikuti konvensi penamaan untuk sumber daya yang ditentukan dalam kebijakan ini, maka pengguna memiliki kemampuan konsol penuh. Kebijakan ini biasanya dilampirkan ke pengguna AWS Glue konsol.

# Mengkonfigurasi Kustomer
<a name="kustomer-configuring"></a>

Sebelum Anda dapat menggunakan AWS Glue untuk mentransfer data dari Kustomer ke tujuan yang didukung, Anda harus memenuhi persyaratan berikut:

## Persyaratan minimum
<a name="kustomer-configuring-min-requirements"></a>

Berikut ini adalah persyaratan minimum:
+ Anda memiliki akun dengan Kustomer yang berisi data yang ingin Anda transfer. 
+ Dalam pengaturan untuk akun Anda, Anda telah membuat kunci API. Untuk informasi selengkapnya, lihat [Membuat kunci API](#kustomer-configuring-creating-an-api-key).
+ Anda menyediakan kunci API AWS Glue saat membuat koneksi.

Jika Anda memenuhi persyaratan ini, Anda siap untuk terhubung AWS Glue ke akun Kustomer Anda.

## Membuat kunci API
<a name="kustomer-configuring-creating-an-api-key"></a>

Untuk membuat kunci API yang akan Anda gunakan untuk membuat koneksi untuk konektor Kustomer di AWS Glue Studio:

1. Masuk ke [dasbor Kustomer menggunakan kredensialmu](https://amazon-appflow.kustomerapp.com/login).

1. Pilih ikon **Pengaturan** dari menu kiri.

1. Perluas drop-down **Keamanan** dan pilih **API Keys**.

1. Di halaman pembuatan Kunci API pilih **Tambahkan Kunci API** dari sudut kanan atas.

1. Isi input wajib untuk kunci API yang sedang dibuat.
   + Nama: nama apa pun untuk Kunci API Anda.
   + Peran: 'org' harus dipilih agar Kustomer berfungsi APIs .
   + Kedaluwarsa (dalam hari): jumlah hari yang Anda inginkan agar kunci API valid. Anda dapat menyimpannya sebagai **Never kedaluwarsa**, jika sesuai dengan kasus penggunaan Anda.

1. Pilih **Buat**.

1. Simpan nilai kunci API (token) untuk penggunaan lebih lanjut guna membuat koneksi untuk konektor Kustomer di AWS Glue Studio.

# Mengkonfigurasi koneksi Kustomer
<a name="kustomer-configuring-connections"></a>

Untuk mengkonfigurasi koneksi Kustomer:

1. Di AWS Secrets Manager, buat rahasia dengan detail berikut:

   1. Untuk aplikasi terkoneksi yang dikelola pelanggan, Rahasia harus berisi aplikasi yang terhubung Rahasia Konsumen `apiKey` sebagai kuncinya.

   1. Catatan: Anda harus membuat rahasia untuk koneksi Anda di AWS Glue.

1. Di AWS Glue Glue Studio, buat koneksi di bawah **Koneksi Data** dengan mengikuti langkah-langkah di bawah ini:

   1. Di bawah **Koneksi**, pilih **Buat koneksi**.

   1. Saat memilih **Sumber Data**, pilih Kustomer.

   1. Pilih peran AWS IAM yang AWS Glue dapat mengasumsikan dan memiliki izin untuk tindakan berikut:

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

****  

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

------

   1. Pilih `secretName` yang ingin Anda gunakan untuk koneksi ini AWS Glue untuk memasukkan token.

   1. Pilih opsi jaringan jika Anda ingin menggunakan jaringan Anda.

1. Berikan peran IAM yang terkait dengan izin AWS Glue pekerjaan Anda untuk membaca`secretName`.

# Membaca dari entitas Kustomer
<a name="kustomer-reading-from-entities"></a>

**Prasyarat**

Objek Kustomer yang ingin Anda baca. Anda akan memerlukan nama objek seperti Merek atau Kartu. Tabel berikut menunjukkan entitas yang didukung.

**Entitas yang didukung untuk sumber**:


| Entitas | Dapat disaring | Mendukung batas | Mendukung Pesanan oleh | Mendukung Pilih \$1 | Mendukung partisi | 
| --- | --- | --- | --- | --- | --- | 
| Merek | Tidak | Ya | Tidak | Ya | Tidak | 
| Kartu | Tidak | Ya | Tidak | Ya | Tidak | 
| Pengaturan Obrolan | Tidak | Tidak | Tidak | Ya | Tidak | 
| Perusahaan | Ya | Ya | Ya | Ya | Ya | 
| Percakapan | Ya | Ya | Ya | Ya | Ya | 
| Pelanggan | Ya | Ya | Ya | Ya | Ya | 
| Pencarian Pelanggan Disematkan | Tidak | Ya | Tidak | Ya | Tidak | 
| Posisi Pencarian Pelanggan | Tidak | Tidak | Tidak | Ya | Tidak | 
| Kait Email | Tidak | Ya | Tidak | Ya | Tidak | 
| Kait Web | Tidak | Ya | Tidak | Ya | Tidak | 
| Artikel KB | Tidak | Ya | Tidak | Ya | Tidak | 
| Kategori KB | Tidak | Ya | Tidak | Ya | Tidak | 
| Formulir KB | Tidak | Ya | Tidak | Ya | Tidak | 
| Rute KB | Tidak | Ya | Tidak | Ya | Tidak | 
| Tag KB | Tidak | Ya | Tidak | Ya | Tidak | 
| KB Template | Tidak | Ya | Tidak | Ya | Tidak | 
| Tema KB | Tidak | Ya | Tidak | Ya | Tidak | 
| Klase | Tidak | Ya | Tidak | Ya | Tidak | 
| KViews | Tidak | Ya | Tidak | Ya | Tidak | 
| Pesan | Ya | Ya | Ya | Ya | Ya | 
| Catatan | Ya | Ya | Ya | Ya | Ya | 
| Notifikasi | Tidak | Ya | Tidak | Ya | Tidak | 

**Contoh:**

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "brands",
        "API_VERSION": "v1"
    }
```

## Entitas kustomer dan detail bidang
<a name="kustomer-reading-from-entities-field-details"></a>

Untuk informasi selengkapnya tentang entitas dan detail bidang, lihat:
+ [Merek](https://api.kustomerapp.com/v1/brands)
+ [Kartu](https://api.kustomerapp.com/v1/cards)
+ [Pengaturan Obrolan](https://api.kustomerapp.com/v1/chat/settings)
+ [Perusahaan](https://api.kustomerapp.com/v1/companies)
+ [Percakapan](https://api.kustomerapp.com/v1/conversations)
+ [Pelanggan](https://api.kustomerapp.com/v1/customers)
+ [Penelusuran Pelanggan Disematkan](https://api.kustomerapp.com/v1/customers/searches/pinned)
+ [Posisi Pencarian Pelanggan](https://api.kustomerapp.com/v1/customers/searches/positions)
+ [Email Hooks](https://api.kustomerapp.com/v1/hooks/email)
+ [Kait Web](https://api.kustomerapp.com/v1/hooks/web)
+ [Artikel KB](https://api.kustomerapp.com/v1/kb/articles)
+ [Kategori KB](https://api.kustomerapp.com/v1/kb/categories)
+ [Formulir KB]( https://api.kustomerapp.com/v1/kb/forms)
+ [Rute KB](https://api.kustomerapp.com/v1/kb/routes)
+ [Tag KB](https://api.kustomerapp.com/v1/kb/tags)
+ [KB Template](https://api.kustomerapp.com/v1/kb/templates)
+ [Tema KB](https://api.kustomerapp.com/v1/kb/themes)
+ [Klase](https://api.kustomerapp.com/v1/klasses)
+ [Kviews](https://api.kustomerapp.com/v1/kviews)
+ [Pesan](https://api.kustomerapp.com/v1/messages)
+ [Catatan](https://api.kustomerapp.com/v1/notes)
+ [Pemberitahuan](https://api.kustomerapp.com/v1/notifications)

Kustomer API v1

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/kustomer-reading-from-entities.html)

## Mempartisi kueri
<a name="kustomer-reading-from-partitioning"></a>

**Partisi berbasis lapangan**

Anda dapat memberikan opsi Spark tambahan`PARTITION_FIELD`,, `LOWER_BOUND``UPPER_BOUND`, dan `NUM_PARTITIONS` jika Anda ingin memanfaatkan konkurensi di Spark. Dengan parameter ini, kueri asli akan dibagi menjadi `NUM_PARTITIONS` sejumlah sub-kueri yang dapat dijalankan oleh tugas Spark secara bersamaan.
+ `PARTITION_FIELD`: nama bidang yang akan digunakan untuk mempartisi kueri.
+ `LOWER_BOUND`: nilai batas bawah **inklusif** dari bidang partisi yang dipilih.

  Untuk DateTime bidang, kami menerima nilai dalam format ISO.

  Contoh nilai valid:

  ```
  "2023-01-15T11:18:39.205Z"
  ```
+ `UPPER_BOUND`: nilai batas atas **eksklusif** dari bidang partisi yang dipilih.
+ `NUM_PARTITIONS`: jumlah partisi.

Detail dukungan bidang partisi berdasarkan entitas ditangkap dalam tabel berikut:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/kustomer-reading-from-entities.html)

Contoh:

```
Kustomer_read = glueContext.create_dynamic_frame.from_options(
    connection_type="kustomer",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "conversation",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "createdAt"
        "LOWER_BOUND": "2023-01-15T11:18:39.205Z"
        "UPPER_BOUND": "2023-02-15T11:18:39.205Z"
        "NUM_PARTITIONS": "2"
    }
```

# Opsi koneksi Kustomer
<a name="kustomer-connection-options"></a>

Berikut ini adalah opsi koneksi untuk Kustomer:
+ `ENTITY_NAME`(String) - (Diperlukan) Digunakan untuk Baca. Nama objek Anda di Kustomer.
+ `API_VERSION`(String) - (Diperlukan) Digunakan untuk Baca. Versi Kustomer Rest API yang ingin Anda gunakan.
+ `SELECTED_FIELDS`(Daftar<String>) - Default: kosong (SELECT \$1). Digunakan untuk Baca. Kolom yang ingin Anda pilih untuk objek.
+ `FILTER_PREDICATE`(String) - Default: kosong. Digunakan untuk Baca. Itu harus dalam format Spark SQL.
+ `QUERY`(String) - Default: kosong. Digunakan untuk Baca. Kueri SQL Spark penuh.
+ `PARTITION_FIELD`(String) - Digunakan untuk membaca. Bidang yang akan digunakan untuk mempartisi kueri.
+ `LOWER_BOUND`(String) - Digunakan untuk membaca. Nilai batas bawah inklusif dari bidang partisi yang dipilih.
+ `UPPER_BOUND`(String) - Digunakan untuk membaca. Nilai batas atas eksklusif dari bidang partisi yang dipilih. 
+ `NUM_PARTITIONS`(Integer) - Default: 1. Digunakan untuk membaca. Jumlah partisi untuk dibaca.
+ `INSTANCE_URL`(String) - (Diperlukan) Digunakan untuk Baca. URL contoh Kustomer.

# Keterbatasan Kustomer
<a name="kustomer-connection-limitations"></a>

Berikut ini adalah batasan atau catatan untuk Kustomer:
+ `Customer Searches`Entitas tidak didukung karena dokumentasi Kustomer API belum mendeklarasikan titik akhir apa pun untuknya.
+ Dukungan filtrasi dan transfer inkremental pada `Klasses` entitas tidak didukung.
+ Pesanan oleh dapat didukung pada beberapa bidang yang berlaku dalam satu permintaan.

  Namun, urutan berdasarkan fungsionalitas pada beberapa bidang telah diamati berperilaku tidak konsisten dari ujung SaaS untuk beberapa kombinasi. Ini tidak dapat diprediksi karena mungkin ada kombinasi 'n' yang mungkin menunjukkan hasil penyortiran yang salah. Contoh:

  Untuk `Customers` entitas, order by `progressiveStatus desc, name asc` tidak menghasilkan hasil yang diurutkan dengan benar. Ini mengurutkan hanya berdasarkan `progressiveStatus` pesanan. Jika perilaku seperti itu diamati, Anda dapat menggunakan satu bidang untuk diurutkan.
+ Urutan berdasarkan pada bidang 'id' hanya didukung oleh `Messages` entitas `Conversations` dan sebagai parameter kueri. Misalnya: https://api.kustomerapp.com/v1/ percakapan? sort=desc (Ini mengurutkan hasil berdasarkan 'id' dalam urutan menurun.)

  Selain itu, filter atau pemesanan lain di bidang lain diterjemahkan ke dalam badan permintaan POST yang memiliki titik akhir API sebagai https://api.kustomerapp.com/v1/ pelanggan/pencarian POST Untuk mengizinkan dukungan pemesanan berdasarkan 'id' di `Conversations` dan`Messages`, hanya pesanan berdasarkan id yang harus ada atau and/or urutan filter lainnya di bidang lain yang berlaku.
+ Kustomer memungkinkan maksimum 10K record untuk diambil terlepas dari permintaan yang disaring atau tidak difilter. Karena batasan ini, akan ada kehilangan data untuk setiap entitas yang memegang lebih dari 10K catatan. Ada dua kemungkinan solusi yang dapat Anda lakukan untuk mengurangi sebagian ini:
  + Terapkan filter untuk mengambil kumpulan catatan tertentu.
  + Jika ada lebih dari 10K catatan dengan filter yang diterapkan, terapkan nilai filter berturut-turut dalam permintaan berikutnya yang baru atau terapkan rentang dalam filter. Contoh: 

    FilterExpression permintaan pertama: `modifiedAt >= 2022-03-15T05:26:23.000Z and modifiedAt < 2023-03-15T05:26:23.000Z`

    Asumsikan ini menghabiskan batas rekor 10K.

    Permintaan lain dapat dipicu dengan filterExpression: `modifiedAt >= 2023-03-15T05:26:23.000Z`
+ Sebagai perilaku SaaS, `CONTAINS` operator di Kustomer mendukung pencocokan hanya pada kata-kata lengkap dan bukan kecocokan sebagian dalam satu kata. Misalnya: “body CONTAINS 'test record'” akan cocok dengan record yang memiliki 'test' di bidang 'tubuh'. Namun, “body CONTAINS 'test'” tidak akan cocok dengan catatan yang memiliki testAnotherRecord '' di bidang 'tubuh'.