

Pemberitahuan akhir dukungan: Pada 15 September 2025, AWS akan menghentikan dukungan untuk Amazon Lex V1. Setelah 15 September 2025, Anda tidak lagi dapat mengakses konsol Amazon Lex V1 atau sumber daya Amazon Lex V1. Jika Anda menggunakan Amazon Lex V2, lihat [panduan Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) sebagai gantinya. 

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

# Rincian Arus Informasi
<a name="ex1-sch-appt-info-flow-details"></a>

Cetak biru `ScheduleAppointment` bot terutama menampilkan penggunaan kartu respons yang dihasilkan secara dinamis. Fungsi Lambda dalam latihan ini mencakup kartu respons dalam responsnya terhadap Amazon Lex. Amazon Lex menyertakan kartu respons dalam balasannya kepada klien. Bagian ini menjelaskan kedua hal berikut:
+ Aliran data antara klien dan Amazon Lex.

   

  Bagian ini mengasumsikan klien mengirim permintaan ke Amazon Lex menggunakan API `PostText` runtime dan menampilkan request/response detail yang sesuai. Untuk informasi selengkapnya tentang API `PostText` runtime, lihat[PostText](API_runtime_PostText.md).
**catatan**  
Untuk contoh aliran informasi antara klien dan Amazon Lex di mana klien menggunakan `PostContent` API, lihat[Langkah 2a (Opsional): Tinjau Detail Alur Informasi Lisan (Konsol)](gs-bp-details-postcontent-flow.md).

   
+ Aliran data antara Amazon Lex dan fungsi Lambda. Untuk informasi selengkapnya, lihat [Peristiwa Input Fungsi Lambda dan Format Respons](lambda-input-response-format.md).

**catatan**  
Contohnya mengasumsikan bahwa Anda menggunakan klien Facebook Messenger, yang tidak meneruskan atribut sesi dalam permintaan ke Amazon Lex. Dengan demikian, contoh permintaan yang ditampilkan di bagian ini menunjukkan kosong`sessionAttributes`. Jika Anda menguji bot menggunakan klien yang disediakan di konsol Amazon Lex, klien menyertakan atribut sesi.

Bagian ini menjelaskan apa yang terjadi setelah setiap input pengguna.

1. Pengguna: Jenis**Book an appointment**.

   1. Klien (konsol) mengirimkan [PostContent](API_runtime_PostContent.md) permintaan berikut ke Amazon Lex:

      ```
      POST /bot/ScheduleAppointment/alias/$LATEST/user/bijt6rovckwecnzesbthrr1d7lv3ja3n/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
         "inputText":"book appointment",
         "sessionAttributes":{}
      }
      ```

      URI permintaan dan badan memberikan informasi ke Amazon Lex:
      + Request URI — Menyediakan nama bot (ScheduleAppointment), alias bot (\$1 LATEST), dan ID nama pengguna. Trailing `text` menunjukkan bahwa ini adalah permintaan API `PostText` (bukan`PostContent`).
      + Request body - Termasuk input pengguna (`inputText`) dan kosong`sessionAttributes`. 

   1. Dari`inputText`, Amazon Lex mendeteksi intent ()`MakeAppointment`. Layanan memanggil fungsi Lambda, yang dikonfigurasi sebagai hook kode, untuk melakukan inisialisasi dan validasi dengan meneruskan peristiwa berikut. Lihat perinciannya di [Format Peristiwa Masukan](lambda-input-response-format.md#using-lambda-input-event-format).

      ```
      {
          "currentIntent": {
              "slots": {
                  "AppointmentType": null,
                  "Date": null,
                  "Time": null
              },
              "name": "MakeAppointment",
              "confirmationStatus": "None"
          },
          "bot": {
              "alias": null,
              "version": "$LATEST",
              "name": "ScheduleAppointment"
          },
          "userId": "bijt6rovckwecnzesbthrr1d7lv3ja3n",
          "invocationSource": "DialogCodeHook",
          "outputDialogMode": "Text",
          "messageVersion": "1.0",
          "sessionAttributes": {}
      }
      ```

      Selain informasi yang dikirim oleh klien, Amazon Lex juga menyertakan data berikut:
      + `currentIntent`— Memberikan informasi maksud saat ini.
      + `invocationSource`— Menunjukkan tujuan pemanggilan fungsi Lambda. Dalam hal ini, tujuannya adalah untuk melakukan inisialisasi dan validasi data pengguna. (Amazon Lex tahu bahwa pengguna belum menyediakan semua data slot untuk memenuhi maksud.)
      + `messageVersion`- Saat ini Amazon Lex hanya mendukung versi 1.0. 

   1. Pada saat ini, semua nilai slot adalah nol (tidak ada yang divalidasi). Fungsi Lambda mengembalikan respons berikut ke Amazon Lex, mengarahkan layanan untuk memperoleh informasi untuk slot. `AppointmentType` Untuk informasi tentang format respons, lihat[Format Respons](lambda-input-response-format.md#using-lambda-response-format). 

      ```
      {
          "dialogAction": {
              "slotToElicit": "AppointmentType",
              "intentName": "MakeAppointment",
              "responseCard": {
                  "genericAttachments": [
                      {
                          "buttons": [
                              {
                                  "text": "cleaning (30 min)",
                                  "value": "cleaning"
                              },
                              {
                                  "text": "root canal (60 min)",
                                  "value": "root canal"
                              },
                              {
                                  "text": "whitening (30 min)",
                                  "value": "whitening"
                              }
                          ],
                          "subTitle": "What type of appointment would you like to schedule?",
                          "title": "Specify Appointment Type"
                      }
                  ],
                  "version": 1,
                  "contentType": "application/vnd.amazonaws.card.generic"
              },
              "slots": {
                  "AppointmentType": null,
                  "Date": null,
                  "Time": null
              },
              "type": "ElicitSlot",
              "message": {
                  "content": "What type of appointment would you like to schedule?",
                  "contentType": "PlainText"
              }
          },
          "sessionAttributes": {}
      }
      ```

      Tanggapan meliputi `dialogAction` dan `sessionAttributes` bidang. Antara lain, `dialogAction` bidang mengembalikan bidang berikut: 
      + `type`— Dengan menyetel bidang ini`ElicitSlot`, fungsi Lambda mengarahkan Amazon Lex untuk memperoleh nilai untuk slot yang ditentukan di bidang. `slotToElicit` Fungsi Lambda juga menyediakan a `message` untuk menyampaikan kepada pengguna.
      + `responseCard`— Mengidentifikasi daftar nilai yang mungkin untuk `AppointmentType` slot. Klien yang mendukung kartu respons (misalnya, Facebook Messenger) menampilkan kartu respons untuk memungkinkan pengguna memilih jenis janji temu, seperti pada gambar berikut:  
![\[Kartu respon menanyakan jenis janji temu untuk menjadwalkan dan tiga pilihan: pembersihan (30 menit), saluran akar (60 menit), dan pemutihan (30 menit).\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/respcard-10.png)

   1. Seperti yang `dialogAction.type` ditunjukkan oleh respons dari fungsi Lambda, Amazon Lex mengirimkan respons berikut kembali ke klien:   
![\[Tanggapan JSON yang berisi informasi tentang maksud untuk membuat janji temu dan slot jenis janji temu yang akan diperoleh.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/appt-10.png)

      Klien membaca respons, dan kemudian menampilkan pesan: “Jenis janji apa yang ingin Anda jadwalkan?” dan kartu respons (jika klien mendukung kartu respons).

1. Pengguna: Tergantung pada klien, pengguna memiliki dua opsi:
   + Jika kartu respons ditampilkan, pilih **saluran akar (60 menit)** atau ketik**root canal**.
   + Jika klien tidak mendukung kartu respons, ketik**root canal**.

   1. Klien mengirimkan `PostText` permintaan berikut ke Amazon Lex (jeda baris telah ditambahkan untuk keterbacaan):

      ```
      POST /bot/BookTrip/alias/$LATEST/user/bijt6rovckwecnzesbthrr1d7lv3ja3n/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
         "inputText": "root canal",
          "sessionAttributes": {}
      }
      ```

   1. Amazon Lex memanggil fungsi Lambda untuk validasi data pengguna dengan mengirimkan peristiwa berikut sebagai parameter:

      ```
      {
          "currentIntent": {
              "slots": {
                  "AppointmentType": "root canal",
                  "Date": null,
                  "Time": null
              },
              "name": "MakeAppointment",
              "confirmationStatus": "None"
          },
          "bot": {
              "alias": null,
              "version": "$LATEST",
              "name": "ScheduleAppointment"
          },
          "userId": "bijt6rovckwecnzesbthrr1d7lv3ja3n",
          "invocationSource": "DialogCodeHook",
          "outputDialogMode": "Text",
          "messageVersion": "1.0",
          "sessionAttributes": {}
      }
      ```

      Dalam data acara, perhatikan hal berikut:
      + `invocationSource`terus menjadi`DialogCodeHook`. Pada langkah ini, kami hanya memvalidasi data pengguna.
      + Amazon Lex mengatur `AppointmentType` bidang di `currentIntent.slots` slot ke`root canal`.
      + Amazon Lex hanya melewati `sessionAttributes` bidang antara klien dan fungsi Lambda.

   1. Fungsi Lambda memvalidasi input pengguna dan mengembalikan respons berikut ke Amazon Lex, mengarahkan layanan untuk memperoleh nilai untuk tanggal janji temu.

      ```
      {
          "dialogAction": {
              "slotToElicit": "Date",
              "intentName": "MakeAppointment",
              "responseCard": {
                  "genericAttachments": [
                      {
                          "buttons": [
                              {
                                  "text": "2-15 (Wed)",
                                  "value": "Wednesday, February 15, 2017"
                              },
                              {
                                  "text": "2-16 (Thu)",
                                  "value": "Thursday, February 16, 2017"
                              },
                              {
                                  "text": "2-17 (Fri)",
                                  "value": "Friday, February 17, 2017"
                              },
                              {
                                  "text": "2-20 (Mon)",
                                  "value": "Monday, February 20, 2017"
                              },
                              {
                                  "text": "2-21 (Tue)",
                                  "value": "Tuesday, February 21, 2017"
                              }
                          ],
                          "subTitle": "When would you like to schedule your root canal?",
                          "title": "Specify Date"
                      }
                  ],
                  "version": 1,
                  "contentType": "application/vnd.amazonaws.card.generic"
              },
              "slots": {
                  "AppointmentType": "root canal",
                  "Date": null,
                  "Time": null
              },
              "type": "ElicitSlot",
              "message": {
                  "content": "When would you like to schedule your root canal?",
                  "contentType": "PlainText"
              }
          },
          "sessionAttributes": {}
      }
      ```

      Sekali lagi, responsnya mencakup `sessionAttributes` bidang `dialogAction` dan. Antara lain, `dialogAction` bidang mengembalikan bidang berikut: 
      + `type`— Dengan menyetel bidang ini`ElicitSlot`, fungsi Lambda mengarahkan Amazon Lex untuk memperoleh nilai untuk slot yang ditentukan di bidang. `slotToElicit` Fungsi Lambda juga menyediakan a `message` untuk menyampaikan kepada pengguna.
      + `responseCard`— Mengidentifikasi daftar nilai yang mungkin untuk `Date` slot. Klien yang mendukung kartu respons (misalnya, Facebook Messenger) menampilkan kartu respons yang memungkinkan pengguna memilih tanggal janji temu, seperti pada gambar berikut:  
![\[Kartu respons memunculkan tanggal untuk menjadwalkan saluran akar dan tiga opsi: 2-15, 2-16, dan 2-17.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/respcard-20.png)

        Meskipun fungsi Lambda mengembalikan lima tanggal, klien (Facebook Messenger) memiliki batas tiga tombol untuk kartu respons. Oleh karena itu, Anda hanya melihat tiga nilai pertama dalam tangkapan layar.

        Tanggal-tanggal ini dikodekan keras dalam fungsi Lambda. Dalam aplikasi produksi, Anda dapat menggunakan kalender untuk mendapatkan tanggal yang tersedia secara real time. Karena tanggalnya dinamis, Anda harus menghasilkan kartu respons secara dinamis dalam fungsi Lambda.

   1. Amazon Lex memperhatikan `dialogAction.type` dan mengembalikan respons berikut ke klien yang menyertakan informasi dari respons fungsi Lambda.  
![\[Respons JSON yang berisi maksud untuk membuat janji temu, jenis janji temu yang diisi, dan pesan yang memunculkan tanggal janji temu.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/appt-20.png)

      Klien menampilkan pesan: **Kapan Anda ingin menjadwalkan saluran akar Anda?** dan kartu respons (jika klien mendukung kartu respons).

1. Pengguna: Jenis**Thursday**.

   1. Klien mengirimkan `PostText` permintaan berikut ke Amazon Lex (jeda baris telah ditambahkan untuk keterbacaan):

      ```
      POST /bot/BookTrip/alias/$LATEST/user/bijt6rovckwecnzesbthrr1d7lv3ja3n/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
         "inputText": "Thursday",
          "sessionAttributes": {}
      }
      ```

   1. Amazon Lex memanggil fungsi Lambda untuk validasi data pengguna dengan mengirimkan dalam peristiwa berikut sebagai parameter:

      ```
      {
          "currentIntent": {
              "slots": {
                  "AppointmentType": "root canal",
                  "Date": "2017-02-16",
                  "Time": null
              },
              "name": "MakeAppointment",
              "confirmationStatus": "None"
          },
          "bot": {
              "alias": null,
              "version": "$LATEST",
              "name": "ScheduleAppointment"
          },
          "userId": "u3fpr9gghj02zts7y5tpq5mm4din2xqy",
          "invocationSource": "DialogCodeHook",
          "outputDialogMode": "Text",
          "messageVersion": "1.0",
          "sessionAttributes": {}
      }
      ```

      Dalam data acara, perhatikan hal berikut:
      + `invocationSource`terus menjadi`DialogCodeHook`. Pada langkah ini, kami hanya memvalidasi data pengguna.
      + Amazon Lex mengatur `Date` bidang di `currentIntent.slots` slot ke`2017-02-16`.
      + Amazon Lex hanya melewati `sessionAttributes` antara klien dan fungsi Lambda.

   1. Fungsi Lambda memvalidasi input pengguna. Kali ini fungsi Lambda menentukan bahwa tidak ada janji yang tersedia pada tanggal yang ditentukan. Ini mengembalikan respons berikut ke Amazon Lex, mengarahkan layanan untuk kembali memperoleh nilai untuk tanggal janji temu.

      ```
      {
          "dialogAction": {
              "slotToElicit": "Date",
              "intentName": "MakeAppointment",
              "responseCard": {
                  "genericAttachments": [
                      {
                          "buttons": [
                              {
                                  "text": "2-15 (Wed)",
                                  "value": "Wednesday, February 15, 2017"
                              },
                              {
                                  "text": "2-17 (Fri)",
                                  "value": "Friday, February 17, 2017"
                              },
                              {
                                  "text": "2-20 (Mon)",
                                  "value": "Monday, February 20, 2017"
                              },
                              {
                                  "text": "2-21 (Tue)",
                                  "value": "Tuesday, February 21, 2017"
                              }
                          ],
                          "subTitle": "When would you like to schedule your root canal?",
                          "title": "Specify Date"
                      }
                  ],
                  "version": 1,
                  "contentType": "application/vnd.amazonaws.card.generic"
              },
              "slots": {
                  "AppointmentType": "root canal",
                  "Date": null,
                  "Time": null
              },
              "type": "ElicitSlot",
              "message": {
                  "content": "We do not have any availability on that date, is there another day which works for you?",
                  "contentType": "PlainText"
              }
          },
          "sessionAttributes": {
           "bookingMap": "{\"2017-02-16\": []}"
         }
      }
      ```

      Sekali lagi, responsnya mencakup `sessionAttributes` bidang `dialogAction` dan. Antara lain, `dialogAction` mengembalikan bidang berikut: 
      + `dialogAction`bidang:
        + `type`— Fungsi Lambda menetapkan nilai ini `ElicitSlot` dan mengatur ulang bidang ke. `slotToElicit` `Date` Fungsi Lambda juga menyediakan yang sesuai `message` untuk disampaikan kepada pengguna.
        + `responseCard`— Mengembalikan daftar nilai untuk `Date` slot.
      + `sessionAttributes`- Kali ini fungsi Lambda menyertakan atribut `bookingMap` sesi. Nilainya adalah tanggal janji temu yang diminta dan janji temu yang tersedia (objek kosong menunjukkan bahwa tidak ada janji temu yang tersedia).

   1. Amazon Lex memperhatikan `dialogAction.type` dan mengembalikan respons berikut ke klien yang menyertakan informasi dari respons fungsi Lambda.  
![\[Tanggapan JSON menunjukkan niat untuk membuat janji dan pesan yang mengklarifikasi bahwa tidak ada ketersediaan pada tanggal yang diminta oleh pelanggan.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/appt-30.png)

      Klien menampilkan pesan: **Kami tidak memiliki ketersediaan pada tanggal itu, apakah ada hari lain yang berfungsi untuk Anda?** dan kartu respons (jika klien mendukung kartu respons).

1. Pengguna: Tergantung pada klien, pengguna memiliki dua opsi:
   + Jika kartu respons ditampilkan, pilih **2-15 (Rabu)** atau ketik**Wednesday**.
   + Jika klien tidak mendukung kartu respons, ketik**Wednesday**.

   1. Klien mengirimkan `PostText` permintaan berikut ke Amazon Lex:

      ```
      POST /bot/BookTrip/alias/$LATEST/user/bijt6rovckwecnzesbthrr1d7lv3ja3n/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
         "inputText": "Wednesday",
          "sessionAttributes": {
         }
      }
      ```

      
**catatan**  
Klien Facebook Messenger tidak menetapkan atribut sesi apa pun. Jika Anda ingin mempertahankan status sesi di antara permintaan, Anda harus melakukannya dalam fungsi Lambda. Dalam aplikasi nyata, Anda mungkin perlu mempertahankan atribut sesi ini dalam database backend.

   1. Amazon Lex memanggil fungsi Lambda untuk validasi data pengguna dengan mengirimkan peristiwa berikut sebagai parameter:

      ```
      {
          "currentIntent": {
              "slots": {
                  "AppointmentType": "root canal",
                  "Date": "2017-02-15",
                  "Time": null
              },
              "name": "MakeAppointment",
              "confirmationStatus": "None"
          },
          "bot": {
              "alias": null,
              "version": "$LATEST",
              "name": "ScheduleAppointment"
          },
          "userId": "u3fpr9gghj02zts7y5tpq5mm4din2xqy",
          "invocationSource": "DialogCodeHook",
          "outputDialogMode": "Text",
          "messageVersion": "1.0",
          "sessionAttributes": {
          }
      }
      ```

      Amazon Lex diperbarui `currentIntent.slots` dengan mengatur `Date` slot ke`2017-02-15`. 

   1. Fungsi Lambda memvalidasi input pengguna dan mengembalikan respons berikut ke Amazon Lex, mengarahkannya untuk memperoleh nilai untuk waktu janji temu. 

      ```
      {
          "dialogAction": {
              "slots": {
                  "AppointmentType": "root canal",
                  "Date": "2017-02-15",
                  "Time": "16:00"
              },
              "message": {
                  "content": "What time on 2017-02-15 works for you? 4:00 p.m. is our only availability, does that work for you?",
                  "contentType": "PlainText"
              },
              "type": "ConfirmIntent",
              "intentName": "MakeAppointment",
              "responseCard": {
                  "genericAttachments": [
                      {
                          "buttons": [
                              {
                                  "text": "yes",
                                  "value": "yes"
                              },
                              {
                                  "text": "no",
                                  "value": "no"
                              }
                          ],
                          "subTitle": "Is 4:00 p.m. on 2017-02-15 okay?",
                          "title": "Confirm Appointment"
                      }
                  ],
                  "version": 1,
                  "contentType": "application/vnd.amazonaws.card.generic"
              }
          },
          "sessionAttributes": {
              "bookingMap": "{\"2017-02-15\": [\"10:00\", \"16:00\", \"16:30\"]}"
          }
      }
      ```

      Sekali lagi, responsnya mencakup `sessionAttributes` bidang `dialogAction` dan. Antara lain, `dialogAction` mengembalikan bidang berikut: 
      + `dialogAction`bidang:
        + `type`— `Lambda` Fungsi menetapkan nilai ini`ConfirmIntent`, mengarahkan Amazon Lex untuk mendapatkan konfirmasi pengguna tentang waktu janji yang disarankan di`message`.
        + `responseCard`— Mengembalikan daftar yes/no nilai bagi pengguna untuk memilih dari. Jika klien mendukung kartu respon, itu akan menampilkan kartu respon, seperti yang ditunjukkan pada contoh berikut:  
![\[Kartu respons menunjukkan konfirmasi janji temu dan dua opsi: ya dan tidak.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/respcard-30.png)
      + `sessionAttributes`- Fungsi Lambda menetapkan atribut `bookingMap` sesi dengan nilainya diatur ke tanggal janji temu dan janji yang tersedia pada tanggal tersebut. Dalam contoh ini, ini adalah janji temu 30 menit. Untuk saluran akar yang membutuhkan satu jam, hanya jam 4 sore yang dapat dipesan.

        

   1. Seperti yang ditunjukkan `dialogAction.type` dalam respons fungsi Lambda, Amazon Lex mengembalikan respons berikut ke klien:   
![\[Tanggapan JSON menunjukkan niat untuk membuat janji dan semua slot diisi.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/appt-40.png)

      Klien menampilkan pesan: Jam **berapa pada 2017-02-15 bekerja untuk Anda? 16:00 adalah satu-satunya ketersediaan kami, apakah itu bekerja untuk** Anda?

   

1. Pengguna: Pilih**yes**. 

   Amazon Lex memanggil fungsi Lambda dengan data peristiwa berikut. Karena pengguna menjawab**yes**, Amazon Lex menyetel `confirmationStatus` ke`Confirmed`, dan menyetel `Time` bidang `currentIntent.slots ` ke`4 p.m`.

   ```
   {
       "currentIntent": {
           "slots": {
               "AppointmentType": "root canal",
               "Date": "2017-02-15",
               "Time": "16:00"
           },
           "name": "MakeAppointment",
           "confirmationStatus": "Confirmed"
       },
       "bot": {
           "alias": null,
           "version": "$LATEST",
           "name": "ScheduleAppointment"
       },
       "userId": "u3fpr9gghj02zts7y5tpq5mm4din2xqy",
       "invocationSource": "FulfillmentCodeHook",
       "outputDialogMode": "Text",
       "messageVersion": "1.0",
       "sessionAttributes": {
      }
   }
   ```

   Karena `confirmationStatus` sudah dikonfirmasi, fungsi Lambda memproses intent (membuat janji temu gigi) dan mengembalikan respons berikut ke Amazon Lex: 

   ```
   {
       "dialogAction": {
           "message": {
               "content": "Okay, I have booked your appointment.  We will see you at 4:00 p.m. on 2017-02-15",
               "contentType": "PlainText"
           },
           "type": "Close",
           "fulfillmentState": "Fulfilled"
       },
       "sessionAttributes": {
           "formattedTime": "4:00 p.m.",
           "bookingMap": "{\"2017-02-15\": [\"10:00\"]}"
       }
   }
   ```

   Perhatikan hal-hal berikut:
   + Fungsi Lambda telah memperbarui file. `sessionAttributes`
   + `dialogAction.type`diatur ke`Close`, yang mengarahkan Amazon Lex untuk tidak mengharapkan respons pengguna. 
   + `dialogAction.fulfillmentState`diatur ke`Fulfilled`, menunjukkan bahwa maksud berhasil terpenuhi.

   Klien menampilkan pesan: **Oke, saya telah memesan janji temu Anda. Kami akan menemui Anda pada pukul 16:00 pada** 2017-02-15.





