Payload kustom agen virtual

Payload kustom untuk Dialogflow CX memungkinkan Anda meningkatkan pengalaman agen virtual di luar chat dan interaksi berbasis teks biasa. Dengan menggunakan payload kustom di Dialogflow CX, Anda dapat mengonfigurasi agen virtual untuk merender respons dan kutipan kustom.

Jenis pesan respons kustom

Respons kustom memungkinkan Anda merender jenis pesan berikut:

  • Teks

  • Tombol inline

  • Tombol lekat

  • Gambar

  • Video

  • Dokumen

  • Tampilan kompleks (kombinasi satu atau beberapa jenis pesan)

Tindakan kustom memungkinkan agen virtual melakukan tindakan berikut:

  • Eskalasi ke agen manusia

  • Transfer yang direncanakan ke agen manusia

  • Mengakhiri sesi dukungan

Payload Contact Center AI Platform (CCAI Platform)

Untuk digunakan di Dialogflow CX sebagai payload kustom. Contoh berikut menunjukkan format respons di webSDK menggunakan Dialogflow CX.

{
  "ujet": {
    "type": "text|inline_button|sticky_button|image|video|document|complex|action",
    "action": "escalation|end",
    "title": "message displayed on the top of the message",
    "escalation_reason": "by_consumer|by_virtual_agent",
    "session_variable": {
      "capture_target": "payload|end_user_response",
      "capture_key": "key",
      "payload": {
      }
    },
    "messages": [
      "Hello",
      "How can I help you?"
    ],
    "buttons": [
      {
        "title": "Button 1",
        "action": "quick_reply"
      },
      {
        "title": "Button 2",
        "action": "quick_reply"
      }
    ],
    "images": [
      {
        "url": "https://image.url",
        "text": "an alternate text for an image for when failed to load an image"
      },
      {
        "url": "https://image.url",
        "text": "an alternate text for an image"
      }
    ],
    "videos": [
      {
        "url": "https://video.url",
        "text": "an alternate text for a video for when failed to load a video"
      },
      {
        "url": "https://video.url",
        "text": "an alternate text for a video"
      }
    ],
    "documents": [
      {
        "url": "https://document.url",
        "text": "an alternate text for a document for when failed to load a document"
      },
      {
        "url": "https://document.url",
        "text": "an alternate text for a document"
      }
    ],
    "components": [
      {
        "type": "text",
        "messages": [
          "We need the information for helping you.",
          "Could you please choose the following options?"
        ]
      },
      {
        "type": "inline_button",
        "buttons": [
          {
            "title": "Button 1",
            "action": "quick_reply"
          },
          {
            "title": "Button 2",
            "action": "quick_reply"
          }
        ]
      },
      {
        "type": "image",
        "images": [
          {
            "url": "https://image.url",
            "text": "an alternate text for an image for when failed to load an image"
          },
          {
            "url": "https://image.url",
            "text": "an alternate text for an image"
          }
        ]
      }
    ]
  }
}

Format pesan chat untuk payload kustom

Digunakan dengan CCAI Platform SDK untuk menampilkan UI yang tepat. Hal ini sama dengan format payload kustom Dialogflow CX, tetapi tidak memiliki kolom "ujet" di root.

Lihat contoh berikut untuk mengetahui detail selengkapnya.

Contoh

Bagian berikut mencakup contoh payload yang dapat digunakan di Dialogflow CX.

Teks

{
  "ujet": {
    "type": "text",
    "messages": [
      "Hello",
      "How can I help you?"
    ]
  }
}

Eskalasi ke antrean yang sama

Melalui agen virtual:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_virtual_agent"
  }
}

Oleh pengguna akhir:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_consumer"
  }
}

Nilai escalation_reason dilaporkan di dasbor.

Eskalasi ke antrean yang ditargetkan

Melalui agen virtual:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_virtual_agent",
    "menu_id": 100,
    "language": "ko"
  }
}

Oleh pengguna akhir:

{
  "ujet": {
      "type": "action",
      "action": "escalation",
      "escalation_reason": "by_consumer",
      "menu_id": 100,
      "language": "ko"
  }
}

Nilai escalation_reason dilaporkan di dasbor.

Akhiri percakapan

{
  "ujet": {
    "type": "action",
    "action": "end"
  }
}

Tombol inline

{
  "ujet": {
    "type": "inline_button",
    "title": "Select a menu",
    "buttons": [
      {
        "title": "Lorem Ipsum",
        "action": "quick_reply"
      },
      {
        "title": "Lorem Ipsum Dolor Sit Amet",
        "action": "escalation"
      }
    ]
  }
}

Contoh

Contoh tombol inline

Tombol tetap

{
  "ujet": {
    "type": "sticky_button",
    "title": "Select a menu",
    "buttons": [
      {
        "title": "Lorem Ipsum",
        "action": "quick_reply"
      },
      {
        "title": "Lorem Ipsum Dolor Sit Amet",
        "action": "escalation"
      }
    ]
  }
}

Contoh

Contoh tombol tetap

Tampilan gambar

{
  "ujet": {
    "type": "image",
    "title": "Please see the following images",
    "images": [
      {
        "url": "https://image1.url",
        "text": "an alternate text for an image for when failed to load an image"
      },
      {
        "url": "https://image2.url",
        "text": "an alternate text for an image"
      }
    ]
  }
}

Penayangan video

{
  "ujet": {
    "type": "video",
    "title": "Please see the following videos",
    "videos": [
      {
        "url": "https://video1.url",
        "text": "an alternate text for a video for when failed to load a video"
      },
      {
        "url": "https://video2.url",
        "text": "an alternate text for a video"
      }
    ]
  }
}

Dokumen Dilihat

{
  "ujet": {
    "type": "document",
    "title": "Please see the following document",
    "documents": [
      {
        "url": "https://document1.url",
        "text": "an alternate text for a document for when failed to load a document"
      },
      {
        "url": "https://document2.url",
        "text": "an alternate text for a document"
      }
    ]
  }
}

Tampilan kompleks

{
  "ujet": {
    "type": "complex",
    "type": "Welcome to CCAI Platform world!",
    "components": [
      {
        "type": "text",
        "messages": [
          "We need the information for helping you.",
          "Could you please choose the following options?"
        ]
      },
      {
        "type": "inline_button",
        "buttons": [
          {
            "title": "Button 1",
            "action": "quick_reply"
          },
          {
            "title": "Button 2",
            "action": "quick_reply"
          }
        ]
      },
      {
        "type": "image",
        "images": [
          {
            "url": "https://image1.url",
            "text": "an alternate text for an image for when failed to load an image"
          },
          {
            "url": "https://image2.url",
            "text": "an alternate text for an image"
          }
        ]
      }
    ]
  }
}

Mengonfigurasi payload kustom di Dialogflow

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi payload kustom menggunakan Dialogflow, lihat Respons payload kustom (Dialogflow ES) atau Payload kustom (Dialogflow CX).

Untuk mengetahui informasi selengkapnya, lihat Variabel sesi kustom untuk penanganan payload kustom.

Transfer agen virtual ke nomor telepon atau endpoint SIP

Anda dapat menggunakan payload kustom Dialogflow CX untuk mentransfer panggilan dari agen virtual suara ke nomor telepon atau endpoint SIP yang Anda tentukan. Jika koneksi berhasil, agen virtual akan dikeluarkan dari panggilan dan panggilan akan dilanjutkan. Jika koneksi gagal, pesan kegagalan transfer akan diputar dan panggilan akan dilanjutkan dengan agen virtual.

Agen virtual meneruskan pekerjaan untuk panggilan internal dan eksternal. Transfer agen virtual dicatat sebagai Planned Transfers dalam pelaporan.

Mentransfer panggilan ke nomor telepon

Untuk mentransfer panggilan dari agen virtual ke nomor telepon, gunakan payload Dialogflow CX yang mirip dengan contoh kode berikut:

{
  "ujet": {
    "type": "action",
    "action": "deflection",
    "deflection_type" : "phone",
    "phone_number": "+16509424879"
  }
}

Mentransfer panggilan ke endpoint SIP

Untuk mentransfer panggilan dari agen virtual ke endpoint SIP dengan cara standar, gunakan payload Dialogflow CX yang mirip dengan contoh kode berikut:

{
  "ujet": {
    "type": "action",
    "action": "deflection",
    "deflection_type" : "sip",
    "sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
  }
}

Mentransfer panggilan ke endpoint SIP menggunakan metode SIP REFER

Untuk mentransfer panggilan dari agen virtual ke endpoint SIP menggunakan metode SIP REFER, gunakan payload Dialogflow CX yang mirip dengan contoh kode berikut. Dengan metode SIP REFER, Anda dapat meneruskan informasi yang berguna menggunakan properti header.

{
    "ujet": {
       "type": "action",
       "action": "deflection",
       "deflection_type" : "sip"
       "sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
       "sip_refer": true
       "sip_parameters": {
       "x-header": "value",
       "x-header": "value"
       }
    }
}

Variabel Sesi Kustom untuk penanganan payload kustom

Gunakan variabel sesi kustom untuk mengambil nilai dari respons intent dan respons pengguna akhir, lalu kumpulkan semuanya dan upload ke CRM sebagai komentar. Untuk mengetahui informasi selengkapnya, lihat Payload Dialogflow untuk variabel sesi kustom.

Menangkap dari respons pengguna akhir

Flow

  1. Platform CCAI meminta respons ke Dialogflow CX.

    Dialogflow CX dapat melakukan panggilan balik ke server pelanggan melalui Pemenuhan.

    Server pelanggan seharusnya mengisi kolom session_variable dalam respons.

  2. Dialogflow CX menampilkan respons dengan payload kustom termasuk kolom session_variabledengan capture_target = end_user_response

  3. Pengguna akhir mengirim pesan.

  4. Platform CCAI menyimpan pesan pengguna akhir yang dikirim pada langkah sebelumnya.

  5. Platform CCAI akan memposting semua variabel sesi yang telah direkam dalam sesi chat ke CRM sebagai komentar saat agen virtual keluar dari chat.

Format payload kustom

{
  "ujet": {
    "session_variable": {
      "capture_target": "end_user_response",
      "capture_key": "key"
    }
  }
}

Pesan pengguna akhir berikutnya segera setelah agen virtual mengirimkan payload kustom akan diambil sebagai variabel sesi dengan kunci "key".

Pengambilan dari respons intent

Flow

  1. Platform CCAI meminta respons ke Dialogflow CX.

    1. Dialogflow CX dapat memanggilnya kembali ke server pelanggan melalui Pemenuhan.

    2. Server pelanggan seharusnya mengisi kolom session_variable dalam respons.

  2. Dialogflow CX menampilkan respons dengan payload kustom, termasuk kolom session_variable dengan capture_target = "payload".

  3. Server CCAI Platform menyimpan objek payload di langkah 2.

Platform CCAI akan memposting semua variabel sesi yang telah direkam dalam sesi chat ke CRM sebagai komentar saat agen virtual keluar dari chat.

Format payload kustom

{
  "ujet": {
    "session_variable": {
      "capture_target": "payload",
      "capture_type": [
        "comment",
        "agent"
      ],
      "payload": {
        "status": "STATUS",
        "order_id": "ORDER_ID",
        "personal_id": "PERSONAL_ID"
      },
        "invisible_to_agent": ["INVISIBLE_TO_AGENT"],
        "display_order_in_adapter": ["DISPLAY_ORDER_IN_ADAPTER"]
    }
  }
}

Ganti kode berikut:

  • STATUS: status pesanan

  • ORDER_ID: ID pesanan

  • PERSONAL_ID: ID pengguna akhir.

  • INVISIBLE_TO_AGENT: Array properti yang tidak ingin Anda tampilkan di adaptor agen. Misalnya, nilai "personal_id" di sini akan mencegah properti personal_id ditampilkan di adaptor agen. Untuk mengetahui informasi selengkapnya, lihat Menampilkan variabel sesi agen virtual.

  • DISPLAY_ORDER_IN_ADAPTER: Array properti untuk menentukan urutan variabel sesi yang harus muncul di adaptor agen dan di data CRM. Untuk mengetahui informasi selengkapnya, lihat Menampilkan variabel sesi agen virtual.

Upload variabel sesi kustom di CRM

Untuk setiap variabel sesi, server seharusnya mengumpulkan semua variabel sesi secara internal, lalu menguploadnya ke CRM saat agen virtual keluar.

Contoh pesan CRM

    ###########################

    Chat ID: 1
    Menu ID: 1
    Chatbot Platform: Platform Name
    Chatbot Workflow: Workflow Name
    Virtual Agent: Virtual Agent Name

    ###########################

    Intent: Intent Captured from End User Response
    Captured At: 2020-06-25 14:54:19

    Captured Variables
    request: Cancel Order

    ###########################

    Intent: Intent Captured from Payload
    Captured At: 2020-06-25 14:58:23

    Captured Variables
    status: Cancelled
    order_id: #12345

    ###########################

Contoh skenario

Berikut adalah contoh percakapan yang menunjukkan berbagai langkah dan pesan yang dipertukarkan antara agen virtual dan pengguna akhir.

Langkah 1

Pesan chat dari agen virtual

How can I help you? (Button) Show my orders (Button) Cancel an order

Respons maksud (payload kustom)

{
  "ujet": {
    "type": "inline_button",
    "title": "How can I help you?",
    "buttons": [
      {
        "title": "Show my orders",
        "action": "quick_reply"
      },
      {
        "title": "Cancel an order",
        "action": "quick_reply"
      }
    ]
  }
}

Variabel sesi yang direkam

Tidak ada

Langkah 2

Pesan Chat dari pengguna akhir

Click "Cancel an order" button.

Variabel sesi yang direkam

Tidak ada

Langkah 3

Pesan chat dari agen virtual

Can you provide the order id please

Respons maksud (payload kustom)

{
  "ujet": {
    "type": "text"
    "messages": [
      "Can you provide the order id please"
    ],
    "session_variable": {
       "capture_target": "end_user_response",
       "capture_key": "order_id";
    }
  }
}

Variabel sesi yang direkam

Tidak ada

Langkah 4

Pesan Chat dari pengguna akhir

Order id is #12345

Variabel sesi yang direkam

order_id: "Order ID is #12345"

Langkah 5

Pesan chat dari agen virtual

Order #12345 is cancelled. Do you need anything else?

Respons maksud (payload kustom)

{
  "ujet": {
    "type": "text",
    "messages": [
      "Order #12345 is canceled.",
      "Do you need anything else?"
    ],
    "session_variable": {
      "capture_target": "payload",
      "capture_type": [
        "agent",
        "comment",
        "event"
      ],
      "payload": {
        "order_id": "#12345",
        "order_status": "cancelled"
      }
    }
  }
}

Variabel sesi yang direkam

order_id: "#12345", order_status: canceled

Langkah 6

Pesan Chat dari pengguna akhir

I would like to speak with a human agent.

Langkah 7

Pesan chat dari agen virtual

Virtual Agent is left from the conversation.

{
  "ujet": {
    "type": "escalation",
    "escalation_reason": "by_consumer"
  }
}

Upload variabel sesi kustom di CRM

Dari skenario sebelumnya, komentar berikut diposting di tiket CRM:

    ---------------------------------

    Chat ID: 1
    Menu ID: 1
    Chatbot Platform: Platform Name
    Chatbot Workflow: Workflow Name
    Virtual Agent: Virtual Agent Name

    --------------------------------

    Intent: Intent Captured from End User Response
    Captured At: 2020-06-25 14:54:19

    Captured Variables
    order_id: Order id is #12345.

    --------------------------------

    Intent: Intent Captured from Payload
    Captured At: 2020-06-25 14:58:23

    Captured Variables
    order_id: #12345
    order_status: canceled

    --------------------------------

Mengonfigurasi kartu konten

Kartu konten menampilkan konten yang ringkas dan menarik secara visual dalam format seperti kartu, sehingga menciptakan interaksi yang lebih sederhana bagi pengguna akhir untuk menggunakan informasi yang disajikan. Anda dapat membuat kartu konten menggunakan Dialogflow CX dan menyesuaikannya dengan judul, subjudul, dan teks isi.

Contoh berikut menggunakan kartu konten untuk menampilkan opsi restoran kepada pengguna akhir:

Contoh kartu konten

Properti kartu konten

Nama Properti Deskripsi Wajib Jenis
title Judul kartu. Ya String
subtitle Subjudul kartu. Tidak String
body Deskripsi kartu konten. Ya String
link Link halaman web atau deep link. SDK akan menggunakan kemampuan OS untuk membukanya. Tidak String
event_params Kamus yang berisi informasi tambahan tentang peristiwa klik. SDK akan menggunakan ini. Tidak Kamus

Payload Dialogflow CX: Menambahkan validasi dan menerima jenis kartu konten

Jenis payload Dialogflow CX tertentu menangani kartu konten saat pesan dari pengguna akhir diterima melalui server chatbot. Berikut adalah contoh payload Dialogflow CX:

{
  "ujet": {
    "type": "content_card",
    "cards": [
      {
        "title": "Title",
        "subtitle": "Subtitle",
        "body": "Body",
        "link": "app://page",
        "event_params": {} # for deep-link click event
      }
    ]
  }
}

Informasi tentang kartu konten dalam histori chat CRM

Informasi judul kartu dicatat untuk melacak kartu mana yang telah diklik pengguna akhir. Informasi ini dicatat dalam histori chat CRM.

Dalam contoh berikut, histori pesan chat di CRM menampilkan interaksi kartu konten.

[Chat message history]
ID: 305   |   2023-07-06     PDT
--------------------------------------------------
[01:13:32     VA]     Welcome message

[01:14:35     Mobile U.]     Content Cards:
- Title 1
- Title 2

Mencatat peristiwa klik judul kartu konten

Untuk mencatat log saat pengguna akhir mengklik judul kartu konten, gunakan format berikut untuk merekam peristiwa:

{end_user_name} clicked on the '{title}' card.
Note Title: Content Card click
Note Comment: 'John Doe' clicked on the 'See our new website' card.

Membuat peristiwa klik kartu konten menggunakan End User Event API

Saat pengguna akhir mengklik judul kartu konten, Anda dapat merekam peristiwa ini dengan mengirim permintaan POST ke URL yang ditentukan bersama dengan judul kartu yang diklik.

Endpoint API: POST /api/v2/chat/:id/end_user_event

Penggunaan: Buat peristiwa klik kartu konten.

URL: /api/v2/chats/:id/end_user_event

Metode: POST

Parameter:

Kolom Jenis Deskripsi
event objek
event.name string Untuk peristiwa klik kartu konten, gunakan content_card_clicked.
event.payload objek
event.payload.title string Masukkan judul kartu yang diklik.
(Opsional) end_user_name string Masukkan nama pengguna akhir. Jika dibiarkan kosong, nama akan diambil dari CRM.

Contoh permintaan:

{
  "event": {
    "name": "content_card_clicked",
    "payload": {
      "title": "New our website"
    }
  },
  "end_user_name": "consumer 1"   ## optional
}

Respons: Status: 202 Accepted