Bagikan melalui


Panduan penelusuran kesalahan

BERLAKU UNTUK: SDK v4

Bot adalah aplikasi kompleks, dengan banyak bagian bekerja sama. Seperti aplikasi kompleks lainnya, ini dapat menyebabkan beberapa bug yang menarik atau menyebabkan bot Anda ber perilaku berbeda dari yang diharapkan.

Penelusuran kesalahan, bot Anda terkadang bisa menjadi tugas yang sulit. Setiap pengembang memiliki cara pilihan mereka sendiri untuk menyelesaikan tugas itu. Panduan di bawah ini adalah saran yang berlaku untuk sebagian besar bot.

Setelah memverifikasi bahwa bot Anda berfungsi, langkah selanjutnya adalah menyambungkannya ke saluran. Untuk melakukan ini, Anda dapat menyebarkan bot ke server penahapan, dan membuat klien direct line Anda sendiri untuk disambungkan oleh bot Anda. Untuk informasi selengkapnya, lihat Menyambungkan bot ke Direct Line.

Membuat klien Anda sendiri memungkinkan Anda menentukan pekerjaan dalam saluran, dan menguji bagaimana bot Anda merespons pertukaran aktivitas tertentu. Setelah terhubung ke klien Anda, jalankan pengujian Anda untuk menyiapkan status bot Anda dan memverifikasi fitur Anda. Jika bot Anda menggunakan fitur seperti ucapan, menggunakan saluran ini dapat menawarkan cara untuk memverifikasi fungsionalitas tersebut.

Catatan

Saat menyebarkan bot ke Azure, saluran Web Chat disediakan secara default.

Penggunaan Bot Framework Emulator dan Web Chat melalui portal Azure di sini dapat memberikan wawasan lebih lanjut tentang performa bot Anda saat berinteraksi dengan saluran yang berbeda.

Penelusuran kesalahan bot Anda berfungsi mirip dengan aplikasi multi-utas lainnya, dengan kemampuan untuk mengatur titik henti atau menggunakan fitur seperti jendela langsung.

Bot mengikuti paradigma pemrograman berbasis peristiwa, yang mungkin sulit dirasionalisasi jika Anda tidak terbiasa dengannya. Gagasan bot Anda tanpa status, multi-utas, dan berurusan dengan panggilan asinkron/menunggu dapat mengakibatkan bug yang tidak terduga. Saat men-debug bot Anda berfungsi mirip dengan aplikasi multi-utas lainnya, kami akan membahas beberapa saran, alat, dan sumber daya untuk membantu.

Memahami aktivitas bot dengan Emulator

Bot Anda berkaitan dengan berbagai jenis aktivitas selain aktivitas pesan normal. Memahami aktivitas tersebut akan membantu Anda membuat kode bot secara efisien dan memungkinkan Anda memverifikasi aktivitas yang dikirim dan diterima bot Anda adalah apa yang Anda harapkan. Menggunakan Emulator akan menunjukkan kepada Anda aktivitas tersebut, kapan aktivitas tersebut terjadi, dan informasi apa yang dikandungnya. Untuk informasi selengkapnya, lihat Debug dengan Emulator.

Menyimpan dan mengambil interaksi pengguna dengan transkrip

Penyimpanan transkrip blob Azure menyediakan sumber daya khusus tempat Anda dapat menyimpan dan mengambil transkrip yang berisi interaksi antara pengguna dan bot Anda.

Selain itu, setelah interaksi input pengguna disimpan, Anda dapat menggunakan "penjelajah penyimpanan" Azure untuk melihat data yang terkandung dalam transkrip yang disimpan dalam penyimpanan transkrip blob Anda secara manual. Contoh berikut membuka "penjelajah penyimpanan" dari pengaturan untuk "mynewtestblobstorage." Untuk membuka input pengguna yang disimpan, pilih: Blob Container > ChannelId > TranscriptId > ConversationId

Contoh entri transkrip yang disimpan di penyimpanan transkrip blob.

Ini membuka input percakapan pengguna yang disimpan dalam format JSON. Input pengguna dipertahankan bersama dengan kunci "teks:." Untuk informasi selengkapnya tentang membuat dan menggunakan file transkrip bot, lihat Men-debug bot Anda menggunakan file transkrip.

Cara kerja middleware

Middleware mungkin tidak intuitif ketika pertama kali mencoba menggunakannya, terutama mengenai kelanjutan, atau sirkuit pendek, eksekusi. Middleware dapat dijalankan di tepi depan atau di belakang belokan, dengan panggilan ke next() delegasi yang mendikte saat eksekusi diteruskan ke logika bot.

Jika Anda menggunakan beberapa middleware dan itu adalah cara alur Anda berorientasi, delegasi dapat meneruskan eksekusi ke bagian middleware yang berbeda. Detail tentang alur middleware bot dapat membantu membuat ide itu lebih jelas.

next() Jika delegasi tidak dipanggil, itu disebut sebagai perutean sirkuit pendek. Ini terjadi ketika middleware memenuhi aktivitas saat ini dan menentukan tidak perlu melewati eksekusi.

Memahami kapan, dan mengapa, sirkuit pendek middleware dapat membantu menunjukkan bagian middleware mana yang harus menjadi yang pertama dalam alur Anda. Selain itu, memahami apa yang diharapkan penting untuk middleware bawaan yang disediakan oleh SDK atau pengembang lainnya. Beberapa merasa berguna untuk mencoba membuat middleware Anda sendiri terlebih dahulu untuk bereksperimen sedikit sebelum menyelam ke middleware bawaan.

Untuk informasi selengkapnya tentang cara men-debug bot menggunakan middleware inspeksi, lihat Men-debug bot dengan middleware inspeksi.

Memahami status

Melacak status adalah bagian penting dari bot Anda, terutama untuk tugas yang kompleks. Secara umum, praktik terbaik adalah memproses aktivitas secepat mungkin dan membiarkan pemrosesan selesai sehingga status tetap ada. Aktivitas dapat dikirim ke bot Anda pada saat yang hampir bersamaan, dan yang dapat memperkenalkan bug yang membingungkan karena arsitektur asinkron.

Yang terpenting, pastikan bahwa status bertahan dengan cara yang sesuai dengan harapan Anda. Bergantung pada tempat status Anda bertahan, emulator penyimpanan untuk penyimpanan Cosmos DB dan Azure Table dapat membantu Anda memverifikasi status tersebut sebelum menggunakan penyimpanan produksi.

Penting

Kelas penyimpanan Cosmos DB tidak digunakan lagi. Kontainer yang awalnya dibuat dengan CosmosDbStorage tidak memiliki set kunci partisi, dan diberi kunci partisi default _/partitionKey.

Kontainer yang dibuat dengan penyimpanan Cosmos DB dapat digunakan dengan penyimpanan yang dipartisi Cosmos DB. Baca Partisi di Azure Cosmos DB untuk informasi selengkapnya.

Perhatikan juga bahwa, tidak seperti penyimpanan Cosmos DB warisan, penyimpanan yang dipartisi Cosmos DB tidak secara otomatis membuat database dalam akun Cosmos DB Anda. Anda perlu membuat database baru secara manual, tetapi melewati pembuatan kontainer secara manual karena CosmosDbPartitionedStorage akan membuat kontainer untuk Anda.

Cara menggunakan penanganan aktivitas

Penanganan aktivitas dapat memperkenalkan lapisan kompleksitas lain, terutama karena setiap aktivitas berjalan pada utas independen (atau pekerja web, tergantung pada bahasa Anda). Bergantung pada apa yang dilakukan handler Anda, ini dapat menyebabkan masalah di mana status saat ini bukan yang Anda harapkan.

Status bawaan akan ditulis pada akhir giliran, namun setiap aktivitas yang dihasilkan oleh giliran itu dijalankan secara independen dari alur giliran. Seringkali ini tidak berdampak pada kita, tetapi jika penanganan aktivitas berubah status, kita memerlukan status yang ditulis untuk memuat perubahan tersebut. Dalam hal ini, alur giliran dapat menunggu aktivitas selesai diproses sebelum menyelesaikan untuk memastikannya merekam status yang benar untuk giliran tersebut.

Metode aktivitas kirim , dan penangannya, menimbulkan masalah unik. Hanya memanggil aktivitas pengiriman dari dalam handler aktivitas pengiriman menyebabkan forking utas yang tak terbatas. Ada beberapa cara untuk mengatasi masalah tersebut, seperti dengan menambahkan pesan tambahan ke informasi keluar atau menulis ke lokasi lain seperti konsol atau file untuk menghindari crash bot Anda.

Men-debug bot produksi

Saat bot sedang diproduksi, Anda dapat men-debug bot dari saluran apa pun menggunakan ngrok. Koneksi bot Anda yang mulus ke beberapa saluran adalah fitur utama yang tersedia di Bot Framework. Untuk informasi selengkapnya, lihat Men-debug bot dari saluran apa pun menggunakan ngrok dan Men-debug keterampilan atau konsumen keterampilan.

Langkah berikutnya

Sumber Daya Tambahan: