Integrasi ini memungkinkan tim Anda untuk mengobrol dengan pelanggan melalui Saluran pesan apa pun melalui implementasi khusus.
Menghubungkan Saluran Kustom
Langkah 1: Buka Pengaturan > Saluran
Langkah 2: Klik Tambahkan Saluran > Saluran Kustom > Hubungkan
Langkah 3: Masukkan URL Webhook tujuan tempat pesan keluar akan dikirim.
Langkah 4: Pilih jenis ID untuk Saluran > klik Berikutnya
Jenis ID digunakan untuk identifikasi pengguna dan digunakan untuk berkomunikasi dengan server integrasi khusus Anda.
Ada dua jenis ID yang tersedia:
Nomor Telepon: Gunakan ini jika penyedia layanan pesan mengenali Kontak berdasarkan Nomor Telepon mereka.
Format contoh:
+60177872890
ID Kustom: Gunakan ini jika penyedia layanan pesan mengenali Kontak berdasarkan ID yang dibuat khusus.
Panjang karakter maksimum adalah 50.
AZ,az,0-9,_,=,+,/dan@diperbolehkan.
Langkah 5: Dialog berikut akan memberikanID Saluran,Token API, danURL Webhookmisalnya
ID Saluran:
gfd8g7fd89dgfdToken API:
aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasdTautan webhook:
https://app.respond.io/custom/channel/webhook/Menggunakan jenis ID Nomor Telepon memungkinkan Anda memulai percakapan dan mengirim pesan pertama ke Kontak.
Kirim Pesan ke respond.io
URL Webhookdigunakan untuk mengeposkanPesan,Gema Pesan, danTanda Terima Pesanke platform respond.io.
Kode yang disediakan akan memicu webhook pada respond.io, membuat Kontak jika perlu dan menyimpan pesan di bawah Kontak tersebut.
Contoh Pesan
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"message": {
"type": "text",
"text": "Halo Dunia"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"countryCode": "MY",
"email": "john@respond.io",
"phone": "+60177872890",
"language": "en"
}
}' Contoh untuk Pesan Gema
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message_echo",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"message": {
"type": "text",
"text": "Halo Dunia"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"countryCode": "MY",
"email": "john@respond.io",
"phone": "+60177872890",
"language": "en"
}
}' Contoh Tanda Terima Pesan
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'otorisasi: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message_status",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"status": {
"value": "terkirim|terkirim|terbaca|gagal",
"message": "Kesalahan: Pengiriman gagal karena token tidak valid"
}
}
\]
}'Bidang | Keterangan | Validasi |
|---|---|---|
idsaluran | ID Saluran Unik | Diperlukan. Bidang yang unik. Dihasilkan oleh respond.io. |
idkontak | ID Kontak Unik | Diperlukan. ID kontak respond.io yang unik. Maksimal 50 karakter. |
jenis acara | Jenis Acara | Diperlukan. Jenis yang tersedia: pesan, gema_pesan, dan status_pesan. |
acara.mld | ID Pesan | Diperlukan. ID pesan unik. Maksimal 50 karakter. |
peristiwa.stempel waktu | Waktu Epoch UNIX (milidetik) | Diperlukan. Waktu kejadian yang memicu panggilan balik. |
peristiwa.jenis.pesan | Tipe Pesan | Diperlukan. Jenis pesan yang tersedia: teks, lampiran, lokasi, dan balasan cepat. Lihat bagian Jenis Pesan untuk contoh jenis pesan lainnya. |
peristiwa.pesan.teks | Teks Pesan | Diperlukan. Panjang maksimal 7.000 karakter. |
peristiwa.status.nilai | Teks | Diperlukan jika event.type adalah message_status. Nilai status yang tersedia: terkirim, diterima, dibaca, dan gagal. |
acara.status.pesan | Teks | Diperlukan jika events.status.value gagal. |
kontak.namadepan | Nama depan | Opsional. Maksimal 50 karakter. |
kontak.namabelakang | Nama Belakang | Opsional. Maksimal 50 karakter. |
kontak.profilePic | URL Foto Profil | Opsional. Ukuran avatar tidak boleh lebih dari 100 kb. Direkomendasikan 720x720. |
kontak.lokal | Kode Lokal | Opsional. Lihat di sini untuk daftar nilai. |
kontak.kodenegara | Kode negara | Opsional. Kode negara 2 huruf - Kode ISO ALPHA-2. |
kontak.zonawaktu | Zona Waktu | Opsional. (min: -24) (maks: 24). |
kontak.email | Alamat Email | Opsional. Maksimal 50 karakter. |
kontak.telepon | Nomor telepon | Opsional. Maksimal 18 karakter. |
kontak.bahasa | Bahasa | Opsional. Standar ISO 639-1. |
Respons - Sukses (Status HTTP → 200)
"Oke"Menangani Pesan Keluar dari respond.io
respond.io akan memanggil titik akhir<API Base URL>/message
Pastikan Anda menerapkan kode Pesan Keluar pada rute
/messagedi server web Anda.
Berikut adalah contoh cURL dari respond.io yang memanggil titik akhir:
curl -X POST \\
/pesan \\
-H 'otorisasi: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"message": {
"type": "text",
"text": "Halo Dunia"
}
}' Respons - Sukses (Status HTTP → 200)
{
"menit": "1640141607842"
}Autentikasi perlu dilakukan di titik akhir sebelum mengirim pesan ke Penyedia Layanan Pesan.
Berikut adalah contoh penggunaan middleware Express untuk tujuan ini:
const {validationResult} = require('express-validator');
const validateToken = (req, res, next) => {
const apiToken = <>;
const bearerToken = req.headers.otorisasi;
if (!bearerToken)
return res.send(401);
const token = bearerToken.substring(7, bearerToken.length);
if (apiToken !== token) {
return res.send(401);
}
next();
};
module.exports = {
validateToken
}; Kami'telah menyertakan contoh Saluran Kustom yang dapat Anda uji di server Anda. Lihat proyek GitHub kami di sini.
Tipe Pesan
Contoh untuk Teks
{
"ketik": "teks",
"teks": "Selamat datang di respond.io",
}Bidang | Keterangan | Validasi |
|---|---|---|
jenis | Tipe Pesan | Diperlukan. teks |
teks | Teks Pesan | Diperlukan. Panjang maksimal 7.000 karakter. |
Contoh untuk File Media
{
"type": "lampiran",
"lampiran": {
"type": "gambar|video|audio|file",
"url": "https://abc/japan.png",
"mimeType": "image/png",
"fileName":"logo perusahaan.png",
"description": "logo perusahaan terkini"
}
}Bidang | Keterangan | Validasi |
|---|---|---|
jenis | Tipe Pesan | Diperlukan. lampiran. |
lampiran.jenis | Tipe Lampiran | Diperlukan. Jenis lampiran yang tersedia: gambar, video, audio dan berkas. |
lampiran.url | Alamat URL-nya | Diperlukan. Maksimal 2.000 karakter. Pastikan itu adalah tautan publik sehingga pengguna atau kontak dapat melihat kontennya. |
lampiran.mimeType | Tipe Mime dari Lampiran | Opsional |
lampiran.namafile | Nama Berkas | Opsional. Nama File harus menyertakan ekstensi. Maksimal 256 karakter (termasuk ekstensi file). Mengirim file tanpa ekstensi atau dengan ekstensi yang salah dapat menyebabkan kontak atau pengguna tidak dapat membuka file tersebut. |
lampiran.deskripsi | Deskripsi Berkas | Opsional. Maksimal 256 karakter. Hanya berlaku untuk attachment.type = image. |
Pastikan bahwa URL lampiran tidak dipaksa diunduh oleh browser Header respons HTTP's Content-Disposition seharusnya memiliki nilai default, yaitu inline.
Contoh untuk Lokasi
{
"type": "location",
"latitude": 0.123456,
"longitude": -0.1234,
"address": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"
}Bidang | Keterangan | Validasi |
|---|---|---|
jenis | Tipe Pesan | Diperlukan. lokasi. |
lintang | Koordinat | Diperlukan. Lintang (±90°) dalam rentang yang valid. |
garis bujur | Koordinat | Diperlukan. Bujur (±180°) dalam rentang yang valid. |
alamat | Lokasi Alamat | Opsional. Maksimal 256 karakter. |
Contoh untuk Balasan Cepat
{
"type": "quick_reply",
"title": "Pilih bahasa yang Anda inginkan",
"replies": [
"Bahasa Melayu",
"Bahasa Inggris"
]
}Bidang | Keterangan | Validasi |
|---|---|---|
jenis | Tipe Pesan | Diperlukan. balasan cepat. |
judul | Judul Balasan Cepat | Diperlukan. Maksimal 256 karakter. |
balasan | Teks Balasan | Diperlukan. Maksimal 10 balasan dengan maksimal 256 karakter untuk tiap balasan. |
Kode Kesalahan
Kesalahan (Status HTTP → 4xx)
Konfigurasi Saluran
Langkah 1: Klik Pengaturan > Saluran
Langkah 2: Temukan Saluran Kustom > klik Kelola
Langkah 3: Di halaman Konfigurasi Saluran Kustom Anda akan melihat konfigurasi berikut:
Ikon Saluran - Unggah gambar yang berfungsi sebagai ikon untuk Saluran Kustom Anda.
Nama Saluran - Nama Saluran dapat diubah dan digunakan secara internal untuk mengidentifikasi Saluran.
URL webhook untuk pesan keluar — URL webhook untuk pesan keluar ke Saluran ini.
URL webhook untuk pesan masuk — URL webhook untuk pesan masuk ke Saluran ini.
Jenis ID — Ini digunakan untuk identifikasi pengguna dan digunakan untuk berkomunikasi dengan server integrasi khusus Anda.
ID Saluran — ID Saluran Unik untuk mengidentifikasi Saluran Kustom Anda.
Token API — Pengidentifikasi unik yang digunakan untuk mengautentikasi pengguna untuk mengakses API.
Langkah 4: Klik Simpan Perubahan untuk memperbarui konfigurasi Saluran Kustom.
FAQ dan Pemecahan Masalah
Bisakah saya menghubungkan obrolan dari platform lain menggunakan Saluran Kustom?
Ya kamu bisa. Berikut tiga langkah yang harus diikuti:
Di respond.io, masukkan URL webhook tujuan dari platform lain ke dalam kolom URL webhook untuk pesan masuk .
Pada platform lain, siapkan URL webhook yang menunjuk ke respond.io, yang memungkinkan Kontak mengirimkan pesan kembali kepada Anda.
Anda'akan memerlukan Server Integrasi Kustom untuk menginterpretasikan API dari respond.io dan platform lainnya, yang memungkinkan pertukaran pesan di antara keduanya.
Pastikan untuk mengonfirmasi dengan platform lain bahwa dua langkah pertama dapat dilakukan.
FAQ untuk Webhook Saluran Kustom
Mengapa webhook mengembalikan status 200 meskipun pesan gagal terkirim ke respond.io?
Saat menghubungkan Saluran Kustom, pesan yang dikirim ke respond.io melalui webhook akan selalu segera mengembalikan kode status 200, terlepas dari apakah pesan tersebut berhasil diteruskan ke respond.io. Hal ini karena sifat webhook yang dirancang untuk mengembalikan respons langsung tanpa memverifikasi keberhasilan pengiriman pesan.