SDK web tanpa UI memberi Anda fleksibilitas untuk memperluas dan menyesuaikan pengalaman dukungan perusahaan sesuai kebutuhan Anda. SDK ini berisi semua fitur SDK web yang sudah dikenal dan memberikan kemampuan untuk membangun UI dan UX guna mendukungnya.
Penginstalan dan penggunaan headless web SDK memerlukan dukungan dari tim pengembangan web organisasi Anda. Untuk melakukan integrasi yang berhasil dan mencapai performa yang optimal, Google merekomendasikan agar Anda melibatkan personel yang memenuhi syarat.
Dalam konteks pengembangan software, "headless" mengacu pada arsitektur yang tidak terikat di mana lapisan presentasi frontend ("head") dipisahkan dari logika dan kemampuan backend. Dalam arsitektur headless, backend, yang juga dikenal sebagai bagian "headless", menyediakan API yang memungkinkan Anda menggunakan fitur dan layanannya.
Contohnya adalah otomatisasi alur kerja kustom. Saat pengguna akhir memulai chat, peristiwa
on("chat.message") dipicu. Anda dapat menentukan pemicu otomatisasi kustom berdasarkan pesan chat tertentu yang telah Anda terima. Misalnya, jika
pengguna akhir mengetik "Naikkan" dalam chat, pengendali peristiwa dapat secara otomatis
menaikkan sesi chat ke tim dukungan tingkat yang lebih tinggi, sehingga memberikan
perhatian yang cepat terhadap masalah kritis.
Panduan ini akan memandu Anda melalui proses penginstalan SDK, kemampuan integrasi, dan penggunaannya. Untuk mengetahui detail tentang penggunaan API, lihat dokumentasi API SDK web tanpa UI. Daftar acara yang tersedia dapat ditemukan di halaman acara.
Menginstal SDK web tanpa UI
Untuk menginstal headless web SDK, gunakan cuplikan kode berikut di project Anda:
npm install @ujet/websdk-headless --save
Menggunakan SDK web headless
Untuk menggunakan Web SDK tanpa UI, Anda dapat mengikuti contoh kode yang diberikan:
import { Client } from "@ujet/websdk-headless"
const client = new Client({ ... })
async function authenticate() {
const resp = await fetch("/your-auth-endpoint")
const data = await resp.json()
return { token: data.token }
}
const client = new Client({
companyId: "YOUR-COMPANY-ID",
tenant: "YOUR-TENANT-NAME",
authenticate: authenticate,
})
// const company = await client.getCompany()
// const menus = await client.getMenus()
Class Klien menerima beberapa opsi (Anda dapat menyesuaikan sesuai dengan persyaratan Anda):
interface ClientOption {
companyId: string;
authenticate: () => Promise<TokenResponse>;
tenant?: string;
host?: string;
lang?: string;
bridge?: string;
cobrowse?: {
enabled: boolean;
messages?: CobrowseMessages;
api?: string;
license?: string;
trustedOrigins?: string[];
capabilities?: string[];
registration?: boolean;
redactedViews?: string[];
unredactedViews?: string[];
};
}
Aktifkan logging
Selama penerapan dan pengujian, mungkin perlu mengumpulkan informasi tambahan di log konsol. Untuk mengaktifkan logging untuk SDK headless, impor
Logger dan consoleLoggerHandler dengan menambahkan kode berikut ke aplikasi web Anda:
import {Logger, consoleLoggerHandler } from '@ujet/websdk-headless'
Logger.addHandler(consoleLoggerHandler)
Mengonfigurasi Berbagi Layar
Anda dapat mengaktifkan dan mengonfigurasi Berbagi Layar menggunakan headless web SDK.
Contoh kode berikut menunjukkan cara mengaktifkan Berbagi Layar:
new Client({
// ...
cobrowse: {
enabled: true,
license: 'YOUR_SCREEN_SHARE_LICENSE'
}
})
Contoh kode berikut menunjukkan opsi untuk Berbagi Layar:
interface CobrowseOption {
enabled: boolean
template?: string
confirmSessionTemplate?: string
confirmRemoteControlTemplate?: string
confirmFullDeviceTemplate?: string
sessionControlsTemplate?: string
root?: Element
messages?: {
confirmSessionTitle: string;
confirmSessionContent: string;
confirmRemoteControlTitle: string;
confirmRemoteControlContent: string;
confirmFullDeviceTitle: string;
confirmFullDeviceContent: string;
allowText: string;
denyText: string;
endSessionText: string;
}
api?: string
license?: string
trustedOrigins?: string[]
capabilities?: string[]
registration?: boolean
redactedViews?: string[]
unredactedViews?: string[]
}
Template kustom
Anda dapat menyesuaikan template dialog Berbagi Layar menggunakan opsi template
dari contoh kode sebelumnya.
Contoh berikut menunjukkan template default:
<dialog open class="cobrowse-dialog">
<h1>$title</h1>
<div class="cobrowse-dialog_content">$content</div>
<div class="cobrowse-dialog_footer">
<button class="cobrowse-dialog_allow js-cobrowse-allow">$allow</button>
<button class="cobrowse-dialog_deny js-cobrowse-deny">$deny</button>
</div>
</dialog>
Anda dapat menggunakan template ini untuk mengonfigurasi dialog yang meminta persetujuan dari pengguna akhir untuk hal berikut:
Memulai sesi Berbagi Layar
Memulai sesi Berbagi Layar kontrol jarak jauh
Memulai sesi Berbagi Layar perangkat penuh
Berikut opsi template:
confirmSessionTemplate: Untuk mengonfirmasi sesi Berbagi Layar.confirmRemoteControlTemplate: Untuk mengonfirmasi sesi Berbagi Layar kontrol jarak jauh.confirmFullDeviceTemplate. Untuk mengonfirmasi sesi Berbagi Layar perangkat penuh.sessionControlsTemplate: Untuk tombol kontrol sesi. Berikut template default:<button class="cobrowse-end js-cobrowse-end">$end</button>
Pesan
Variabel pesan berikut digunakan dalam Template kustom:
$title$content$allow$deny
Contoh berikut menunjukkan cara menerapkan variabel ini:
{
confirmSessionTitle: string; // $title
confirmSessionContent: string; // $content
confirmRemoteControlTitle: string; // $title
confirmRemoteControlContent: string; // $content
confirmFullDeviceTitle: string; // $title
confirmFullDeviceContent: string; // $content
allowText: string; // $allow
denyText: string; // $deny
endSessionText: string; // $end
}
Contoh berikut menunjukkan nilai variabel default bahasa Inggris:
{
"confirmSessionTitle": "Screen Share Session Request",
"confirmSessionContent": "Do you want to share your current screen with the agent?",
"endSessionText": "End Screen Share Session",
"confirmRemoteControlTitle": "Remote Access Request",
"confirmRemoteControlContent": "The agent would like to have access to your currently shared screen to further assist you. Do you want to allow this?",
"confirmFullDeviceTitle": "Screen Share Request",
"confirmFullDeviceContent": "Do you want to share your full screen with the agent? The agent will not be able to control anything on the screen.",
"allowText": "Allow",
"denyText": "Deny"
}
Konfigurasi data kustom
Opsi custom_data memungkinkan Anda meneruskan data key-value pair arbitrer ke web SDK.
Penggunaan
Anda dapat memberikan data kustom sebagai objek (tanpa tanda) atau string (dengan tanda) saat membuat percakapan:
interface ChatRequest {
lang?: string;
trigger_id?: string;
ticket_id?: string;
email?: string;
greeting?: string;
cobrowsable?: boolean;
custom_data?: {
signed?: string;
unsigned?: Record<string, any>;
};
}
Lihat contoh berikut:
const custom_data = {
unsigned: {
version: {
label: 'Version',
value: '1.0.0'
}
},
signed: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // JWT or other signed payload
}
try {
const chat: Chat = await client.createChat(123, { custom_data })
} catch (error) {
// handle error
}
Transfer chatbot eksternal
Ada beberapa kasus saat Anda mungkin ingin mempertahankan histori dan interaksi dari penyedia chat lain. Anda dapat melakukannya dengan menggunakan custom_data object.
Lihat contoh berikut:
const custom_data = {
unsigned: {
external_chat_transfer: {
greeting_override: "Please hold while we connect you with a human agent.",
agent: {
name: "Agent Name",
avatar: "https://ujet.s3.amazonaws.com/default-virtual-agent-avatar-1.png"
},
transcript: [
{
sender: "agent",
timestamp: "2021-03-15 12:00:00Z",
content: [
{
type: "text",
text: "Hello! How can I help you today?"
},
{
type: "buttons",
buttons: [
{
label: "Create New Order",
selected: false
},
{
label: "Check Order Status",
selected: true
},
{
label: "Check Account Balance",
selected: false
},
]
}
]
},
{
sender: "end_user",
timestamp: "2021-03-15 12:00:15Z",
content: [
{
type: "text",
text: "Check Order Status"
}
]
},
{
sender: "agent",
timestamp: "2021-03-15 12:00:16Z",
content: [
{
type: "text",
text: "I can help you with that, what's your order number?"
}
]
},
{
sender: "end_user",
timestamp: "2021-03-15 12:00:20Z",
content: [
{
type: "media",
media: {
type: "image",
url: "https://ujet.s3.amazonaws.com/default-virtual-agent-avatar-1.png"
}
}
]
}
]
}
},
signed: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // JWT or other signed payload
}
try {
const chat: Chat = await client.createChat(123, { custom_data })
} catch (error) {
// handle error
}
Penerapan referensi
Untuk implementasi referensi SDK web, lihat ccaas-web-headless-sdk-sample di GitHub.
Repositori ini berisi demonstrasi aplikasi chat yang dibangun menggunakan CCAI Platform Web Headless SDK. Contoh ini menampilkan arsitektur klien-server dasar tempat backend Node.js menangani autentikasi yang aman dan pengiriman konfigurasi, sementara frontend JavaScript murni menyediakan antarmuka pengguna chat.