Halaman ini menunjukkan cara menggunakan endpoint chat seperti yang dijelaskan dalam Endpoint API platform chat.
Terminologi
Untuk memperjelas, berikut beberapa definisi yang penting untuk diingat saat menggunakan dokumen ini.
Pelanggan: Pelanggan Contact Center AI Platform (CCAI Platform) yang menerapkan API platform chat di software mereka.
Konsumen: Software yang membuat permintaan ke API platform chat.
Pengguna akhir: Pengguna software pelanggan yang mencoba melakukan chat dengan agen.
Autentikasi webhook
Chat platform API mengomunikasikan peristiwa yang terjadi selama percakapan kepada konsumen dengan mengirimkan permintaan webhook ke server konsumen. Payload dan jenis webhook ditentukan dalam spesifikasi API. Setiap permintaan webhook berisi dua header, X-Signature dan X-Signature-Timestamp.
X-Signature berisi tanda tangan webhook dengan format berikut:
primary=<primary_signature> secondary=<secondary_signature>
Tanda tangan utama dan sekunder adalah digest sha256 berenkode base64 dari secret webhook utama atau sekunder, dengan string gabungan dari header X-Signature-Timestamp dan payload json permintaan.
Berikut adalah contoh penerapan otorisasi untuk permintaan webhook di aplikasi Ruby on Rails contoh:
def authorize_webhook
# In a real consumer use case, these webhook secrets would be
# stored/retrieved along with other application secrets, however the application chooses to do that
primary_secret = @company.primary_webhook_secret
secondary_secret = @company..secondary_webhook_secret
signature_header = request.headers['X-Signature']
timestamp_header = request.headers['X-Signature-Timestamp']
if signature_header.present? && timestamp_header.present?
# Header will be in the format "primary=abcdefg12341234 secondary=qwertyuiop567890" if a tenant has both webhook
# secrets generated in Contact Center AI Platform, otherwise it will be in the format ""primary=abcdefg12341234"
primary_signature, secondary_signature = signature_header.scan(/primary=(.*)\ssecondary=(.*)/).flatten
# Optional: check age of request timestamp to protect against replays
# raise UnauthorizedException unless Time.now - timestamp_header.to_time < 1.minute
# String value of the request body JSON
payload = request.body.read
expected_primary_signature = Base64.strict_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::SHA256.new, primary_secret, "#{timestamp_header}#{payload}"))
expected_secondary_signature = Base64.strict_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::SHA256.new, secondary_secret, "#{timestamp_header}#{payload}"))
# Only one signature needs to be valid, this allows for easier rotation of secrets in the Contact Center AI Platform developer portal
if primary_signature == expected_primary_signature || primary_signature == expected_secondary_signature ||
secondary_signature == expected_primary_signature || secondary_signature == expected_secondary_signature
true
else
head :unauthorized
end
else
head :bad_request
end
end
Ringkasan
Secara umum, alur dasar percakapan API platform chat harus berjalan sebagai berikut. Poin-poin utama diberi nomor dan catatan disediakan untuk konteks tambahan. Perhatikan bahwa pelanggan hanya bertanggung jawab untuk menerapkan sisi "Pelanggan" dalam diagram, sementara Contact Center AI Platform menangani sisi sistem dan agen dalam diagram. Pencantuman mereka dalam diagram hanya dimaksudkan untuk memberikan konteks kepada pembaca tentang alur keseluruhan percakapan.

Membuat pengguna akhir
Chat memerlukan ID pengguna akhir yang valid saat dibuat, yang berarti pengguna akhir harus ada di sistem Contact Center AI Platform sebelum chat dibuat.
Pengguna akhir diidentifikasi secara unik berdasarkan atribut
identifiermereka, yang merupakan nilai string yang diberikan oleh konsumen. Pengguna akhir mungkin sudah ada di sistem jika mereka telah menggunakan SDK web atau seluler. EndpointPOST /end_usersdiimplementasikan sebagai upsert idempoten, sehingga jika pengguna akhir sudah ada, mencoba membuatnya lagi akan memperbarui data yang berubah dan menampilkan informasi pengguna akhir.
Membuat percakapan
Untuk membuat percakapan menggunakan Chat Platform API, ikuti langkah-langkah berikut:
Menangani payload chat baru: Proses inisialisasi chat terjadi secara asinkron dari permintaan
POST /chats. Oleh karena itu, peristiwachat_createddapat diterima sebelum atau setelah respons API dari endpoint pembuatanPOST /chats. Sebaiknya tangani peristiwachat_createddan respons API pembuatan chat dengan cara idempoten untuk menghindari bug di konsumen.Membuat percakapan dengan transkrip: API platform chat mendukung pembuatan percakapan dengan transkrip percakapan yang sudah ada, untuk skenario saat percakapan terjadi dalam platform pelanggan, misalnya, dengan chatbot, sebelum dikirim ke Contact Center AI Platform. Hal ini memberikan informasi tambahan tentang sesi chat kepada agen yang menjawab chat, dan membantu mencegah pengguna akhir mengulangi pertanyaan. Untuk format payload transkrip, lihat chat_platform_openapi.yaml.
Agen virtual pemilihan antrean
Untuk menyederhanakan pemilihan menu bagi konsumen API, API platform chat dirancang untuk digunakan bersama dengan agen virtual Dialogflow guna membantu penempatan dalam antrean untuk percakapan baru.
Langkah-langkah berikut harus dilakukan untuk menyiapkan agen virtual:
Buat agen virtual khusus untuk tujuan ini, dan tetapkan ke antrean. Semua chat baru yang dibuat oleh API platform chat harus dibuat dalam antrean ini. Membuat dan mengonfigurasi agen virtual baru berada di luar cakupan dokumen ini.
Saat membuat percakapan baru dengan endpoint POST atau chats, sertakan payload konteks kustom yang menyertakan beberapa konteks pada percakapan yang dibuat yang dapat digunakan agen virtual untuk menentukan antrean mana yang harus dituju percakapan tersebut. Payload konteks dapat berisi data kustom apa pun sebagaimana ditentukan oleh pelanggan, tetapi harus dalam format berikut agar data dapat diakses oleh agen virtual yang ditetapkan ke antrean.
- Contoh:
"context": {"value": {"foo": "bar" } }akan memungkinkan agen virtual membaca$session.params.context.foodengan nilaibar.
- Contoh:
Dengan menggunakan data yang ada di kolom konteks, agen virtual (berdasarkan cara pelanggan mengonfigurasinya) akan mengeskalasikan chat ke antrean yang dipilih. Jika tidak ada agen yang tersedia dalam antrean target (seperti skenario saat antrean berada di luar jam kerja atau melebihi kapasitas), eskalasi akan dialihkan, dan konsumen akan menerima webhook yang menunjukkan alasan pengalihan dan opsi pengalihan yang tersedia.
Pengalihan eskalasi: Eskalasi chat di dukungan API platform chat opsi pengalihan berikut, jika dikonfigurasi di portal Contact Center AI Platform:
Email: Minta pengguna akhir mengirim email ke dukungan dan mengakhiri chat. Saat pengguna akhir memilih opsi ini, setelah email dikirim, pelanggan harus menandai percakapan sebagai dialihkan dan diakhiri menggunakan endpoint
PATCH /chats/:iddengan parameter berikut di isi permintaan:"status": "finished" , "escalation_id": <id of escalation> ,dan"deflection_channel": "email"Lanjutkan dengan agen virtual: Secara teknis, ini adalah opsi pengalihan yang valid, tetapi tidak masuk akal untuk menggunakan VA pemilihan antrean karena VA hanya akan mencoba mengeskalasikan percakapan lagi.
Terus menunggu agen manusia: Opsi ini hanya dapat digunakan untuk eskalasi dengan alasan
over_capacity. Jika pengguna akhir memilih opsi ini, perbarui pengalihan eskalasi denganPATCH chats/:id/escalations/:id with deflection_channel=human_agent- Link pengalihan eksternal: Memperingatkan pengguna akhir bahwa memilih link
yang diberikan dalam pengalihan akan mengakhiri percakapan. Jika link dipilih, akhiri percakapan dan gunakan
external_linkuntuk parameterdeflection_channel
- Link pengalihan eksternal: Memperingatkan pengguna akhir bahwa memilih link
yang diberikan dalam pengalihan akan mengakhiri percakapan. Jika link dipilih, akhiri percakapan dan gunakan
Mengirim dan menerima pesan
Untuk mengirim atau menerima pesan, ikuti langkah-langkah berikut:
Konten teks: Untuk mengirim pesan teks, gunakan endpoint
POST /chats/:id/messageseperti yang ditentukan dalam dokumen API. Untuk menerima pesan, dengarkan peristiwa webhookmessage_received. Perhatikan bahwa konsumen API akan menerima peristiwamessage_receiveduntuk semua pesan yang dikirim menggunakan API, termasuk pesan yang dikirim oleh pengguna akhir.Konten Foto dan Video: Konten foto dan video dikirim dengan mengambil URL upload yang telah ditandatangani sebelumnya untuk layanan Cloud Storage yang dikonfigurasi dari Platform Contact Center AI, mengupload ke layanan penyimpanan, lalu mengirim URL penyimpanan dalam payload pesan ke Platform Contact Center AI.
Mengambil URL yang telah ditandatangani: Ambil URL upload yang telah ditandatangani dari Contact Center AI Platform menggunakan
POST /v1/chats/:chat_id/photos/uploadatauPOST /v1/chats/:chat_id/videos/upload endpoints. Endpoint ini menampilkan URL yang telah ditandatangani, beserta kumpulan kolom untuk diteruskan ke layanan penyimpanan saat mengupload file. Upload yang telah ditandatangani memiliki batasan berikut:Content-Type adalah
image/jpeguntuk foto,video/mp4untuk video.Ukuran foto maksimum adalah 2 MB. Ukuran video maksimum adalah 20 MB.
Waktu habis masa berlaku adalah 5 menit.
Klien harus mengubah ukuran dan menyesuaikan orientasi foto sebelum mengupload.
Setiap URL yang telah ditandatangani adalah untuk satu foto atau video - untuk mengirim beberapa lampiran, Anda harus meminta URL yang telah ditandatangani untuk setiap lampiran.
Mengupload file media: Untuk mengupload file media, buat permintaan POST ke URL yang telah ditandatangani sebelumnya yang diambil di 2a dengan hal berikut di isi permintaan:
"file": file yang akan diuploadSemua kolom yang ditampilkan dalam objek kolom di permintaan URL yang telah ditandatangani sebelumnya.
Menambahkan file media ke percakapan: Untuk menambahkan file media ke percakapan, gunakan endpoint
POST /chats/:id/photosatauPOST /chats/:id/videos. Perhatikan bahwa endpoint foto mendukung pengiriman array foto, sedangkan endpoint video hanya mendukung satu video dalam satu waktu.Parameter isi permintaan
s3_pathharus memiliki nilai yang sama dengan kolomkeydari respons URL yang telah ditandatangani sebelumnya.Permintaan akan menampilkan dua kolom jika berhasil. Sebaiknya simpan atau simpan dalam cache pemetaan
media_idke URL di konsumen API, karena semua media dalam pesan chat hanya akan dirujuk olehmedia_id.url: URL S3 atau Cloud Storage hanya baca tempat file berada.media_id: ID file media di Contact Center AI Platform. Ini adalah ID yang akan digunakan untuk merujuk media dalam payload chat.
Mengirim file media sebagai pesan chat: Untuk mengirim file media sebagai pesan chat, kirim payload berikut ke
POST /chats/:id/message endpoint:
{ "from_user_id": <id of end user>, "message": "type": <"photo" or "video">, "content": { "media_id": < media_id returned as described in 2.c > } }
Mengharapkan kunci JSON yang tidak dikenal dalam respons API
Semua update API kompatibel dengan versi sebelumnya. Kami berhak memperkenalkan kunci JSON baru dalam respons API yang ada kapan saja. Sebaiknya tangani respons secara defensif dengan mengabaikan kunci yang tidak dikenal untuk mempertahankan fungsi yang berkelanjutan.