Dokumentasi pembangun

Panduan menyediakan Embed laman web, Flutter Customer SDK dan ruang kerja GreenChat.

Simpan kunci integrasi pada pelayan anda. Elakkan memasukkan kunci, token akses dan data pelanggan dalam kod klien, log atau laporan ralat.

Mula menggunakan GreenChat

Cara GreenChat berfungsi

GreenChat menyediakan sembang pelanggan di laman web dan aplikasi Flutter. Ejen membalas perbualan daripada saluran yang dibenarkan dalam satu ruang kerja. Pengesahan identiti pelanggan dan log masuk kakitangan menggunakan aliran yang berasingan.

Mohon akses dan sediakan organisasi anda

Hantar permohonan dan simpan kod rujukan. Gunakannya untuk menyemak keputusan dan arahan pengaktifan. Ikuti arahan untuk mengesahkan pemilik pertama supaya pasukan platform boleh mendaftarkan dan mengaktifkan organisasi sebelum anda log masuk.

Mohon akses

Tambah kakitangan dan saluran

Pemilik organisasi boleh menambah atau menjemput ejen melalui Pengurusan kakitangan, mencipta saluran web atau aplikasi di bahagian Saluran, dan memberi kebenaran mengendalikan pertanyaan melalui fungsi Tetapkan kakitangan. Pemilik akaun sedia ada mungkin perlu menerima jemputan dahulu.

Embed laman web

Cipta saluran web dan benarkan origin

Buka Saluran dalam ruang kerja organisasi dan cipta saluran web. Tambah setiap origin dengan skema, nama hos dan port jika bukan port lalai. Sediakan titik akhir tiket pada origin yang sama dengan laman anda dan aktifkan Embed. Skrip yang dijana dan kunci awam tersedia dalam tetapan integrasi.

Muatkan skrip yang dijana

Letakkan cebisan kod saluran anda pada halaman yang dipercayai. Contoh ini menunjukkan format atribut. Gunakan nilai tepat yang dijana untuk saluran anda. Kunci awam boleh disertakan dalam skrip.

HTML
<!-- Copy the generated snippet from your web channel. -->
<script async
  src="https://chat.greenchat.cn/embed/v1/loader.js"
  data-site="REPLACE_WITH_48_HEX_PUBLIC_KEY"
  data-bootstrap="/greenchat/bootstrap"></script>

Keluarkan tiket pada pelayan anda

Pemuat menghantar permintaan POST dalam format JSON dengan challenge, purpose dan source_page_url pilihan ke titik akhir data-bootstrap pada origin yang sama. Sahkan origin dan pelawat mengikut dasar anda. Tetapkan source_origin daripada konfigurasi pelayan yang dipercayai, kemudian panggil titik akhir GreenChat di bawah. Jika berjaya, pulangkan ticket dan purpose (create atau resume) sebagai JSON dengan Cache-Control: no-store. Simpan kunci penerimaan pada pelayan anda.

HTTP
POST /api/v1/integration/sites/{publicKey}/embed-tickets
Authorization: Bearer <server-only intake key>
Content-Type: application/json

{
  "challenge": "<64 lowercase hex characters from the loader>",
  "purpose": "create",
  "source_origin": "https://your-site.example"
}

Semak CSP dan hantar mesej ujian

Benarkan hos sembang dalam script-src, style-src dan frame-src masing-masing untuk pemuat, helaian gaya dan bingkai sembang. Benarkan permintaan tiket daripada origin yang sama dalam connect-src. Jika dasar frame-ancestors menyekat laman anda, semak senarai origin yang dibenarkan pada saluran dan konfigurasi proksi. Uji daripada origin HTTPS sebenar, kemudian ambil pertanyaan dan balas dalam ruang kerja.

Flutter Customer SDK

Pemasangan dan keperluan

Repositori mengandungi pakej persendirian versi 0.1.0 untuk Android dan iOS. Pakej ini memerlukan Dart 3.8 dan Flutter 3.32 atau versi yang lebih baharu. Gunakan salinan repositori yang dibenarkan atau rujukan Git persendirian yang dipinkan, kemudian jalankan flutter pub get. Isytiharkan INTERNET pada Android dan NSPhotoLibraryUsageDescription untuk pemilih imej iOS.

YAML
dependencies:
  greenchat_customer_sdk:
    path: ../support-center/packages/greenchat_customer_sdk

Sahkan pelanggan pada pelayan anda

Cipta integrasi pelanggan untuk saluran aplikasi. Sahkan pengguna hos yang telah log masuk pada pelayan anda dan dapatkan external_user_id yang stabil daripada sesi tersebut. Majukan client_instance_id, code_challenge dan purpose daripada GreenChatAuthRequest.toJson() kepada API tiket. Pulangkan ticket dan integration_id kepada aplikasi dan huraikannya dengan GreenChatTicket.fromJson. Simpan kunci integrasi dan kelayakan pelayan di luar semua kod Flutter dan JavaScript.

HTTP
POST /api/v1/integration/customer-integrations/{integration}/tickets
Authorization: Bearer <server-only customer integration key>
Content-Type: application/json

{
  "external_user_id": "<stable ID from your verified host session>",
  "client_instance_id": "<from GreenChatAuthRequest>",
  "code_challenge": "<from GreenChatAuthRequest>",
  "purpose": "customer.authenticate"
}

Mulakan SDK dan buka sembang

Mulakan pengikatan Flutter dan cipta satu GreenChatClient. Tetapkan had masa untuk authProvider dan majukan request.cancelled. SDK menukar tiket di /api/v1/customer-identity/exchange dan menyimpan token Bearer dalam ingatan. Letakkan GreenChatChatPage dalam susun atur yang mempunyai had saiz. Membuka sembang lalai tidak mencipta pertanyaan.

Dart
import 'package:flutter/material.dart';
import 'package:greenchat_customer_sdk/greenchat_customer_sdk.dart';

// Supply your application's authenticated backend adapter as hostTicketProvider.
GreenChatClient createSupportClient(GreenChatAuthProvider hostTicketProvider) {
  return GreenChatClient(GreenChatConfiguration(
    apiBaseUri: Uri.parse('https://api.greenchat.cn/api'),
    authProvider: hostTicketProvider,
  ));
}

Widget supportScreen(GreenChatClient client) => Scaffold(
  body: GreenChatChatPage(client: client, locale: GreenChatLocale.en),
);

Hantar mesej dan baca sejarah

Skrin lalai menyokong mesej teks, imej JPEG, PNG dan WebP serta sembang berterusan untuk identiti semasa. Untuk skrin tersuai, gunakan history, messages dan sendText. Gunakan consultationId yang boleh diakses oleh pelanggan semasa.

Dart
final history = await client.history(limit: 20);
final operation = client.prepareText(consultationId, 'Hello support');
await client.sendText(operation); // Reuse operation if the result is uncertain.
final page = await client.messages(consultationId, afterId: 0);

Log masuk, log keluar dan tukar pengguna

Selepas log masuk pada hos, panggil await client.authenticate() atau biarkan skrin sembang mengesahkan identiti. Panggil await client.logout() semasa log keluar dan kosongkan sesi hos. Apabila akaun bertukar, kemas kini sesi hos dan panggil client.switchIdentity(authProvider: nextProvider). Buang draf, data imej dan operasi yang masih menunggu daripada identiti terdahulu.

Ruang kerja dan aplikasi kakitangan

Log masuk dan ambil pertanyaan

Log masuk ke ruang kerja organisasi dengan akaun kakitangan yang dibenarkan. Pilih organisasi, buka giliran menunggu dan ambil pertanyaan daripada saluran yang anda dibenarkan kendalikan. Balas dengan teks atau imej yang disokong dan buka profil atau sejarah pelanggan mengikut kebenaran. Akses kepada lampiran lama bergantung pada klien dan kebenaran.

Pindahkan, tutup dan buka semula

Pindahkan perbualan kepada rakan sekerja yang layak dan ikuti arahan pengesahan. Tutup pertanyaan apabila selesai. Untuk meneruskan perbualan, buka pertanyaan daripada giliran yang telah ditutup dan gunakan tindakan buka semula jika tersedia.

Gunakan aplikasi kakitangan

Dapatkan aplikasi kakitangan Android atau iOS melalui organisasi anda. Log masuk dan pilih organisasi. Kemas kini masa nyata dan pemberitahuan latar bergantung pada klien, konfigurasi pelayan dan kebenaran peranti. Pemberitahuan tolak Android menggunakan FCM dan iOS menggunakan APNs.

Penyelesaian masalah

Butang sembang tidak muncul atau origin disekat

Pastikan saluran web aktif dan URL skrip serta data-site sepadan dengan cebisan kod yang dijana. Padankan skema, hos dan port dengan tepat dalam senarai origin yang dibenarkan. Periksa ralat rangkaian dan CSP dalam pelayar untuk skrip, helaian gaya atau bingkai yang disekat.

Ralat pengesahan 401, 403 atau 429

Untuk 401, semak kelayakan yang tamat tempoh, dibatalkan atau tiada, kemudian ikuti aliran log masuk. Untuk 403, semak origin, akses organisasi dan saluran serta status integrasi. Jika pertukaran tiket gagal, minta tiket baharu dan semak client_instance_id, challenge dan purpose. Patuhi Retry-After apabila menerima 429.

Mesej tidak dikemas kini atau pemberitahuan tidak sampai

Semak rangkaian, organisasi dan perbualan yang dipilih. SDK menyemak kemas kini secara berkala semasa sembang kelihatan di latar depan. Klien ruang kerja dengan sambungan masa nyata boleh beralih kepada semakan berkala. Untuk pemberitahuan latar, sahkan persediaan FCM atau APNs, pendaftaran peranti, kebenaran pemberitahuan dan sekatan bateri.

Hubungi kami