Fungsi Kustom
Fungsi kustom memungkinkan bot AI Anda terhubung ke sistem lain selama percakapan langsung. Alih-alih mengatakan “Saya akan periksa dan kembali kepada Anda,” bot dapat mencari status pesanan, memeriksa inventaris, atau membuat catatan di CRM (sistem manajemen hubungan pelanggan - perangkat lunak yang Anda gunakan untuk melacak prospek dan pelanggan, seperti HubSpot atau Salesforce) Anda - semuanya secara waktu nyata, saat pelanggan menunggu.
Fungsi Kustom vs Webhook
Ini adalah poin kebingungan yang paling umum, jadi ada baiknya untuk memperjelasnya sebelum Anda membangun apa pun.
| Webhook | Fungsi Kustom | |
|---|---|---|
| Arah | Satu arah (kirim dan lupakan) | Dua arah (panggil dan tunggu) |
| Apa yang dilakukan bot | Mengirimkan notifikasi saat sesuatu terjadi, lalu terus berjalan. | Memanggil keluar, berhenti sejenak, menunggu respons, dan menggunakan apa yang kembali untuk melanjutkan percakapan. |
| Visibilitas ke percakapan | Hasil hilir tidak terlihat oleh bot — bot tidak pernah melihat apa yang terjadi. | Respons dimasukkan langsung kembali ke AI, sehingga bot dapat mengutipnya, menalar tentangnya, dan membalas pelanggan dengannya. |
| Terbaik untuk | Mencatat peristiwa, menyinkronkan data ke CRM, memicu otomatisasi eksternal (Zapier, Make, n8n). | Apa pun di mana bot memerlukan jawaban sebelum dapat membalas — pencarian langsung, penetapan harga waktu nyata, pembuatan konten secara instan. |
Kapan memilih yang mana: Jika Anda hanya perlu memberi tahu sistem lain bahwa sesuatu telah terjadi, gunakan webhook - pesan otomatis satu arah yang dikirim ke sistem lain (lihat Pengaturan → Integrasi → Webhook). Jika bot perlu mempelajari sesuatu dari sistem lain sebelum melanjutkan percakapan, gunakan fungsi kustom.
Contoh Apa yang Dibuka oleh Fungsi Kustom
Karena respons dimasukkan kembali ke dalam percakapan, fungsi kustom membuka hal-hal yang tidak dapat dilakukan oleh webhook:
- Pencarian inventaris Shopify atau WooCommerce langsung — Sebelum memberikan penawaran kepada pelanggan, bot memeriksa stok secara waktu nyata dan menjawab “Ya, kami memiliki 12 dalam ukuran M” alih-alih “biarkan saya periksa dan kembali kepada Anda.”
- Penetapan harga dinamis dari Google Sheet — Tim penjualan Anda memperbarui harga di lembar; bot membaca baris terbaru di tengah percakapan dan memberikan harga saat ini tanpa ada yang menyentuh konfigurasi AI.
- Agen panggilan balik AI suara — Saat bot mengkualifikasi prospek, bot memicu agen suara (misalnya, penelepon bertenaga ElevenLabs) untuk menelepon balik prospek dalam hitungan menit, dan mengonfirmasi kepada pelanggan “bagus, nantikan panggilan dalam 5 menit ke depan.”
- PDF penawaran kustom, dibuat dan dikirim melalui email di tengah obrolan — Bot mengumpulkan persyaratan, memanggil pembuat penawaran Anda, mendapatkan kembali URL PDF, dan memberi tahu pelanggan “Saya baru saja mengirimkan penawaran Anda melalui email — periksa kotak masuk Anda.”
Apa yang Dapat Dilakukan Fungsi Kustom?
Anggap fungsi kustom sebagai pemberian kekuatan super kepada bot Anda selain sekadar mengobrol. Berikut adalah contoh dunia nyata:
- Pelacakan pesanan - Pelanggan bertanya “Di mana pesanan saya?” dan bot memeriksa sistem e-commerce Anda serta membalas dengan status pengiriman dan tautan pelacakan
- Pemeriksaan inventaris - “Apakah Anda memiliki ini dalam ukuran 10?” Bot memeriksa sistem stok Anda dan memberikan jawaban waktu nyata
- Pembaruan CRM - Saat bot mengkualifikasi prospek, bot secara otomatis membuat atau memperbarui catatan di HubSpot, Salesforce, atau CRM lainnya
- Pembuatan penawaran - Bot mengumpulkan persyaratan pelanggan dan membuat penawaran yang dipersonalisasi dari sistem penetapan harga Anda
- Pemesanan - Bot membuat janji temu di sistem pemesanan eksternal Anda
- Verifikasi diskon - “Apakah kode kupon ini valid?” Bot memeriksa dan mengonfirmasi
- Pencarian akun - Pelanggan yang kembali dikenali secara otomatis dan detail akun mereka ditarik
Pelanggan tidak pernah melihat apa yang terjadi di balik layar. Mereka hanya merasakan bot yang dapat menjawab pertanyaan mereka dengan informasi nyata dan terkini.
Bagaimana Fungsi Kustom Bekerja (Versi Sederhana)
Berikut adalah apa yang terjadi ketika fungsi kustom dipicu selama percakapan:
- Pelanggan menanyakan sesuatu yang memerlukan data waktu nyata (misalnya, “Di mana pesanan saya?”)
- Bot mengenali bahwa ia perlu menggunakan fungsi kustom untuk menjawab
- Bot mengumpulkan informasi apa pun yang kurang dari pelanggan (misalnya, “Berapa nomor pesanan Anda?”)
- Platform mengirimkan permintaan ke sistem Anda (situs web, CRM, atau alat lainnya) dengan detail yang relevan
- Sistem Anda merespons dengan data (misalnya, status pesanan, nomor pelacakan, tanggal pengiriman)
- Bot membaca respons dan menyusun balasan yang natural: “Pesanan Anda ORD-4582 telah dikirim dan akan tiba pada hari Jumat!”
Berapa biaya panggilan fungsi kustom
Setiap panggilan fungsi kustom ditagihkan berdasarkan tingkat Kualitas AI Agen Anda:
| Tingkat Kualitas AI | Kredit per panggilan fungsi kustom | Dengan kunci Anthropic Anda sendiri (BYOK) terhubung |
|---|---|---|
| Pro | 1 kredit | 0 kredit — berjalan menggunakan kunci Anda |
| Ekonomi (tidak digunakan lagi) | 0,5 kredit | 0 kredit — berjalan menggunakan kunci Anda |
| Maks | 0,25 kredit | tetap 0,25 kredit, ditagihkan meskipun kunci Anda sendiri terhubung |
| Mini | 0,15 kredit | tetap 0,15 kredit, ditagihkan meskipun kunci Anda sendiri terhubung |
Menyiapkan Fungsi Kustom (Langkah demi Langkah)
- Di bilah sisi utama, di bawah AI Studio, klik Custom Functions.
- Klik tombol hijau + Add Function (atau New function) di kanan atas.
Daftar fungsi kustom menampilkan tabel dengan kolom-kolom berikut:
| Kolom | Apa yang Ditampilkan |
|---|---|
| Name | Nama fungsi (misalnya, check_order_status) |
| Description | Ringkasan singkat tentang fungsi tersebut (dipotong hingga 50 karakter dalam tabel) |
| Method | Metode HTTP yang digunakan, ditampilkan sebagai lencana berwarna: GET (biru), POST (hijau), PUT (oranye), DELETE (merah) |
| Created | Tanggal fungsi dibuat |
Hal ini memudahkan Anda untuk melihat sekilas fungsi Anda dan menemukan yang Anda butuhkan.
Langkah 1: Berikan Nama dan Deskripsi
| Bidang | Apa yang Harus Diisi | Contoh |
|---|---|---|
| Name | Nama singkat menggunakan huruf, angka, dan garis bawah | check_order_status |
| Description | Jelaskan apa yang dilakukan fungsi ini (AI membaca ini untuk memutuskan kapan harus menggunakannya) | “Mencari status terkini pesanan pelanggan menggunakan nomor pesanan mereka” |
| Purpose (AI Action) | Beri tahu AI kapan dan bagaimana tepatnya menggunakan fungsi ini | “Gunakan ini saat pelanggan bertanya tentang status pesanan, pengiriman, atau pengantaran. Minta nomor pesanan mereka terlebih dahulu.” |
Tips: Jadilah sangat spesifik dalam deskripsi dan tujuan. Semakin jelas Anda mengenai kapan fungsi tersebut harus digunakan, semakin andal bot akan menggunakannya pada waktu yang tepat.
Langkah 2: Siapkan Koneksi
Anda perlu memberi tahu aplikasi ke mana harus mengirim permintaan:
| Bidang | Apa yang Harus Dimasukkan | Contoh |
|---|---|---|
| URL | Alamat web titik akhir sistem Anda (alamat spesifik pada sistem Anda yang menerima permintaan dan mengirimkan kembali data) | https://api.yourstore.com/v1/orders/status |
| Metode | Jenis permintaan yang akan dikirim | Lihat opsi di bawah |
Metode mana yang harus dipilih:
| Metode | Kapan Harus Digunakan |
|---|---|
| GET | Mencari informasi (status pesanan, inventaris, detail akun) |
| POST | Membuat catatan baru (tiket dukungan, prospek, pemesanan) atau pencarian kompleks |
| PUT | Memperbarui catatan yang sudah ada sepenuhnya |
| PATCH | Memperbarui sebagian dari catatan yang sudah ada |
| DELETE | Menghapus catatan |
Jika Anda tidak yakin mana yang harus digunakan, tanyakan kepada pengembang Anda atau periksa dokumentasi sistem yang Anda hubungkan. GET (untuk pencarian) dan POST (untuk membuat catatan) adalah yang paling umum.
Langkah 3: Tambahkan Header Autentikasi
Sebagian besar sistem memerlukan autentikasi untuk menerima permintaan. Tambahkan header yang diperlukan:
| Header | Nilai Contoh |
|---|---|
Authorization |
Bearer your-api-key-here |
Content-Type |
application/json |
Nilai header yang membawa kunci atau kata sandi, seperti Authorization atau X-API-Key, akan ditampilkan sebagai titik setelah diketik. Klik ikon mata di samping nilai tersebut untuk melihatnya.
Tips keamanan: Gunakan kunci API khusus dengan izin terbatas. Jangan gunakan kredensial tingkat admin.
Di mana menemukan kunci API: Periksa bagian pengaturan atau pengembang dari sistem yang Anda hubungkan (misalnya, CRM, platform e-commerce, atau alat pemesanan Anda).
Langkah 4: Tentukan Input (Apa yang Dikirim Bot)
Parameter input adalah potongan informasi yang dikumpulkan bot dari percakapan dan dikirim ke sistem Anda.
Untuk setiap parameter, Anda menentukan:
| Properti | Apa Artinya |
|---|---|
| Nama | Nama parameter (harus sesuai dengan yang diharapkan sistem Anda) |
| Tipe | Jenis data (teks, angka, benar/salah, dll.) |
| Deskripsi | Beri tahu AI informasi apa ini dan di mana menemukannya dalam percakapan |
| Wajib | Jika diatur ke Ya, bot akan meminta informasi ini kepada pelanggan sebelum melanjutkan |
Tipe parameter yang tersedia:
| Tipe | Apa Artinya |
|---|---|
| string | Teks (nama, nomor pesanan, alamat) |
| number | Nilai numerik (kuantitas, harga) |
| boolean | Benar atau salah (nilai ya/tidak) |
| array | Daftar item. Dikirim sebagai daftar JSON asli — di Jalankan Uji Anda dapat mengetiknya sebagai [8624], ["a", "b"] atau cukup dipisahkan dengan koma (8624, 8625) dan itu akan dikonversi untuk Anda. Jika API Anda ketat mengenai isi daftar — misalnya hanya angka — atur Tipe item opsional di samping tipe tersebut dan setiap nilai dalam daftar akan dikonversi ke tipe tersebut. |
| query_param | Teks yang dikirim sebagai parameter URL alih-alih di dalam badan permintaan. Gunakan ini saat API Anda mengharapkan data di dalam URL (misalnya, ?order_id=123). |
Setiap parameter juga memiliki kolom Request body path opsional. Biasanya, parameter dikirim sebagai kolom tingkat atas dalam isi permintaan (atau sebagai nilai string kueri, untuk tipe query_param). Jika endpoint Anda mengharapkannya dalam bentuk bersarang — misalnya {"order": {"id": "ORD-123"}} — atur path ke order.id dan platform akan menyarangkan nilainya di sana untuk Anda.
Contoh: Untuk pencarian status pesanan, Anda mungkin menentukan:
- order_number (string, wajib): “Nomor pesanan pelanggan. Biasanya dimulai dengan ORD- diikuti oleh angka. Tanyakan ini kepada pelanggan jika mereka belum menyebutkannya.”
- email (string, opsional): “Alamat email pelanggan untuk verifikasi tambahan. Hanya diperlukan jika nomor pesanan saja tidak menemukan kecocokan.”
Apa yang Diterima Sistem Anda Secara Otomatis
Selain parameter input yang Anda tentukan, platform secara otomatis menyertakan data sistem pada setiap permintaan. Endpoint Anda menerima ini di kolom system:
| Bidang Sistem | Apa yang Dikandungnya |
|---|---|
system.contactId |
ID platform kontak dalam percakapan |
system.campaignId |
Mengidentifikasi agen AI yang menangani percakapan, dalam bentuk agent:<agentId> (bidang ini tetap menggunakan nama lamanya) |
system.userId |
ID pengguna Anda |
system.channel |
Saluran pesan (misalnya, "whatsapp", "instagram") |
system.contact |
Catatan kontak lengkap (nama, telepon, email, tag, dll.) |
system.campaign |
Pengaturan agen AI yang menangani percakapan (bidang ini tetap menggunakan nama lamanya) |
system.test |
true jika ini adalah uji coba Try Out, false untuk percakapan langsung |
system.callback_url |
Hanya saat Hasil muncul nanti diaktifkan: tautan untuk mengirim hasil (lihat Pekerjaan yang berjalan lama) |
system.callback_expires_at |
Hanya saat Hasil muncul nanti diaktifkan: kapan tautan tersebut kedaluwarsa |
Ini berguna jika sistem Anda perlu mengidentifikasi kontak, memeriksa agen mana yang memanggil fungsi tersebut, atau berperilaku berbeda selama pengujian.
Saat pemeriksaan tindak lanjut memanggil fungsi Anda (lihat Hanya kirim saat pemeriksaan berhasil), permintaannya berbeda dari panggilan dalam percakapan: permintaan tersebut tidak memiliki parameter input dan kolom
systemhanya membawasystem.contact(denganid-nya) ditambah bloksystem.follow_up(type,cycle_number,follow_up_number,reason,campaign_id,agent_id). Tidak ada objekcampaigndi dalamnya. Lewati Data Sistem juga berlaku untuk panggilan tersebut.
Tidak butuh data sistem? Aktifkan tombol Lewati Data Sistem di pembuat fungsi. Bot kemudian hanya akan mengirim parameter input yang Anda tentukan — tanpa data kontak atau agen. Gunakan ini jika endpoint Anda menolak bidang yang tidak terduga atau Anda hanya menginginkan payload yang lebih ramping.
Langkah 5: Uji, Lalu Biarkan Bot Membaca Responsnya
Anda biasanya tidak perlu memetakan kolom respons sama sekali. Setelah endpoint Anda merespons, bot akan membaca seluruh respons JSON dan menggunakan Deskripsi serta Tujuan (Tindakan AI) fungsi Anda — ditambah deskripsi masing-masing parameter — untuk menentukan apa yang penting dan menyajikannya secara alami. Deskripsi yang jelas pada fungsi itu sendiri (“Mengambil status pesanan pelanggan saat ini termasuk info pengiriman dan pelacakan”) melakukan lebih banyak pekerjaan di sini daripada pemetaan per kolom.
Jika endpoint Anda mengembalikan respons yang besar dan Anda hanya ingin bot melihat beberapa nilai tertentu, buka bagian Pemetaan respons (diciutkan secara default, tepat di atas Uji). Setiap baris memilih satu kolom tingkat atas dari respons: Kolom respons adalah nama kolom dalam balasan JSON API Anda, dan Kolom output adalah nama yang diterima bot untuk kolom tersebut. Dengan setidaknya satu baris yang diisi, bot hanya akan mendapatkan nilai yang Anda petakan alih-alih seluruh isi respons. Biarkan bagian tersebut kosong untuk mempertahankan perilaku respons penuh default.
Sebelum Anda menyimpan, gunakan bagian Uji di bagian bawah pembuat untuk mengirim permintaan persis seperti yang dikonfigurasi dan melihat respons sebenarnya, tanpa meninggalkan aplikasi:
Respons yang Anda lihat di sini adalah balasan mentah dari endpoint. Jika Anda telah mengatur Pemetaan respons di atas, bot dalam obrolan nyata hanya akan menerima kolom yang dipetakan tersebut — pengujian selalu menampilkan respons mentah lengkap agar Anda dapat melihat apa saja yang tersedia untuk dipetakan. Jika ada sesuatu yang terlihat tidak sesuai (nama kolom yang tidak terduga, penumpukan tambahan), perbaiki pada endpoint Anda atau sesuaikan pemetaan Anda.
Menetapkan Fungsi ke Agen
Setelah membuat fungsi kustom, Anda perlu memberi tahu setiap Agen fungsi mana yang dapat digunakannya:
- Buka Agen di bawah AI Studio → AI Agents.
- Buka tab AI Abilities miliknya.
- Anda akan melihat daftar setiap fungsi kustom yang telah Anda buat. Aktifkan setiap fungsi yang Anda ingin bot Agen ini dapat panggil.
- Klik Simpan perubahan di bagian bawah. Pilihan hanya berlaku setelah disimpan.
Hanya fungsi yang ditetapkan yang tersedia bagi bot untuk Agen tersebut. Ini mencegah bot menggunakan fungsi yang tidak relevan secara tidak sengaja.
Menguji Fungsi Kustom Anda
Sebelum ditayangkan, lakukan pengujian secara menyeluruh:
- Jalankan Uji bawaan - Gunakan bagian Uji di dalam pembuat fungsi (lihat di atas) untuk pemeriksaan cepat tanpa meninggalkan aplikasi — isi dengan nilai realistis dan klik Jalankan uji.
- Uji endpoint sistem Anda secara langsung - Untuk daftar periksa lengkap di bawah, alat khusus seperti Postman (atau pengembang Anda) akan menggali lebih dalam daripada sekadar satu kali Jalankan uji.
- Uji di Coba - Simulasikan percakapan di mana pelanggan menanyakan sesuatu yang seharusnya memicu fungsi tersebut.
- Periksa respons - Pastikan bot membaca dan menyajikan data dengan benar.
- Uji skenario kesalahan - Apa yang terjadi jika pelanggan memberikan nomor pesanan yang tidak valid? Bagaimana jika sistem Anda sedang down sementara?
Saat pengujian menghasilkan 401 atau 403
Respons 401 atau 403 berarti endpoint Anda menerima permintaan tersebut namun menolaknya. Indikasinya adalah tidak ada yang muncul di log Anda sendiri — sebagian besar alat menolak panggilan yang tidak sah sebelum alur kerja dimulai, sehingga tidak ada yang terlihat di sisi Anda dan seolah-olah permintaan tersebut tidak pernah sampai.
Hampir selalu ini disebabkan oleh ketidakcocokan autentikasi: endpoint Anda menginginkan satu jenis kredensial, sementara fungsi mengirimkan jenis yang berbeda. Periksa apakah header yang Anda tambahkan di Langkah 3 adalah header yang tepat yang diharapkan oleh sistem Anda.
Versi paling umum dari masalah ini adalah webhook yang dilindungi dengan Basic Auth (n8n, Make, dan sebagian besar alat yang di-host sendiri menawarkan ini sebagai kotak centang pada webhook itu sendiri) sementara fungsi mengirimkan header rahasia kustom seperti X-My-Secret. Basic Auth hanya menerima header Authorization, sehingga header kustom diabaikan dan panggilan ditolak. Anda memiliki dua opsi:
- Matikan Basic Auth pada webhook, dan periksa header kustom Anda di dalam alur kerja sebagai gantinya.
- Tetap aktifkan Basic Auth, dan tambahkan header
Authorizationke fungsi yang nilainya adalah kataBasicdiikuti olehusername:passwordAnda yang telah dienkode base64.
Keduanya berhasil — pastikan saja kedua sisi sepakat.
Saat pengujian menghasilkan 404
URL endpoint salah, atau alur kerja belum dipublikasikan. Khusus di n8n, setiap webhook memiliki URL Test dan URL Production yang terpisah, dan URL Test hanya mendengarkan saat editor terbuka. Salin URL Production dan pastikan alur kerja sudah aktif.
Melihat kegagalan di Try Out dan Chats
Ketika AI memanggil fungsi kustom selama percakapan dan panggilan gagal, misalnya karena kredensial yang salah, titik akhir yang tidak aktif, atau waktu tunggu habis, percakapan sekarang menunjukkannya: penanda merah “(nama fungsi) gagal” muncul di utas, baik di tab Try Out agen maupun percakapan nyata di Chats. Klik penanda tersebut untuk memperluas detailnya: kode status yang dikembalikan oleh titik akhir Anda dan isi responsnya, yang biasanya cukup untuk memberi tahu Anda apa yang harus diperbaiki (sebuah 401 dengan pesan “unauthorized” berarti header autentikasi, waktu tunggu habis berarti titik akhir Anda membutuhkan waktu lebih dari 30 detik; untuk pekerjaan yang membutuhkan waktu lebih lama, lihat Pekerjaan yang berjalan lama).
Panggilan yang berhasil juga menampilkan penanda — klik penanda tersebut untuk melihat apa yang sebenarnya dikirim kembali oleh endpoint Anda. Ini adalah cara tercepat untuk men-debug integrasi dari ujung ke ujung: lakukan percakapan pengujian di Try Out, lalu klik penanda fungsi untuk melihat hasil permintaan yang sebenarnya tanpa meninggalkan halaman.
Saat alat terus gagal dalam percakapan nyata
Jika fungsi kustom yang sama gagal sebanyak 3 kali dalam waktu 24 jam saat agen AI Anda sedang mengobrol, Anda akan mendapatkan satu pemberitahuan per hari untuk hal tersebut: melalui email, di bawah ikon lonceng, dan sebagai push notification jika Anda mengaktifkannya. Pemberitahuan tersebut menyebutkan nama alat, menampilkan kesalahan terakhir, dan menautkan ke obrolan yang terdampak, karena agen akan memberi tahu kontak tersebut bahwa ia mengalami masalah teknis. Baris fungsi di Pengaturan akan menampilkan baris Gagal dengan jumlah kesalahan dan kesalahan terakhir hingga alat tersebut berfungsi kembali; satu panggilan yang berhasil akan menghapus status tersebut. Anda dapat mematikan pemberitahuan ini di bawah Pengaturan → Pemberitahuan → Kesalahan alat.
Contoh Lengkap: Pencarian Status Pesanan
Berikut adalah contoh yang telah dikonfigurasi sepenuhnya yang dapat Anda gunakan sebagai templat:
Informasi Dasar:
- Nama:
check_order_status - Deskripsi: “Mengambil status pesanan pelanggan saat ini termasuk info pengiriman dan pelacakan”
- Tindakan AI: “Panggil ini saat pelanggan bertanya tentang status pesanan mereka, di mana paket mereka berada, atau kapan paket akan tiba. Selalu minta nomor pesanan terlebih dahulu.”
Koneksi:
- URL:
https://api.mystore.com/orders/lookup - Metode: POST
Header:
Authorization:Bearer sk_live_abc123Content-Type:application/json
Parameter Input:
order_number(teks, wajib): “Nomor pesanan yang diberikan oleh pelanggan”customer_email(teks, opsional): “Email pelanggan untuk verifikasi tambahan”
Tidak perlu pemetaan respons — dengan Deskripsi dan Tindakan AI yang jelas sudah diatur di atas, bot membaca JSON apa pun yang dikembalikan oleh endpoint Anda (status, nomor pelacakan, tanggal pengiriman, item) dan mencari tahu cara membicarakannya.
Seperti apa percakapannya:
Pelanggan: Hei, di mana pesanan saya?
Bot: Hai! Saya akan dengan senang hati memeriksa pesanan Anda. Bisakah Anda membagikan nomor pesanan Anda kepada saya?
Pelanggan: ORD-78234
Bot: Izinkan saya mencarinya untuk Anda…
Pesanan Anda ORD-78234 telah dikirim dan sedang dalam perjalanan! Perkiraan tanggal pengiriman adalah 10 Maret. Anda dapat melacak paket Anda di sini: https://tracking.example.com/1Z999AA1
Apakah ada hal lain yang bisa saya bantu?
Contoh Lengkap: Status Pesanan Shopify
Jika toko menggunakan Shopify, Anda tidak memerlukan pengembang untuk membuat endpoint pencarian — sistem Shopify sendiri dapat menjawab pertanyaan pesanan secara langsung. (Untuk pertanyaan produk dan stok di toko Shopify, Anda sama sekali tidak memerlukan fungsi kustom: hubungkan server bawaan toko sebagai gantinya — lihat Hubungkan toko Shopify.)
Pertama, buat token akses di Shopify. Shopify mengubah hal ini selama tahun 2026: aplikasi tidak lagi dapat dibuat di dalam admin Shopify, dan layar aplikasi baru memberikan Anda Client ID dan Client secret alih-alih token yang sudah jadi. Langkah-langkah di bawah ini mengubahnya menjadi token permanen. Luangkan waktu sekitar sepuluh menit, satu kali per toko. (Jika toko sudah memiliki aplikasi lama yang dibuat dengan cara lama, token yang ada akan tetap berfungsi — langsung lewati ke fungsi kustom di bawah.)
- Buka Dasbor Pengembang Shopify di dev.shopify.com, buka organisasi Anda, dan klik Apps → Create app. Beri nama seperti
Order lookup. - Berikan izin read_orders pada aplikasi, rilis versi, dan instal aplikasi di toko.
- Buka Settings aplikasi dan tambahkan alamat web toko Anda (misalnya
https://www.yourstore.com/) ke URL pengalihan yang diizinkan. Simpan. - Masih di Settings, salin Client ID dan Client secret.
- Di browser tempat Anda masuk ke admin Shopify toko tersebut, buka alamat di bawah ini, ganti nama toko, ID klien, dan alamat pengalihan dengan milik Anda:
https://YOUR-STORE.myshopify.com/admin/oauth/authorize?client_id=YOUR-CLIENT-ID&scope=read_orders&redirect_uri=https://www.yourstore.com/&state=12345Setujui layar yang muncul. Browser akan mendarat di alamat pengalihan Anda dan bilah alamat sekarang berisicode=diikuti oleh nilai yang panjang — salin nilai tersebut. Nilai ini hanya berlaku selama beberapa menit, jadi segera lanjutkan ke langkah berikutnya. - Tukar kode tersebut dengan token, yang dapat Anda lakukan di dalam Your AI Connector. Di pembuat fungsi kustom, atur Method ke POST dan URL ke
https://YOUR-STORE.myshopify.com/admin/oauth/access_token, tambahkan tiga parameter input teks bernamaclient_id,client_secret, dancode, lalu klik Test, isi ketiga nilai tersebut, dan jalankan. Responsnya berisiaccess_token— itulah token permanen Anda. Salin ke tempat yang aman, lalu bersihkan pembuat fungsi dan siapkan fungsi yang sebenarnya di bawah.
Kemudian siapkan fungsi kustom:
Informasi Dasar:
- Nama:
check_shopify_order - Deskripsi: “Mencari pesanan di sistem Shopify toko dan mengembalikan status, pelacakan, dan itemnya”
- Tindakan AI: “Panggil ini saat pelanggan bertanya tentang status pesanan atau pengiriman mereka. Selalu minta nomor pesanan terlebih dahulu.”
Koneksi:
- URL:
https://YOUR-STORE.myshopify.com/admin/api/2026-01/orders.json?status=any— gantiYOUR-STOREdengan nama.myshopify.comtoko (alamat ini menggunakan domain teknis Shopify, bukan domain kustom toko) - Metode: GET
Header:
X-Shopify-Access-Token:shpat_...(token dari atas)
Parameter Input:
name(query_param, wajib): “Nomor pesanan pelanggan persis seperti yang muncul di konfirmasi pesanan mereka, termasuk tanda # — contohnya #1001. Minta pelanggan untuk memberikannya jika mereka belum menyebutkannya.”
Tidak diperlukan pemetaan respons — bot membaca pesanan yang dikembalikan (status pembayaran, status pemenuhan, pelacakan, item) dan menjawab secara alami.
Perlu diketahui: token yang dibuat dengan cara ini dapat melihat pesanan dari 60 hari terakhir — cukup untuk pertanyaan dukungan sehari-hari, tetapi bukan riwayat pesanan lengkap.
Contoh Lengkap: Membuat Janji Temu
Informasi Dasar:
- Nama:
create_booking - Deskripsi: “Membuat janji temu baru di sistem pemesanan kami”
- Tindakan AI: “Gunakan ini setelah mengonfirmasi tanggal, waktu, dan detail kontak dengan pelanggan. Jangan panggil sebelum pelanggan secara eksplisit mengonfirmasi bahwa mereka ingin memesan.”
Koneksi:
- URL:
https://booking.mycompany.com/api/appointments - Metode: POST
Parameter Input:
date(teks, wajib): “Tanggal janji temu dalam format YYYY-MM-DD”time(teks, wajib): “Waktu janji temu dalam format HH:MM”name(teks, wajib): “Nama lengkap pelanggan”phone(teks, wajib): “Nomor telepon pelanggan”service_type(teks, wajib): “Jenis layanan yang dipesan”
Contoh Lengkap: Menambahkan Pelanggan Newsletter ke CRM Anda
Pola yang sangat umum: bot selesai menjawab, menawarkan newsletter Anda, kontak membalas dengan alamat email mereka, dan alamat tersebut harus langsung masuk ke alat email Anda. Sebagian besar CRM (FluentCRM, ActiveCampaign, MailerLite, Brevo, dan lainnya) menerima POST sederhana untuk hal ini, sehingga tidak diperlukan platform otomatisasi di antaranya.
Contoh ini menggunakan FluentCRM di WordPress. Bentuknya sama untuk alat lain apa pun yang memberi Anda “webhook masuk” atau titik akhir “buat pelanggan”.
Pertama, dapatkan URL dari CRM Anda. Di WordPress, buka FluentCRM → Pengaturan → Webhook Masuk dan buat webhook. Pilih daftar, tag, dan status langganan yang harus didapatkan kontak baru, lalu salin URL webhook yang dihasilkannya. Apa pun yang Anda atur di sini akan diterapkan secara otomatis, jadi bot hanya perlu mengirim alamat email.
Kemudian siapkan fungsi kustom:
Informasi Dasar:
- Nama:
add_newsletter_subscriber - Deskripsi: “Menambahkan seseorang ke daftar newsletter kami menggunakan alamat email yang mereka berikan di obrolan”
- Tindakan AI: “Gunakan ini saat kontak setuju untuk berlangganan newsletter dan memberikan alamat email mereka. Jangan panggil sebelum mereka benar-benar memberikan alamat, dan jangan panggil dua kali untuk orang yang sama.”
Koneksi:
- URL: URL webhook yang Anda salin dari CRM Anda
- Metode: POST
Parameter Input:
email(string, wajib): “Alamat email yang diberikan kontak dalam percakapan”first_name(string, opsional): “Nama depan kontak, jika mereka menyebutkannya”
Lewati Data Sistem: aktifkan ini. CRM Anda hanya memerlukan kolom di atas, dan payload yang lebih ramping menghindari kesalahan dari alat yang menolak kolom yang tidak terduga.
Pemetaan respons: tidak diperlukan di sini. Tidak ada yang perlu dikembalikan agar bot dapat melanjutkan.
Jangan lupa untuk mengaktifkan fungsi untuk Agen yang menjalankan percakapan (lihat Menetapkan Fungsi ke Agen). Ini adalah alasan paling umum mengapa fungsi yang dibuat dengan benar tidak pernah berjalan.
Tips: bot juga memiliki alat Perbarui Email Kontak bawaan, yang menyimpan alamat ke catatan kontak di dalam platform. Itu terpisah dari fungsi ini, dan berguna jika digunakan bersamaan — alat bawaan menjaga catatan kontak Anda tetap lengkap, fungsi kustom mendorong alamat tersebut ke CRM Anda.
Tips untuk Fungsi Kustom yang Andal
-
Pastikan permintaan berulang aman. Jika permintaan yang sama tidak sengaja dikirim dua kali, hal itu tidak boleh membuat catatan duplikat. Gangguan jaringan terkadang dapat menyebabkan hal ini.
-
Berikan pesan kesalahan yang jelas. Jika terjadi masalah pada sisi sistem Anda, berikan kesalahan yang dapat dibaca manusia. Bot akan menyampaikannya kepada pelanggan dengan baik.
-
Jaga waktu respons di bawah 10 detik. Jika sistem Anda membutuhkan waktu lebih lama, pertimbangkan untuk memberikan konfirmasi cepat terlebih dahulu.
-
Tangani kredensial yang kedaluwarsa atau tidak valid. Jika kunci API Anda kedaluwarsa, pastikan pesan kesalahannya jelas agar bot tahu untuk memberi tahu manusia alih-alih mencoba lagi.
-
Tulis deskripsi yang mendetail. AI menggunakan deskripsi Anda untuk menentukan kapan harus memanggil fungsi dan cara mengekstrak informasi yang tepat dari percakapan. Deskripsi yang samar akan menyebabkan kesalahan.
-
Uji dengan percakapan nyata. Coba (Try Out) sangat bagus untuk pengujian awal, tetapi pantau beberapa percakapan langsung pertama Anda untuk memastikan semuanya berfungsi dengan kueri pelanggan yang sebenarnya.
-
Simpan log di sisi Anda. Minta pengembang Anda untuk mencatat permintaan yang datang dari aplikasi agar Anda dapat dengan cepat men-debug masalah apa pun.
-
Jika firewall Anda memerlukan daftar izin IP, setiap panggilan fungsi kustom (dan setiap pemeriksaan tindak lanjut) dikirim dari satu alamat IPv4 tetap, alamat yang sama dengan yang digunakan webhook kami; tidak ada rentang, tidak ada IPv6, tidak ada rotasi. Hubungi dukungan dan kami akan memberikan alamat tersebut kepada Anda. Aktifkan penandatanganan permintaan dan periksa tanda tangannya sebagai pemeriksaan kepercayaan Anda yang sebenarnya, dan perlakukan IP tersebut sebagai filter tambahan.
-
Gunakan URL akhir publik. URL fungsi Anda harus berupa alamat web (HTTP/HTTPS) publik. Alamat internal, localhost, dan jaringan pribadi akan ditolak demi keamanan, dan platform tidak mengikuti pengalihan — arahkan fungsi ke URL akhir secara langsung, bukan ke URL yang mengalihkan ke URL tersebut.
Pekerjaan yang berjalan lama: dapatkan hasil nanti
Biasanya fungsi kustom harus menjawab dalam waktu 30 detik, sementara kontak menunggu balasan. Beberapa pekerjaan membutuhkan waktu lebih lama dari itu: merender video, menjalankan pemeriksaan kredit, menunggu seseorang di pihak Anda untuk menyetujui sesuatu. Untuk pekerjaan tersebut, aktifkan Hasil muncul nanti (berjalan lama). Panggilan AI kemudian hanya memulai pekerjaan tersebut. Layanan Anda menjawab seketika, AI memberi tahu kontak bahwa hasilnya sedang diproses dan melanjutkan percakapan, dan layanan Anda mengirimkan hasilnya ke tautan panggilan balik kapan pun pekerjaan selesai.
Kapan menggunakannya
Gunakan saat layanan Anda tidak dapat menjawab dengan andal dalam waktu 30 detik. Biarkan nonaktif untuk pencarian cepat (status pesanan, pemeriksaan stok, harga): hal tersebut lebih sederhana sebagai panggilan normal, karena AI menjawab dengan hasil dalam balasan yang sama.
Pengaturan di editor
Anda dapat menemukannya di editor fungsi kustom, di sebelah Lewati Data Sistem.
| Pengaturan | Apa fungsinya |
|---|---|
| Hasil muncul nanti (berjalan lama) | Mengubah fungsi menjadi sinyal mulai. Layanan Anda memiliki 30 detik untuk menjawab panggilan pertama (status 2xx apa pun, isi diabaikan), lalu hingga Tunggu hingga untuk mengirim hasil. |
| Saat hasil tiba | AI menulis pesan berikutnya (default): AI membaca hasil dan menulis pesan berikutnya dengan suaranya sendiri, mengikuti Tujuan (Tindakan AI) fungsi tersebut. Kirim teks apa adanya: teks yang Anda kirimkan akan dikirim ke kontak kata demi kata. |
| Tunggu hingga | Berapa lama tautan panggilan balik tetap valid, dalam jam, dari 1 hingga 168 (7 hari). Defaultnya adalah 24. |
Apa yang diterima layanan Anda
Dengan tombol aktif, setiap panggilan membawa tautan panggilan balik di tiga tempat, di atas semua yang dijelaskan di atas (parameter input Anda, blok system, dan header penandatanganan):
| Di mana | Apa yang dikandungnya |
|---|---|
Header X-Callback-Url |
Tautan panggilan balik. |
Bidang isi callback_url |
Tautan yang sama, untuk POST, PUT, PATCH, dan DELETE. Untuk GET dan HEAD, ini adalah parameter kueri bernama callback_url. |
system.callback_url dan system.callback_expires_at |
Tautan, dan kapan tautan tersebut kedaluwarsa (tanggal dan waktu ISO 8601). Dihilangkan saat Lewati Data Sistem aktif. |
Tautan tersebut unik untuk setiap panggilan, milik kontak dan panggilan tersebut, berfungsi satu kali, dan kedaluwarsa setelah Tunggu hingga. Anda tidak memerlukan kunci API untuk menggunakannya: tautan itu sendiri adalah izinnya. Perlakukan seperti kata sandi dan jangan pernah menulisnya ke log publik.
Mengirim hasil
Saat pekerjaan selesai, kirim POST ke tautan panggilan balik:
POST https://api.<your host>/v1/custom-functions/callback/d3f9...
Content-Type: application/json
{
"result": { "video_url": "https://cdn.example.com/spring-offer.mp4", "duration_seconds": 42 },
"message": "Your video is ready: https://cdn.example.com/spring-offer.mp4"
}
resultadalah apa yang dibaca oleh AI. Ini bisa berupa teks atau objek JSON.messagebersifat opsional. Dengan Kirim teks apa adanya, kontak menerimamessagesaat Anda mengirim satu, jika tidak, mereka menerimaresultsaat berupa teks.media_urlbersifat opsional: tautanhttpske file (gambar, video, audio, atau dokumen) yang diterima kontak sebagai lampiran nyata, bukan sebagai tautan. Lihat Mengirim file di bawah.- Anda juga dapat mengirim isi teks biasa dengan
Content-Type: text/plain. Ini diperlakukan sebagairesult. - Isi pesan bisa mencapai 64 KB.
Apa yang dijawab oleh tautan callback:
| Status | Isi | Arti |
|---|---|---|
202 |
{"ok":true,"received":true} |
Hasil telah diterima. |
200 |
{"ok":true,"duplicate":true} |
Tautan ini sudah menerima hasil. Tidak ada yang terjadi untuk kedua kalinya, jadi mencoba lagi selalu aman. |
400 |
Isi tidak valid. | |
404 |
Tautan tidak dikenal. Periksa apakah Anda menggunakan tautan yang tepat dari permintaan. | |
410 |
Tautan kedaluwarsa. AI sudah diberitahu bahwa hasil tidak pernah datang. | |
413 |
Isi lebih besar dari 64 KB. | |
429 |
Lebih dari 20 kiriman dalam satu menit ke tautan yang sama. Tunggu dan coba lagi. |
Contoh lengkap: video yang memakan waktu tiga menit
- AI memanggil fungsi Anda. Anda menerima (disingkat):
POST https://api.example.com/render
X-Callback-Url: https://api.<your host>/v1/custom-functions/callback/d3f9...
Content-Type: application/json
{
"video_title": "Spring offer",
"callback_url": "https://api.<your host>/v1/custom-functions/callback/d3f9...",
"system": {
"contactId": "...",
"callback_url": "https://api.<your host>/v1/custom-functions/callback/d3f9...",
"callback_expires_at": "2026-10-20T19:15:00.000Z"
}
}
- Layanan Anda memulai proses render dan langsung menjawab:
{ "status": "started" }
- AI memberi tahu kontak bahwa video sedang dibuat dan terus mengobrol.
- Tiga menit kemudian, layanan Anda mengirimkan hasil ke tautan callback:
{ "result": { "video_url": "https://cdn.example.com/spring-offer.mp4", "duration_seconds": 42 } }
- AI menulis pesan berikutnya dengan kata-katanya sendiri, misalnya “Video Anda sudah siap: https://cdn.example.com/spring-offer.mp4”.
Menggunakan Zapier atau Make? Biarkan webhook pemicu menerima panggilan, dan jadikan langkah terakhir alur tersebut sebagai POST ke callback_url dari data pemicu.
Apa yang terjadi di dalam obrolan
Hasil disimpan dalam percakapan sebagai entri fungsi, sehingga Anda melihatnya di kotak masuk seperti panggilan fungsi kustom lainnya. Kemudian, tergantung pada Saat hasil tiba, AI menulis dan mengirim pesan berikutnya (ini memakan satu balasan AI, seperti pesan AI lainnya), atau teks Anda dikirim apa adanya. Dengan Kirim teks apa adanya, kolom message dikirim saat Anda menyertakannya, jika tidak, result saat berupa teks biasa; jika Anda hanya mengirim objek tanpa teks, AI akan menulis pesannya sebagai gantinya.
Jika AI dimatikan untuk kontak tersebut saat hasil tiba (anggota tim mengambil alih, AI dijeda, agen tidak aktif, atau kehabisan kredit), hasil tetap disimpan dalam percakapan, tetapi tidak ada pesan yang dikirim. Hasil tersebut juga tidak dikirim nanti saat AI diaktifkan kembali. Anggota tim melihat hasil tersebut di obrolan dan dapat menggunakannya.
Di tab Coba agen, seluruh alur juga berfungsi: hasil tiba di obrolan pengujian.
Mengirim file (video, gambar, PDF)
Hasil berupa file, misalnya video yang dirender oleh layanan Anda di latar belakang, akan sampai ke kontak sebagai lampiran yang dapat mereka buka di obrolan, dalam kedua mode tersebut. Platform menemukan file dalam callback Anda seperti ini:
media_urldi dalam isi pesan, saat Anda mengirim satu.- Jika tidak, bidang file pada objek
result:file_url,video_url,image_url,pdf_url,document_url,audio_url,attachment_urlataudownload_url. - Jika tidak, tautan
httpspertama dalam teks yang diakhiri dengan ekstensi file seperti.mp4,.jpg,.pngatau.pdf.
Dengan AI menulis pesan berikutnya, AI menulis teks dan file dilampirkan ke pesan tersebut (AI diberitahu untuk tidak menempelkan tautan). Dengan Kirim teks apa adanya, message Anda menjadi keterangan (caption) dari lampiran tersebut.
{
"result": { "status": "done", "title": "Spring offer" },
"message": "Your video is ready.",
"media_url": "https://cdn.example.com/spring-offer.mp4"
}
File dapat berukuran hingga 16 MB dan harus dapat diakses melalui https. Setiap saluran membawa jenis yang berbeda: misalnya, saluran email dan WhatsApp menerima video, gambar, audio, dan dokumen, sedangkan SMS tidak mendukung file. Jika suatu saluran tidak dapat menerima file, atau file terlalu besar, kontak tetap menerima pesan tersebut, dengan tautan ke file ditambahkan di bagian akhir.
Saat hasil tidak pernah tiba
Jika tidak ada yang dikirim sebelum Tunggu hingga habis, AI diberitahu bahwa hasil tidak pernah datang, sehingga AI dapat memberi tahu kontak. Entri dengan kode APP-3103 muncul di bawah Pengaturan → Log kesalahan, dan Anda mendapatkan notifikasi kesalahan alat.
Sekilas tentang batasan
- Satu hasil per tautan callback. Postingan berikutnya ke tautan yang sama akan dijawab sebagai duplikat dan tidak mengubah apa pun.
- Hingga 64 KB per hasil.
- Satu file per hasil, hingga 16 MB, melalui
https. - Hingga 20 postingan per menit ke satu tautan.
- Tunggu hingga dari 1 sampai 168 jam.
- Layanan Anda tetap memiliki waktu 30 detik untuk menjawab panggilan pertama.
Memverifikasi Bahwa Panggilan Benar-benar Berasal dari Kami
Siapa pun yang mengetahui URL fungsi Anda dapat mengirimkan permintaan palsu permintaan palsu permintaan palsu. Rahasia panjang di header autentikasi memang membantu, tetapi nilainya sama pada setiap panggilan, sehingga siapa pun yang melihat satu permintaan (dalam log atau tangkapan layar) dapat menggunakannya kembali. Penandatanganan permintaan memperbaiki hal tersebut: setiap panggilan membawa tanda tangan yang hanya dapat dibuat oleh seseorang yang memegang rahasia Anda, dan tanda tangan tersebut kedaluwarsa setelah beberapa menit.
Penandatanganan bersifat opsional dan dinonaktifkan secara default, dan ini merupakan satu pengaturan untuk seluruh akun Anda: satu rahasia menandatangani setiap fungsi kustom.
Mengaktifkan penandatanganan
- Buka Custom Functions.
- Di bawah daftar fungsi Anda, temukan kartu Request signing dan klik Turn on signing.
- Klik Show, salin rahasianya (diawali dengan
whsec_) dan simpan di sistem yang menerima panggilan tersebut. Perlakukan seperti kata sandi.
Dari kartu yang sama, Anda dapat menyalin rahasia lagi, Merotasi (yang lama akan langsung berhenti berfungsi), atau Mematikan penandatanganan.
Apa yang kami kirimkan
Setelah penandatanganan aktif, setiap panggilan yang dilakukan fungsi kustom membawa dua header tambahan: panggilan AI selama obrolan, kondisi pengiriman tindak lanjut, dan tombol Run Test di editor.
| Header | Arti |
|---|---|
X-Webhook-Signature |
Tanda tangan, dalam bentuk v1=<hex>. |
X-Webhook-Timestamp |
Kapan kami mengirimnya, sebagai stempel waktu Unix dalam detik. |
Setiap panggilan, baik yang ditandatangani maupun tidak, juga membawa User-Agent: Custom-Function/1.0 kecuali Anda menetapkan header User-Agent Anda sendiri.
Header dan tanda tangan bekerja persis seperti webhook yang ditandatangani, jadi jika Anda sudah memverifikasi webhook kami, kode yang sama akan berfungsi di sini. Hanya rahasianya yang berbeda.
Cara memverifikasi
Tanda tangan tersebut adalah HMAC-SHA256 dari string <timestamp>.<raw request body>, menggunakan rahasia penandatanganan Anda sebagai kuncinya. Periksa terhadap body mentah (raw), yaitu byte yang tepat yang Anda terima: mengurai JSON dan mengubahnya kembali menjadi teks dapat mengubah byte tersebut, dan tanda tangan tidak akan cocok.
Fungsi yang menggunakan GET (atau POST tanpa data untuk dikirim) tidak memiliki body, jadi string yang ditandatangani hanyalah <timestamp>. dengan body kosong. Tanda tangan kemudian membuktikan bahwa panggilan tersebut berasal dari kami dan baru saja dilakukan, tetapi tidak mencakup string kueri.
Contoh Node.js:
const crypto = require("crypto");
function verify(rawBody, headers, secret) {
const timestamp = headers["x-webhook-timestamp"];
const signature = headers["x-webhook-signature"] || ""; // "v1=<hex>"
// Reject anything older than 5 minutes so a captured request can't be replayed later.
if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false;
const expected = crypto.createHmac("sha256", secret).update(`${timestamp}.${rawBody}`).digest("hex");
const received = signature.replace("v1=", "");
return received.length === expected.length && crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));
}
Contoh Python:
import hashlib, hmac, time
def verify(raw_body: bytes, headers, secret: str) -> bool:
timestamp = headers.get("X-Webhook-Timestamp", "")
signature = headers.get("X-Webhook-Signature", "").replace("v1=", "")
if not timestamp or abs(time.time() - int(timestamp)) > 300:
return False
expected = hmac.new(secret.encode(), f"{timestamp}.".encode() + raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(signature, expected)
Uji dengan Run Test di editor: setelah penandatanganan aktif, panggilan uji ditandatangani persis seperti panggilan langsung, sehingga fungsi yang lulus uji juga akan lulus pemeriksaan Anda selama obrolan nyata.
Menggunakan API? Rahasia yang sama dapat dibaca, dibuat atau dirotasi, dan dihapus dengan
GET,POSTdanDELETEpada/v1/custom-functions/signing-secret.
Batasan Eksekusi
Setiap fungsi kustom memiliki bagian Batasan eksekusi opsional di bagian bawah editor. Bagian ini mengontrol seberapa sering AI dapat menjalankan fungsi tersebut, dan apakah hasil sebelumnya dapat digunakan kembali. Semuanya di sini bersifat opsional — biarkan semuanya kosong dan fungsi akan berperilaku persis seperti sebelumnya.
Fungsi baca-saja (read-only). Aktifkan ini jika fungsi Anda hanya membaca data — seperti pencarian stok, pengecekan harga, atau pencarian status pesanan — dan tidak pernah membuat atau mengubah apa pun. Ketika gangguan jaringan sementara menginterupsi AI di tengah balasan, platform dapat dengan aman mencoba kembali giliran percakapan tersebut alih-alih membiarkan pelanggan tanpa jawaban. Hanya aktifkan ini jika fungsi tersebut benar-benar tidak pernah menulis apa pun: fungsi yang membuat catatan harus tetap nonaktif, agar percobaan ulang tidak pernah secara tidak sengaja menjalankannya dua kali. Fungsi yang menggunakan metode GET diperlakukan sebagai baca-saja secara otomatis, karena permintaan GET ditujukan hanya untuk mengambil data; fungsi POST, PUT, PATCH, dan DELETE memerlukan tombol ini.
Sajikan hasil cache pada panggilan berulang. Saat AI memanggil fungsi lagi dengan input yang sama (misalnya, pelanggan menanyakan pertanyaan yang sama dua kali), hasil sebelumnya akan digunakan kembali alih-alih memanggil endpoint Anda lagi. Hasil cache disimpan hingga 24 jam, dan panggilan dengan input yang berbeda akan selalu menuju ke endpoint Anda secara baru.
Maksimal eksekusi per percakapan. Batas keras mengenai berapa kali fungsi dapat berjalan dalam satu percakapan. Atur ke 1 untuk fungsi yang hanya boleh dijalankan sekali per obrolan — membuat penawaran, memicu panggilan balik, memulai otomatisasi. Saat batas tercapai, AI akan diberitahu bahwa fungsi tersebut sudah berjalan dan diberikan hasil terbaru, sehingga AI tetap dapat menjawab pelanggan alih-alih diam.
Maksimal eksekusi per jendela waktu. Batas laju sepanjang waktu: misalnya, maksimal 5 kali eksekusi dalam 60 menit. Berguna untuk fungsi yang memanggil layanan pihak ketiga berbayar atau memicu otomatisasi yang lebih berat. Kedua kotak harus diisi bersamaan (jumlah eksekusi dan jendela waktu dalam menit, hingga 7 hari).
Mengirim penawaran, kontrak, atau faktur di LinkedIn. Saat AI membalas di LinkedIn, AI menulis dari kotak masuk pemilik akun itu sendiri, jadi AI tidak boleh mengirim penawaran, kontrak, kutipan, faktur, tautan pembayaran, atau akses atas nama pemilik kecuali jika pemilik menginstruksikannya. Dengan Otomatis (pengaturan default), fungsi yang nama atau deskripsinya menyatakan bahwa fungsi tersebut mengirim salah satu hal di atas tidak akan dijalankan di LinkedIn: AI akan diberi tahu bahwa tidak ada yang dikirim dan memberi tahu orang tersebut bahwa pemilik akan menanganinya. Pilih Diizinkan untuk tetap membiarkan fungsi tersebut berjalan di LinkedIn, atau Jangan pernah di LinkedIn untuk menahan fungsi yang mungkin terlewat oleh pemeriksaan otomatis. Saluran lain tidak terpengaruh, dan tidak seperti batasan di atas, pengaturan ini juga berlaku di Uji Coba.
Beberapa hal yang perlu diketahui:
- Batasan hanya menghitung eksekusi yang berhasil. Panggilan yang gagal di sisi endpoint Anda tidak akan menghabiskan kuota.
- Saat eksekusi diblokir oleh batasan, pelanggan tidak akan pernah digantung — AI akan diberitahu alasannya dan bekerja dengan informasi yang sudah dimilikinya.
- Batasan berlaku di mana pun fungsi dijalankan: obrolan reguler di setiap saluran, dan fungsi yang dikelola oleh otomatisasi. Percakapan uji coba di Try Out tidak dihitung dan tidak dibatasi.
Alat Bot Bawaan
Selain fungsi kustom yang Anda buat sendiri, platform ini dilengkapi dengan pustaka alat bawaan yang dapat digunakan bot AI selama percakapan. Alat-alat ini mencakup hal-hal paling umum yang perlu dilakukan bot — memberi tahu rekan tim, membuat janji temu, menandai kontak, mencari di situs web Anda, menjadwalkan tindak lanjut, dan banyak lagi — sehingga Anda tidak perlu menyiapkannya dari awal.
Bot memutuskan kapan harus menggunakan setiap alat berdasarkan apa yang terjadi dalam percakapan dan bagaimana Agen Anda dikonfigurasi. Sebagian besar alat ini aktif secara otomatis saat fitur terkait diaktifkan (misalnya, alat pemesanan hanya tersedia setelah Anda menghubungkan kalender dan mengaktifkan pemesanan).
Biaya kredit: Setiap panggilan alat ditagihkan berdasarkan tingkat Kualitas AI Agen Anda, dan fungsi kustom yang Anda buat sendiri ditagihkan dengan cara yang sama:
| Tingkat Kualitas AI | Kredit per panggilan alat | Dengan kunci Anthropic Anda sendiri (BYOK) terhubung |
|---|---|---|
| Pro | 1 kredit | 0 kredit — berjalan menggunakan kunci Anda |
| Ekonomi (tidak digunakan lagi) | 0,5 kredit | 0 kredit — berjalan menggunakan kunci Anda |
| Maks | 0,25 kredit | tetap 0,25 kredit, ditagihkan meskipun kunci Anda sendiri terhubung |
| Mini | 0,15 kredit | tetap 0,15 kredit, ditagihkan meskipun kunci Anda sendiri terhubung |
Alat Tim & Tugas
| Alat | Apa Fungsinya | Kapan Bot Menggunakannya |
|---|---|---|
| Peringatkan Anggota Tim | Menjeda bot untuk kontak ini dan mengirim email ke tim Anda bahwa bantuan manusia diperlukan. Obrolan ditandai agar rekan tim dapat mengambilnya. | Saat pelanggan meminta bantuan manusia, merasa frustrasi, atau menanyakan sesuatu yang tidak diizinkan atau tidak dapat dijawab oleh bot. |
| Buat Tugas | Membuat tugas baru di papan tugas Anda, yang secara opsional ditautkan ke kontak dan percakapan. Bot terus membalas seperti biasa — tugas tersebut hanyalah catatan bagi tim Anda untuk menindaklanjuti. | Untuk item yang tidak mendesak seperti permintaan fitur, peluang peningkatan penjualan, atau panggilan balik yang harus ditangani tim nanti. |
| Sarankan Pembaruan FAQ | Saat bot menemukan pertanyaan yang tidak dapat dijawab dengan baik, bot membuat tugas yang meminta tim Anda untuk menambahkan jawaban ke basis pengetahuan. | Saat kontak menanyakan sesuatu yang tidak tercakup dalam FAQ Anda yang ada — sehingga kesenjangan tersebut diperbaiki untuk waktu berikutnya. |
| Tambahkan Konteks ke Saran FAQ | Jika kontak lain kemudian menanyakan pertanyaan serupa dengan sudut pandang berbeda, bot menambahkan konteks tersebut ke saran FAQ yang ada alih-alih membuat tugas duplikat. | Otomatis — menjaga daftar tugas Anda tetap rapi saat beberapa orang mengangkat kesenjangan pengetahuan yang sama. |
Alat Kontak
| Alat | Apa Fungsinya | Kapan Bot Menggunakannya |
|---|---|---|
| Penandaan (Tagging) | Berjalan secara otomatis setelah setiap balasan bot — ini bukan alat yang diputuskan untuk dipanggil oleh bot yang berhadapan dengan pelanggan. Sistem meninjau percakapan terbaru dan menerapkan tag yang relevan, menggunakan kembali tag Anda yang ada jika memungkinkan (dan hanya membuat yang baru jika diperlukan). | Otomatis — kapan pun percakapan mengungkapkan sesuatu yang layak untuk disegmentasi, seperti minat, niat, kualitas prospek, atau bahasa. |
| Perbarui Nama Kontak | Menyimpan nama depan dan/atau nama belakang kontak saat mereka membagikannya. | Saat pelanggan memperkenalkan diri atau mengoreksi nama. |
| Perbarui Email Kontak | Menyimpan alamat email kontak saat mereka membagikannya. | Saat pelanggan memberikan email — untuk buletin, tanda terima, pencarian akun, dll. |
Alat Janji Temu & Pemesanan
Alat-alat ini hanya tersedia jika pemesanan diaktifkan pada Agen Anda, dan jenis acara kalender telah dikonfigurasi.
| Alat | Fungsi | Kapan Bot Menggunakannya |
|---|---|---|
| Periksa Slot Waktu Tersedia | Mencari waktu yang terbuka di kalender Anda yang terhubung untuk tanggal atau rentang tanggal tertentu. | Saat pelanggan ingin memesan dan bot perlu menawarkan ketersediaan yang nyata. |
| Buat Janji Temu | Membuat janji temu di kalender Anda dan mengonfirmasi pemesanan kembali kepada pelanggan. | Setelah pelanggan mengonfirmasi tanggal dan waktu tertentu. |
| Pindahkan Janji Temu | Menjadwalkan ulang janji temu yang sudah ada ke tanggal dan waktu baru. | Saat pelanggan meminta untuk menjadwalkan ulang. |
| Batalkan Janji Temu | Membatalkan janji temu yang sudah ada. | Saat pelanggan meminta untuk membatalkan. |
| Cari Janji Temu | Menarik janji temu pelanggan yang sudah ada agar bot mengetahui apa yang sudah terdaftar. | Saat pelanggan bertanya “kapan janji temu saya?” atau sebelum menawarkan untuk menjadwalkan ulang. |
Alat Pengetahuan & Web
| Alat | Apa Fungsinya | Kapan Bot Menggunakannya |
|---|---|---|
| Cari Situs Web Anda | Memindai URL yang telah Anda tambahkan ke daftar URL dinamis Agen untuk menemukan halaman produk, artikel, atau konten lain yang menjawab pertanyaan pelanggan. Tersedia hanya jika Pencarian Web AI diaktifkan dan Anda telah menambahkan setidaknya satu URL Dinamis. Jika Pencarian Web AI dimatikan, bot tidak dapat membaca halaman atau tautan — bahkan yang ditempelkan pelanggan ke dalam obrolan. | Saat pelanggan bertanya tentang sesuatu yang kemungkinan ada di situs web Anda — produk, harga, lokasi, kebijakan. |
| Periksa Tautan | Membaca konten URL tertentu agar bot dapat menjawab pertanyaan tentang halaman tersebut. Tersedia hanya jika Pencarian Web AI diaktifkan dan Anda telah menambahkan setidaknya satu URL Dinamis. Jika Pencarian Web AI dimatikan, bot tidak dapat membaca halaman atau tautan — bahkan yang ditempelkan pelanggan ke dalam obrolan. | Saat pelanggan membagikan tautan atau bertanya tentang halaman tertentu di situs Anda. |
| Cari di Web | Menjalankan pencarian Google publik dan menampilkan hasil teratas, sehingga bot dapat menjawab pertanyaan di luar konten Anda sendiri. | Saat pelanggan bertanya tentang sesuatu yang umum (misalnya, petunjuk arah, info publik) yang tidak ada dalam basis pengetahuan Anda. Hanya digunakan jika pencarian web diaktifkan. |
Alat Tindak Lanjut
Alat-alat ini memerlukan tindak lanjut (follow-up) untuk diaktifkan pada Agen Anda.
| Alat | Kegunaan | Kapan Bot Menggunakannya |
|---|---|---|
| Jadwalkan Tindak Lanjut Cerdas | Menjadwalkan pesan tindak lanjut cerdas menggunakan urutan tindak lanjut Anda — memilih templat dan waktu yang tepat berdasarkan percakapan. | Saat pelanggan tidak merespons atau meminta bot untuk “memeriksa kembali nanti.” |
| Jadwalkan Tindak Lanjut | Menjadwalkan tindak lanjut dasar pada waktu tertentu. | Saat bot perlu mendorong percakapan ke depan pada momen yang ditentukan. |
Penjalankan Fungsi Kustom
| Alat | Apa Fungsinya | Kapan Bot Menggunakannya |
|---|---|---|
| Jalankan Fungsi Kustom | Menjalankan salah satu fungsi kustom yang telah Anda buat dan tetapkan ke Agen (lihat bagian lain di halaman ini). | Saat permintaan pelanggan sesuai dengan tujuan salah satu fungsi kustom Anda. |
| Kirim File dari Hasil Alat | Mengirim gambar, video, file audio, atau dokumen yang tautannya berasal dari salah satu fungsi kustom atau server MCP Anda sebagai lampiran nyata, alih-alih menempelkan tautannya. Tersedia saat agen memiliki setidaknya satu fungsi kustom atau server MCP. | Saat hasil alat berisi file yang diminta untuk dilihat oleh kontak. Lihat File dari alat Anda sendiri. |
Alat Pemesanan Restoran (Zenchef dan Formitable)
Alat-alat ini hanya tersedia jika integrasi Zenchef atau Formitable terhubung. Alat ini memungkinkan bot mengelola reservasi restoran dari awal hingga akhir.
| Alat | Fungsi | Kapan Bot Menggunakannya |
|---|---|---|
| Periksa Ketersediaan Restoran | Mencari slot reservasi yang terbuka untuk tanggal, jumlah tamu, dan (opsional) area tempat duduk tertentu. | Saat tamu meminta untuk memesan meja. |
| Buat Pemesanan Restoran | Membuat reservasi baru. | Setelah tamu mengonfirmasi slot tertentu. |
| Perbarui Pemesanan Restoran | Mengubah tanggal, waktu, jumlah tamu, atau catatan pada reservasi yang sudah ada. | Saat tamu meminta untuk mengubah pemesanan mereka. |
| Batalkan atau Ubah Status Pemesanan | Membatalkan reservasi atau memperbarui statusnya (misalnya, dikonfirmasi, tidak datang). | Saat tamu membatalkan, atau saat bot perlu menandai perubahan status. |
| Cari Pemesanan | Menemukan reservasi yang ada yang cocok dengan kriteria seperti nama, email, atau tanggal. | Saat tamu yang kembali bertanya tentang reservasi yang sudah ada. |
| Perbarui Profil Tamu | Memperbarui profil tamu di sistem restoran (preferensi, catatan, info kontak). | Saat tamu membagikan preferensi diet, nomor telepon baru, atau info tingkat profil lainnya. |
| Daftar Produk Restoran | Menarik daftar menu, menu set, atau tambahan yang tersedia untuk dipesan. | Saat tamu bertanya “menu set apa yang Anda miliki?” atau bot perlu melampirkan menu ke reservasi. |
Mengaktifkan dan Menonaktifkan Alat
Sebagian besar alat dikontrol pada tab AI Abilities Agen:
- Alat pemesanan aktif saat Anda mengaktifkan pemesanan dan menghubungkan kalender, di kartu Pemesanan pada tab AI Abilities yang sama
- Alat tindak lanjut aktif saat Anda mengaktifkan tindak lanjut
- Alat restoran aktif saat Anda menghubungkan akun Zenchef atau Formitable
- Pencarian web memiliki tombol pengaktifan sendiri di tab FAQ & Pengetahuan
- Alat tugas dapat dimatikan per Agen dengan tombol Izinkan AI membuat tugas (aktif secara default; sakelar Tugas di seluruh akun di Pengaturan → Profil → Fitur mematikan seluruh sistem tugas di mana pun)
- Alat pembaruan kontak dikontrol pada tab AI Abilities yang sama — apakah AI boleh mengganti nama kontak atau menyimpan info tambahan yang dikumpulkan ke dalamnya
- Alat peringatan selalu tersedia; penandaan (tagging) berjalan otomatis setelah setiap balasan bot (ini bukan alat yang dipilih bot untuk dipanggil)
Jika Anda ingin bot berhenti menggunakan alat bawaan tertentu, cara paling bersih adalah dengan menonaktifkan fitur dasarnya (misalnya, matikan pemesanan untuk menonaktifkan semua alat pemesanan).
Fungsi yang Dikelola oleh Otomatisasi
Beberapa entri di halaman Fungsi Kustom Anda mungkin memiliki lencana Dikelola oleh otomatisasi. Entri tersebut tidak dibuat di sini — melainkan berasal dari otomatisasi dengan pemicu Fungsi Agen AI, yang memberikan kemampuan kepada agen Anda yang langkah-langkahnya Anda bangun secara visual di kanvas otomatisasi, alih-alih mengarahkannya ke alamat web luar.
Fungsi terkelola diurus untuk Anda: nama, deskripsi, dan kolomnya selalu mengikuti apa yang ditetapkan pada pemicu otomatisasi, sehingga fungsi tersebut tidak dapat diedit atau dihapus dari halaman ini — gunakan tautan Buka otomatisasi-nya dan ubah otomatisasi itu sendiri. Anda tetap dapat memilih agen mana yang memilikinya dengan cara biasa: pada tab Kemampuan AI milik agen, fungsi tersebut muncul bersama kemampuan agen lainnya dengan tombol aktif/nonaktif biasa (jika otomatisasinya dijeda, baris tersebut akan menunjukkannya — kemampuan akan aktif saat otomatisasi dinyalakan). Segala hal lain mengenainya berperilaku seperti fungsi kustom lainnya: AI memutuskan kapan harus memanggilnya, mengumpulkan detail yang Anda tentukan, dan dapat menggunakan balasan otomatisasi dalam percakapan yang sama.
Jika Anda memilih di antara keduanya: arahkan fungsi kustom reguler ke sistem yang sudah memiliki alamat untuk dipanggil; buat otomatisasi dengan pemicu Fungsi Agen AI jika pekerjaan tersebut adalah sesuatu yang lebih baik Anda susun dari langkah-langkah — mencari sesuatu di spreadsheet atau basis data, bercabang berdasarkan kondisi, membuat catatan — tanpa menjalankan server Anda sendiri. Lihat Otomatisasi.
Persyaratan Paket
Fungsi kustom tersedia pada paket yang menyertakan fitur fungsi kustom. Periksa langganan Anda untuk mengonfirmasi ketersediaan.
Langkah Selanjutnya
- Hubungkan Server MCP ke Bot Anda — sekumpulan alat siap pakai alih-alih satu fungsi dalam satu waktu.
- Agen AI — halaman utama grup AI Studio tempat Fungsi Kustom berada, dan tempat fungsi kustom ditetapkan ke bot.