Messenger Dialogflow CX Lama

Integrasi Messenger Dialogflow CX lama menyediakan dialog chat yang dapat disesuaikan untuk agen Anda yang dapat disematkan di situs Anda. Dialog chat diterapkan sebagai jendela dialog yang dapat dibuka dan ditutup oleh pengguna akhir Anda. Saat dibuka, dialog chat akan muncul di atas konten Anda di sisi kanan bawah layar.

Bermigrasi ke Messenger Dialogflow CX terbaru

Messenger Dialogflow CX versi terbaru menyediakan autentikasi untuk mengontrol akses kueri agen dan opsi konfigurasi antarmuka pengguna lainnya. Sebaiknya semua pengguna versi lama bermigrasi ke versi baru.

Jika Anda mengaktifkan integrasi Messenger Dialogflow CX sebelum 29 Agustus 2023, Anda mungkin menggunakan versi lama. Untuk menentukan apakah Anda menggunakan versi lama, periksa kode HTML messenger yang disematkan di situs Anda. Jika melihat skrip berikut, Anda menggunakan versi lama:

https://www.gstatic.com/dialogflow-console/fast/messenger-cx/bootstrap.js?v=1

Untuk melakukan migrasi ke versi baru:

  1. Hapus semua kode messenger HTML, CSS, dan JavaScript dari situs Anda.
  2. Ikuti petunjuk untuk integrasi Dialogflow CX Messenger terbaru.

Penyesuaian HTML

Anda dapat menyesuaikan berbagai aspek untuk tampilan dan perilaku dialog chat. Elemen HTML df-messenger memiliki atribut berikut:

Atribut Kebijakan input Nilai
agent-id Wajib ID agen yang terkait dengan agen. Kolom ini diisi otomatis dengan ID agen Anda.
chat-icon Opsional Ikon yang digunakan untuk tombol buka dialog chat. Ikon Agen Percakapan (Dialogflow CX) adalah ikon default. Kolom ini harus berupa URL publik. Ukuran ikon harus 36x36 piksel.
chat-title Wajib Judul yang ditampilkan di bagian atas dialog chat. Kolom ini diisi otomatis dengan nama agen Anda.
df-cx Wajib Menunjukkan bahwa interaksi dilakukan dengan agen CX. Gunakan "true" sebagai nilai.
expand Opsional Atribut Boolean yang menetapkan dialog chat untuk terbuka saat halaman dimuat. Secara default, dialog chat ditutup saat halaman dimuat.
intent Opsional Peristiwa kustom yang akan dipanggil saat dialog chat dibuka. Anda dapat menggunakan pengendali peristiwa yang akan dipanggil untuk peristiwa ini dan akan menghasilkan pesan agen pertama.
language-code Wajib Kode bahasa default untuk intent pertama. Kolom ini diisi otomatis dengan bahasa default agen.
location Wajib Wilayah agen.
session-id Opsional ID sesi. Jika tidak diberikan, integrasi akan membuat ID unik untuk setiap dialog chat.
user-id Opsional Dapat digunakan untuk melacak pengguna di seluruh sesi. Anda dapat meneruskan nilai ke Agen Percakapan (Dialogflow CX) melalui kolom queryParams.payload.userId dalam permintaan deteksi intent, dan Agen Percakapan (Dialogflow CX) memberikan nilai ini kepada Anda melalui kolom WebhookRequest.payload.userId.
wait-open Opsional Atribut Boolean yang menunda peristiwa kustom yang ditentukan dalam atribut intent hingga dialog benar-benar dibuka.

Penyesuaian CSS

Anda dapat menyesuaikan gaya dialog chat dengan menetapkan variabel CSS.

Variabel CSS berikut dapat disediakan:

Variabel CSS Properti yang terpengaruh
df-messenger-bot-message Warna latar belakang balon untuk pesan agen.
df-messenger-button-titlebar-color Warna untuk tombol mengambang dan judul dialog chat.
df-messenger-button-titlebar-font-color Warna font untuk judul di panel judul.
df-messenger-chat-background-color Warna untuk latar belakang dialog chat.
df-messenger-font-color Warna font untuk pesan.
df-messenger-input-box-color Warna latar belakang untuk kotak input teks.
df-messenger-input-font-color Warna font untuk kotak input teks.
df-messenger-input-placeholder-font-color Warna font untuk teks placeholder di kotak input teks.
df-messenger-minimized-chat-close-icon-color Warna ikon tutup di tampilan chat tertutup.
df-messenger-send-icon Warna ikon kirim di kotak input teks.
df-messenger-user-message Warna latar belakang balon untuk pesan pengguna.

Contoh kode:

<style>
  df-messenger {
   --df-messenger-bot-message: #878fac;
   --df-messenger-button-titlebar-color: #df9b56;
   --df-messenger-chat-background-color: #fafafa;
   --df-messenger-font-color: white;
   --df-messenger-send-icon: #878fac;
   --df-messenger-user-message: #479b3d;
  }
</style>

Setelan di atas akan menghasilkan:

Screenshot Messenger

Peristiwa JavaScript

Dialogflow Messenger memicu berbagai peristiwa yang dapat Anda buat pemroses peristiwa-nya.

Target peristiwa untuk peristiwa ini adalah elemen df-messenger.

Untuk menambahkan pemroses peristiwa untuk elemen df-messenger, tambahkan kode JavaScript berikut, dengan event-type adalah salah satu nama peristiwa yang dijelaskan di bawah:

const dfMessenger = document.querySelector('df-messenger');
dfMessenger.addEventListener('event-type', function (event) {
  // Handle event
  ...
});

Jenis peristiwa berikut didukung:

df-accordion-clicked

Peristiwa ini terjadi saat pengguna mengklik elemen akordeon. Struktur peristiwa akan terlihat seperti berikut:

element: {
  title: string,
  subtitle: string,
  image: {
    src: {rawUrl: string}
  },
  text: string
}

df-button-clicked

Peristiwa ini terjadi saat pengguna mengklik elemen tombol. Struktur peristiwa akan terlihat seperti berikut:

element: {
  icon: {
    type: string,
    color: string
  },
  text: string,
  link: string,
  event: EventInput,
  payload: {}
}

df-chip-clicked

Peristiwa ini terjadi saat pengguna memilih chip saran. Struktur peristiwa akan terlihat seperti berikut:

query: string // Text of the suggestion chip that was selected.

df-info-card-clicked

Peristiwa ini terjadi saat pengguna akhir mengklik item informasi di judul jendela. Struktur peristiwa akan terlihat seperti berikut:

element: {
  title: string,
  image: {
    src: {rawUrl: string}
  },
  actionLink: string
}

df-list-element-clicked

Peristiwa ini terjadi saat pengguna mengklik item dalam daftar. Struktur peristiwa akan terlihat seperti berikut:

element: {
  title: string,
  subtitle: string,
  image: {
    src: {rawUrl}
  },
  event: {
    name: string
  },
  payload: {}
}

df-messenger-error

Peristiwa ini terjadi saat Dialogflow API mengirimkan kode status error. Struktur peristiwa akan terlihat seperti berikut:

error: {
  "error": {
    "code": <error_code>,
    "message": <error_message>,
    "status": <error_status>
  }
}

df-messenger-loaded

Peristiwa ini dipicu saat elemen df-messenger dimuat dan diinisialisasi sepenuhnya.

df-request-sent

Peristiwa ini terjadi saat permintaan dibuat ke Dialogflow API. Peristiwa ini, bersama dengan df-response-received, dapat digunakan untuk memantau latensi permintaan. Struktur peristiwa akan terlihat seperti berikut:

requestBody: {
  "queryParams": {
    object(QueryParameters)
  },
  "queryInput": {
    object(QueryInput)
  },
  "inputAudio": string
}

df-response-received

Peristiwa ini terjadi saat respons diterima dari Dialogflow API. Struktur peristiwa akan terlihat seperti berikut:

response: detectIntentResponse

df-user-input-entered

Peristiwa ini terjadi saat pengguna akhir memasukkan kueri. Struktur peristiwa akan terlihat seperti berikut:

input: string // Text entered by user

Fungsi JavaScript

Elemen df-messenger menyediakan fungsi yang dapat Anda panggil untuk memengaruhi perilakunya.

renderCustomText

Fungsi ini merender pesan teks sederhana, seolah-olah berasal dari Agen Percakapan (Dialogflow CX) sebagai respons teks sederhana.

Contoh:

const dfMessenger = document.querySelector('df-messenger');
dfMessenger.renderCustomText('Custom text');

renderCustomCard

Fungsi ini merender kartu kustom, seolah-olah berasal dari fulfillment Agen Percakapan (Dialogflow CX). Format respons payload kustom ditentukan di bagian Fulfillment.

Contoh:

const dfMessenger = document.querySelector('df-messenger');
const payload = [
  {
    "type": "info",
    "title": "Info item title",
    "subtitle": "Info item subtitle",
    "image": {
      "src": {
        "rawUrl": "https://example.com/images/logo.png"
      }
    },
    "actionLink": "https://example.com"
  }];
dfMessenger.renderCustomCard(payload);

showMinChat

Fungsi ini menampilkan versi minimal daftar pesan.

Contoh:

const dfMessenger = document.querySelector('df-messenger');
dfMessenger.showMinChat();

Fulfillment

Saat membuat fulfillment, Anda dapat membuat Respons Teks dan Payload Kustom. Respons teks digunakan untuk respons agen dasar, dan payload kustom digunakan untuk respons yang kaya. Format payload kustom untuk semua jenis respons memiliki struktur dasar berikut:

{
  "richContent": [
    [
      {
        "type": "type-id",
        ...
      },
      {
        "type": "type-id",
        ...
      }
    ],
    [
      {
        "type": "type-id",
        ...
      },
      {
        "type": "type-id",
        ...
      }
    ]
  ]
}

Perhatikan bahwa nilai richContent memungkinkan satu array luar dan beberapa array dalam. Respons dalam array dalam diikat bersama dalam satu kartu visual. Jika array luar berisi beberapa array dalam, beberapa kartu akan ditampilkan—satu untuk setiap array dalam.

Subbagian lainnya menjelaskan berbagai jenis respons yang dapat Anda konfigurasikan untuk payload kustom.

Jenis respons info

Jenis respons info adalah kartu judul sederhana yang dapat diklik atau disentuh pengguna.

Screenshot Messenger

Tabel berikut menjelaskan kolom:

Nama Jenis Deskripsi
type string Jenis respons: "info"
title string Judul kartu
subtitle string Subjudul kartu
image objek Gambar
image.src objek Sumber gambar
image.src.rawUrl string URL publik untuk gambar
actionLink string URL yang akan diikuti saat kartu diklik

Contoh:

{
  "richContent": [
    [
      {
        "type": "info",
        "title": "Info item title",
        "subtitle": "Info item subtitle",
        "image": {
          "src": {
            "rawUrl": "https://example.com/images/logo.png"
          }
        },
        "actionLink": "https://example.com"
      }
    ]
  ]
}

Jenis respons deskripsi

Jenis respons deskripsi adalah kartu informatif yang dapat memiliki beberapa baris teks.

Screenshot Messenger

Tabel berikut menjelaskan kolom:

Nama Jenis Deskripsi
type string Jenis respons: "description"
title string Judul kartu
text array<string> Array string, dengan setiap string dirender di baris baru

Contoh:

{
  "richContent": [
    [
      {
        "type": "description",
        "title": "Description title",
        "text": [
          "This is text line 1.",
          "This is text line 2."
        ]
      }
    ]
  ]
}

Jenis respons gambar

Jenis respons gambar adalah kartu gambar yang dapat diklik atau disentuh pengguna.

Screenshot Messenger

Tabel berikut menjelaskan kolom:

Nama Jenis Deskripsi
type string Jenis respons: "image"
rawUrl string URL publik untuk gambar
accessibilityText string Teks alternatif untuk gambar

Contoh:

{
  "richContent": [
    [
      {
        "type": "image",
        "rawUrl": "https://example.com/images/logo.png",
        "accessibilityText": "Example logo"
      }
    ]
  ]
}

Jenis respons tombol

Jenis respons tombol adalah tombol kecil dengan ikon yang dapat diklik atau disentuh pengguna.

Screenshot Messenger

Tabel berikut menjelaskan kolom:

Nama Jenis Deskripsi
type string Jenis respons: "button"
icon objek Ikon untuk tombol
icon.type string Ikon dari Library ikon material. Ikon default adalah panah
icon.color string Heksadesimal warna
text string Teks tombol
link string URL yang akan diikuti saat tombol diklik
event objek Peristiwa Agen Percakapan (Dialogflow CX) yang dipicu saat tombol diklik.

Contoh:

{
  "richContent": [
    [
      {
        "type": "button",
        "icon": {
          "type": "chevron_right",
          "color": "#FF9800"
        },
        "text": "Button text",
        "link": "https://example.com",
        "event": {
          "name": ""
        }
      }
    ]
  ]
}

Mencantumkan jenis respons

Jenis respons daftar adalah kartu dengan beberapa opsi yang dapat dipilih pengguna.

Screenshot Messenger

Respons berisi array jenis respons list dan divider. Tabel berikut menjelaskan jenis list:

Nama Jenis Deskripsi
type string Jenis respons: "list"
title string Judul opsi
subtitle string Subjudul opsi
event objek Peristiwa Agen Percakapan (Dialogflow CX) yang dipicu saat opsi diklik.

Tabel berikut menjelaskan jenis divider:

Nama Jenis Deskripsi
type string Jenis respons: "pemisah"

Contoh:

{
  "richContent": [
    [
      {
        "type": "list",
        "title": "List item 1 title",
        "subtitle": "List item 1 subtitle",
        "event": {
          "name": ""
        }
      },
      {
        "type": "divider"
      },
      {
        "type": "list",
        "title": "List item 2 title",
        "subtitle": "List item 2 subtitle",
        "event": {
          "name": ""
        }
      }
    ]
  ]
}

Jenis respons akordeon

Jenis respons akordeon adalah kartu kecil yang dapat diklik atau disentuh pengguna untuk meluaskan dan menampilkan lebih banyak teks.

Screenshot Messenger

Tabel berikut menjelaskan kolom:

Nama Jenis Deskripsi
type string Jenis respons: "accordion"
title string Judul accordion
subtitle string Subtitel accordion
image objek Gambar
image.src objek Sumber gambar
image.src.rawUrl string URL publik untuk gambar
text string Teks akordeon

Contoh:

{
  "richContent": [
    [
      {
        "type": "accordion",
        "title": "Accordion title",
        "subtitle": "Accordion subtitle",
        "image": {
          "src": {
            "rawUrl": "https://example.com/images/logo.png"
          }
        },
        "text": "Accordion text"
      }
    ]
  ]
}

Jenis respons chip saran

Jenis respons chip saran memberikan daftar chip saran yang dapat diklik kepada pengguna akhir.

Screenshot Messenger

Tabel berikut menjelaskan kolom:

Nama Jenis Deskripsi
type string Jenis respons: "chips"
options array<object> Array objek Opsi
options[].text string Teks opsi
options[].image objek Gambar Opsi
options[].image.src objek Sumber gambar opsi
options[].image.src.rawUrl string Opsi URL publik untuk gambar
options[].link string Link opsi

Contoh:

{
  "richContent": [
    [
      {
        "type": "chips",
        "options": [
          {
            "text": "Chip 1",
            "image": {
              "src": {
                "rawUrl": "https://example.com/images/logo.png"
              }
            },
            "link": "https://example.com"
          },
          {
            "text": "Chip 2",
            "image": {
              "src": {
                "rawUrl": "https://example.com/images/logo.png"
              }
            },
            "link": "https://example.com"
          }
        ]
      }
    ]
  ]
}

Menggabungkan jenis respons

Setiap elemen pesan multimedia untuk Messenger Dialogflow CX dapat digunakan untuk membuat kartu kustom yang sesuai dengan kebutuhan Anda. Berikut adalah contoh yang menggunakan beberapa elemen yang tercantum di atas:

Screenshot Messenger

{
  "richContent": [
    [
      {
        "type": "image",
        "rawUrl": "https://example.com/images/logo.png",
        "accessibilityText": "Conversational Agents (Dialogflow CX) across platforms"
      },
      {
        "type": "info",
        "title": "Conversational Agents (Dialogflow CX)",
        "subtitle": "Build natural and rich conversational experiences",
        "actionLink": "https://cloud.google.com/dialogflow/docs"
      },
      {
        "type": "chips",
        "options": [
          {
            "text": "Case Studies",
            "link": "https://cloud.google.com/dialogflow/case-studies"
          },
          {
            "text": "Docs",
            "link": "https://cloud.google.com/dialogflow/docs"
          }
        ]
      }
    ]
  ]
}

Proses Debug

Untuk menguji agen secara lokal dengan Dialogflow CX Messenger:

  • Sematkan elemen Messenger Dialogflow CX di halaman seperti yang dijelaskan di bagian Penyesuaian HTML.
  • Mulai server HTTP lokal untuk halaman tersebut dengan port tertentu.
  • Akses halaman tersebut di http://localhost:port_number.