Kelola keadaan

Status dalam agen mengikuti paradigma yang sama dengan aplikasi web modern. Agen SDK menyediakan beberapa abstraksi untuk mempermudah manajemen status.

Seperti halnya aplikasi web, agen secara tanpa status sedari awalnya. Instans yang berbeda dari agen Anda dapat menangani giliran percakapan tertentu. Untuk beberapa agen, kesederhanaan ini lebih disukai—agen dapat beroperasi tanpa informasi tambahan, atau informasi yang diperlukan dijamin berada dalam pesan masuk. Bagi orang lain, status (seperti di tempat mana percakapan ditinggalkan atau data yang sebelumnya diterima tentang pengguna) diperlukan agar agen memiliki percakapan yang berguna.

Mengapa saya memerlukan status?

Mempertahankan status memungkinkan agen Anda untuk memiliki percakapan yang lebih bermakna dengan mengingat hal-hal tertentu tentang pengguna atau percakapan. Misalnya, jika Anda telah berbicara dengan pengguna sebelumnya, Anda dapat menyimpan informasi sebelumnya tentang mereka, sehingga Anda tidak perlu memintanya lagi. Status juga menyimpan data lebih lama dari giliran saat ini, sehingga agen Anda terus menyimpan informasi selama percakapan yang terdiri dari beberapa giliran.

Karena berkaitan dengan agen, ada beberapa lapisan untuk menggunakan status: lapisan penyimpanan, manajemen status, dan AgentApplication.

Lapisan penyimpanan

Mulai dari backend, tempat informasi status benar-benar disimpan, adalah lapisan penyimpanan. Anda dapat menganggap ini sebagai penyimpanan fisik Anda, seperti dalam memori, Azure, atau server pihak ketiga.

Agen SDK mencakup beberapa implementasi untuk lapisan penyimpanan:

Penyimpanan memori mengimplementasikan penyimpanan dalam memori untuk tujuan pengujian. Penyimpanan data dalam memori ditujukan untuk pengujian lokal hanya karena penyimpanan ini volatil dan sementara. Data tersebut dihapus setiap kali agen dimulai ulang.

Azure Blob Storage tersambung ke database objek Azure Blob Storage.

Penyimpanan yang dipartisi Azure Cosmos DB terhubung ke database Cosmos DB NoSQL yang dipartisi.

Untuk petunjuk tentang cara menyambungkan ke opsi penyimpanan lain, lihat Gambaran Umum Penyimpanan SDK Agen

Manajemen status

Manajemen status mengotomatiskan pembacaan dan penulisan status agen Anda ke lapisan penyimpanan yang mendasar. Status disimpan sebagai properti status, yang secara efektif merupakan pasangan kunci-nilai yang dapat dibaca dan ditulis oleh agen Anda melalui objek manajemen status tanpa khawatir tentang implementasi khusus yang mendasarinya. Properti status tersebut menentukan bagaimana informasi tersebut disimpan. Misalnya, saat Anda mengambil properti yang Anda tentukan sebagai kelas atau objek tertentu, Anda tahu bagaimana data tersebut akan disusun.

Properti status ini dikelompokkan ke dalam "wadah" yang dibatasi ruang lingkupnya, yang adalah kumpulan untuk membantu mengatur properti tersebut. SDK mencakup tiga "wadah" ini.

  • Status pengguna
  • Status percakapan

Semua wadah ini adalah subkelas kelas status agen, yang dapat diturunkan untuk menentukan jenis wadah lain dengan cakupan yang berbeda.

Wadah yang telah ditentukan sebelumnya ini tercakup dalam visibilitas tertentu, tergantung pada wadah:

  • Status pengguna tersedia dalam setiap giliran ketika agen berkomunikasi dengan pengguna tersebut di saluran itu, terlepas dari konteks percakapan.
  • Status percakapan tersedia dalam setiap giliran dalam percakapan tertentu, terlepas dari pengguna, seperti dalam percakapan grup

Status pengguna dan status percakapan diatur oleh kanal. Orang yang sama yang menggunakan saluran yang berbeda untuk mengakses agen Anda muncul sebagai pengguna yang berbeda, satu untuk setiap saluran, dan masing-masing dengan status pengguna yang berbeda.

Kunci yang digunakan untuk masing-masing wadah yang telah ditentukan ini bersifat khusus untuk pengguna dan percakapan, atau agen. Saat menetapkan nilai properti status Anda, kunci ditentukan untuk Anda secara internal, dengan informasi yang terkandung dalam konteks giliran untuk memastikan bahwa setiap pengguna atau percakapan dikategorikan dengan benar ke dalam wadah dan properti yang tepat. Secara khusus, kunci didefinisikan sebagai berikut:

  • Status pengguna membuat kunci dengan menggunakan ID saluran dan ID sumber. Misalnya: {Activity.ChannelId}/users/{Activity.From.Id}#YourPropertyName
  • Status percakapan membuat kunci dengan menggunakan ID saluran dan ID percakapan. Misalnya: {Activity.ChannelId}/conversations/{Activity.Conversation.Id}#YourPropertyName

Kapan menggunakan setiap jenis status

Status percakapan baik untuk melacak konteks percakapan, seperti:

  • Apakah agen mengajukan pertanyaan kepada pengguna, dan pertanyaan mana yang
  • Apa topik percakapan saat ini, atau apa yang terakhir
  • Merekam riwayat obrolan

Status pengguna baik untuk melacak informasi tentang pengguna, seperti:

  • Informasi pengguna yang tidak penting, seperti nama dan preferensi, pengaturan alarm, atau preferensi pemberitahuan
  • Informasi tentang percakapan terakhir yang mereka miliki dengan agen
    • Misalnya, agen dukungan produk mungkin melacak produk mana yang telah ditanyakan pengguna.

AgentApplication

  • Penangan rute yang Anda tambahkan akan diberi instans TurnState. Mengakses percakapan atau status pengguna dari instans ini.
  • Status dimuat dan disimpan secara otomatis.