Mulai cepat: Menambahkan bot ke aplikasi obrolan Anda
Pelajari cara membangun pengalaman AI percakapan dalam aplikasi obrolan dengan menggunakan saluran pesan Obrolan Azure Communication Services yang tersedia di Azure Bot Service. Dalam mulai cepat ini, Anda membuat bot dengan menggunakan BotFramework SDK. Kemudian, Anda mengintegrasikan bot ke dalam aplikasi obrolan yang Anda buat dengan menggunakan SDK Obrolan Communication Services.
Dalam panduan mulai cepat ini, Anda belajar cara:
- Membuat dan menyebarkan bot di Azure
- Mendapatkan sumber daya Communication Services
- Mengaktifkan saluran Obrolan Communication Services untuk bot
- Membuat aplikasi obrolan dan menambahkan bot sebagai peserta
- Menjelajahi lebih banyak fitur untuk bot Anda
Prasyarat
- Akun Azure dan langganan aktif. Membuat akun secara gratis.
- Visual Studio 2019 atau versi yang lebih baru.
- Versi terbaru .NET Core. Dalam mulai cepat ini, kami menggunakan .NET Core 3.1. Pastikan untuk menginstal versi yang sesuai dengan instans Visual Studio, 32-bit, atau 64-bit Anda.
- SDK kerangka kerja bot
Membuat dan menyebarkan bot di Azure
Untuk menggunakan obrolan Azure Communication Services sebagai saluran di Azure Bot Service, pertama-tama sebarkan bot. Untuk menyebarkan bot, Anda menyelesaikan langkah-langkah berikut:
- Membuat sumber daya Azure Bot Service
- Mendapatkan ID aplikasi dan kata sandi bot
- Membuat aplikasi web untuk menahan logika bot
- Membuat titik akhir olahpesan untuk bot
Membuat sumber daya Azure Bot Service
Pertama, gunakan portal Azure untuk membuat sumber daya Azure Bot Service. Saluran Obrolan Communication Services mendukung bot penyewa tunggal, bot identitas terkelola, dan bot multi-penyewa. Untuk tujuan mulai cepat ini, kami akan menggunakan bot multi-penyewa .
Untuk menyiapkan bot identitas penyewa tunggal atau terkelola, tinjau Informasi identitas Bot.
Untuk bot identitas terkelola, Anda mungkin harus memperbarui identitas layanan bot.
Mendapatkan ID aplikasi bot dan kata sandi aplikasi
Selanjutnya, dapatkan ID aplikasi Microsoft dan kata sandi yang ditetapkan ke bot Anda saat disebarkan. Anda menggunakan nilai-nilai ini untuk konfigurasi selanjutnya.
Membuat aplikasi web untuk menahan logika bot
Untuk membuat aplikasi web untuk bot, Anda dapat merevisi sampel Bot Builder untuk skenario Anda atau menggunakan Bot Builder SDK untuk membuat aplikasi web. Salah satu sampel yang paling sederhana adalah Echo Bot.
Azure Bot Service biasanya mengharapkan Pengontrol Aplikasi Web Aplikasi Bot untuk mengekspos titik akhir dalam bentuk /api/messages
. Titik akhir menangani semua pesan yang dikirim ke bot.
Untuk membuat aplikasi bot, gunakan Azure CLI untuk membuat sumber daya Azure App Service atau membuat aplikasi di portal Azure.
Untuk membuat aplikasi web bot dengan menggunakan portal Azure:
Di portal, pilih Buat sumber daya. Dalam kotak pencarian, masukkan aplikasi web. Pilih petak peta Aplikasi Web.
Di Buat Aplikasi Web, pilih atau masukkan detail untuk aplikasi, termasuk wilayah tempat Anda ingin menyebarkan aplikasi.
Pilih Tinjau + Buat untuk memvalidasi penyebaran dan meninjau detail penyebaran. Lalu, pilih Buat.
Saat sumber daya aplikasi web dibuat, salin URL nama host yang ditampilkan dalam detail sumber daya. URL adalah bagian dari titik akhir yang Anda buat untuk aplikasi web.
Membuat titik akhir olahpesan untuk bot
Selanjutnya, di sumber daya bot, buat titik akhir olahpesan aplikasi web:
Di portal Azure, buka sumber daya Azure Bot Anda. Di menu sumber daya, pilih Konfigurasi.
Di Konfigurasi, untuk titik akhir Olahpesan, tempelkan URL nama host aplikasi web yang Anda salin di bagian sebelumnya. Tambahkan URL dengan
/api/messages
.Pilih Simpan.
Menggunakan aplikasi web
Langkah terakhir untuk membuat bot adalah menyebarkan aplikasi web. Untuk mulai cepat ini, gunakan sampel Echo Bot. Fungsionalitas Echo Bot terbatas untuk menggemakan input pengguna. Berikut cara Anda menyebarkannya ke aplikasi web Anda di Azure:
Gunakan Git untuk mengkloning repositori GitHub ini:
git clone https://github.com/Microsoft/BotBuilder-Samples.git cd BotBuilder-Samples
Di Visual Studio, buka proyek Echo Bot.
Di proyek Visual Studio, buka file Appsettings.json . Tempelkan ID aplikasi Microsoft dan kata sandi aplikasi yang Anda salin sebelumnya:
{ "MicrosoftAppId": "<App-registration-ID>", "MicrosoftAppPassword": "<App-password>" }
Selanjutnya, gunakan bot Visual Studio for C# untuk menyebarkan bot.
Anda juga dapat menggunakan jendela Prompt Perintah untuk menyebarkan bot Azure.
Di Visual Studio, di Penjelajah Solusi, klik kanan proyek EchoBot dan pilih Terbitkan:
Pilih Baru untuk membuat profil penerbitan baru. Untuk Target, pilih Azure:
Untuk target tertentu, pilih Azure App Service:
Dalam konfigurasi penyebaran, pilih aplikasi web di hasil yang muncul setelah Anda masuk ke akun Azure Anda. Untuk menyelesaikan profil, pilih Selesai, lalu pilih Terbitkan untuk memulai penyebaran.
Mendapatkan sumber daya Communication Services
Sekarang setelah bot Anda dibuat dan disebarkan, buat sumber daya Communication Services untuk digunakan untuk menyiapkan saluran Communication Services:
Selesaikan langkah-langkah untuk membuat sumber daya Communication Services.
Buat pengguna Communication Services dan terbitkan token akses pengguna. Pastikan untuk mengatur cakupan ke obrolan. Salin string token dan string ID pengguna.
Mengaktifkan saluran Obrolan Communication Services
Saat Anda memiliki sumber daya Communication Services, Anda dapat menyiapkan saluran Communication Services di sumber daya bot. Dalam proses ini, ID pengguna dihasilkan untuk bot.
Di portal Azure, buka sumber daya Azure Bot Anda. Di menu sumber daya, pilih Saluran. Dalam daftar saluran yang tersedia, pilih Azure Communications Services - Chat.
Pilih Koneksi untuk melihat daftar sumber daya Communication Services yang tersedia di langganan Anda.
Di panel Koneksi ion baru, pilih sumber daya obrolan Communication Services, lalu pilih Terapkan.
Saat detail sumber daya diverifikasi, ID bot ditampilkan di kolom Id Bot Azure Communication Services. Anda dapat menggunakan ID bot untuk mewakili bot dalam utas obrolan dengan menggunakan API AddParticipant Obrolan Communication Services. Setelah Anda menambahkan bot ke obrolan sebagai peserta, bot mulai menerima aktivitas terkait obrolan, dan dapat merespons di utas obrolan.
Membuat aplikasi obrolan dan menambahkan bot sebagai peserta
Sekarang setelah Anda memiliki ID Communication Services bot, Anda dapat membuat utas obrolan dengan bot sebagai peserta.
Membuat aplikasi C# baru
Jalankan perintah berikut untuk membuat aplikasi C#:
dotnet new console -o ChatQuickstart
Ubah direktori Anda ke folder aplikasi baru dan gunakan
dotnet build
perintah untuk mengkompilasi aplikasi Anda:cd ChatQuickstart dotnet build
Pasang paket
Instal SDK Obrolan Communication Services untuk .NET:
dotnet add package Azure.Communication.Chat
Membuat klien obrolan
Untuk membuat klien obrolan, gunakan titik akhir Communication Services dan token akses pengguna yang Anda buat sebelumnya. CommunicationIdentityClient
Gunakan kelas dari Identity SDK untuk membuat pengguna dan mengeluarkan token untuk diteruskan ke klien obrolan Anda. Token akses dapat dihasilkan di portal menggunakan instruksi berikut.
Salin kode berikut dan tempelkan di file sumber Program.cs :
using Azure;
using Azure.Communication;
using Azure.Communication.Chat;
using System;
namespace ChatQuickstart
{
class Program
{
static async System.Threading.Tasks.Task Main(string[] args)
{
// Your unique Communication Services endpoint
Uri endpoint = new Uri("https://<RESOURCE_NAME>.communication.azure.com");
CommunicationTokenCredential communicationTokenCredential = new CommunicationTokenCredential(<Access_Token>);
ChatClient chatClient = new ChatClient(endpoint, communicationTokenCredential);
}
}
}
Memulai utas obrolan dengan bot
Gunakan metode aktif createChatThread
chatClient
untuk membuat utas obrolan. Ganti ID dengan ID Communication Services bot.
var chatParticipant = new ChatParticipant(identifier: new CommunicationUserIdentifier(id: "<BOT_ID>"))
{
DisplayName = "BotDisplayName"
};
CreateChatThreadResult createChatThreadResult = await chatClient.CreateChatThreadAsync(topic: "Hello Bot!", participants: new[] { chatParticipant });
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(threadId: createChatThreadResult.ChatThread.Id);
string threadId = chatThreadClient.Id;
Mendapatkan klien utas obrolan
Metode mengembalikan GetChatThreadClient
klien utas untuk utas yang sudah ada:
string threadId = "<THREAD_ID>";
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(threadId: threadId);
Mengirim pesan ke utas obrolan
Untuk menggunakan SendMessage
untuk mengirim pesan ke utas:
SendChatMessageOptions sendChatMessageOptions = new SendChatMessageOptions()
{
Content = "Hello World",
MessageType = ChatMessageType.Text
};
SendChatMessageResult sendChatMessageResult = await chatThreadClient.SendMessageAsync(sendChatMessageOptions);
string messageId = sendChatMessageResult.Id;
Menerima pesan obrolan dari utas obrolan
Anda bisa mendapatkan pesan obrolan dengan melakukan polling GetMessages
metode pada klien utas obrolan pada interval yang ditetapkan:
AsyncPageable<ChatMessage> allMessages = chatThreadClient.GetMessagesAsync();
await foreach (ChatMessage message in allMessages)
{
Console.WriteLine($"{message.Id}:{message.Content.Message}");
}
Periksa daftar pesan untuk balasan gema bot ke "Halo Dunia".
Anda dapat menggunakan JavaScript atau SDK seluler Azure untuk berlangganan pemberitahuan pesan masuk:
// Open notifications channel
await chatClient.startRealtimeNotifications();
// Subscribe to new notifications
chatClient.on("chatMessageReceived", (e) => {
console.log("Notification chatMessageReceived!");
// Your code here
});
Membersihkan utas obrolan
Setelah selesai menggunakan utas obrolan, hapus utas:
chatClient.DeleteChatThread(threadId);
Menyebarkan aplikasi obrolan C#
Untuk menyebarkan aplikasi obrolan:
Di Visual Studio, buka proyek obrolan.
Klik kanan proyek ChatQuickstart dan pilih Terbitkan:
Setelah Anda menerbitkan solusi, jalankan dan periksa apakah Echobot menggemakan pesan pengguna pada prompt perintah. Sekarang setelah Anda memiliki solusi, Anda dapat melanjutkan untuk bermain dengan berbagai aktivitas yang diperlukan untuk skenario bisnis yang perlu Anda selesaikan.
Lebih banyak hal yang dapat Anda lakukan dengan bot
Bot dapat menerima lebih dari pesan teks biasa dari pengguna di saluran Obrolan Communications Services. Beberapa aktivitas yang dapat diterima bot dari pengguna meliputi:
- Pembaruan percakapan
- Pembaruan pesan
- Penghapusan pesan
- Indikator pengetikan
- Aktivitas peristiwa
- Berbagai lampiran, termasuk kartu adaptif
- Data saluran bot
Bagian berikutnya memperlihatkan beberapa sampel untuk mengilustrasikan fitur-fitur ini.
Mengirim pesan selamat datang saat pengguna baru ditambahkan ke utas
Logika Echo Bot saat ini menerima input dari pengguna dan menggemakannya kembali. Jika Anda ingin menambahkan lebih banyak logika, seperti merespons peristiwa Communication Services yang ditambahkan peserta, salin kode berikut dan tempelkan di file sumber EchoBot.cs :
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
namespace Microsoft.BotBuilderSamples.Bots
{
public class EchoBot : ActivityHandler
{
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken)
{
if (turnContext.Activity.Type == ActivityTypes.Message)
{
var replyText = $"Echo: {turnContext.Activity.Text}";
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
}
else if (ActivityTypes.ConversationUpdate.Equals(turnContext.Activity.Type))
{
if (turnContext.Activity.MembersAdded != null)
{
foreach (var member in turnContext.Activity.MembersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
await turnContext.SendActivityAsync(MessageFactory.Text("Hello and welcome to chat with EchoBot!"), cancellationToken);
}
}
}
}
}
}
}
Mengirim kartu adaptif
Catatan
Kartu adaptif hanya didukung dalam kasus penggunaan Azure Communication Services di mana semua peserta obrolan adalah pengguna Azure Communication Services, dan bukan untuk kasus penggunaan interoprability Teams.
Anda dapat mengirim kartu adaptif ke utas obrolan untuk meningkatkan keterlibatan dan efisiensi. Kartu adaptif juga membantu Anda berkomunikasi dengan pengguna dengan berbagai cara. Anda dapat mengirim kartu adaptif dari bot dengan menambahkan kartu sebagai lampiran aktivitas bot.
Berikut adalah contoh cara mengirim kartu adaptif:
var reply = Activity.CreateMessageActivity();
var adaptiveCard = new Attachment()
{
ContentType = "application/vnd.microsoft.card.adaptive",
Content = {/* the adaptive card */}
};
reply.Attachments.Add(adaptiveCard);
await turnContext.SendActivityAsync(reply, cancellationToken);
Dapatkan payload sampel untuk kartu adaptif di Sampel dan templat.
Untuk pengguna obrolan, saluran Obrolan Communication Services menambahkan bidang ke metadata pesan yang menunjukkan pesan memiliki lampiran. Dalam metadata, microsoft.azure.communication.chat.bot.contenttype
properti diatur ke azurebotservice.adaptivecard
.
Berikut adalah contoh pesan obrolan yang memiliki kartu adaptif yang terlampir:
{
"content": "{\"attachments\":[{\"contentType\":\"application/vnd.microsoft.card.adaptive\",\"content\":{/* the adaptive card */}}]}",
"senderDisplayName": "BotDisplayName",
"metadata": {
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard"
},
"messageType": "Text"
}
Mengirim pesan dari pengguna ke bot
Anda dapat mengirim pesan teks dasar dari pengguna ke bot dengan cara yang sama seperti Anda mengirim pesan teks ke pengguna lain.
Namun, saat Anda mengirim pesan yang memiliki lampiran dari pengguna ke bot, tambahkan bendera ini ke metadata Obrolan Communication Services:
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard"
Untuk mengirim aktivitas peristiwa dari pengguna ke bot, tambahkan bendera ini ke metadata Obrolan Communication Services:
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.event"
Bagian berikut menunjukkan format sampel untuk pesan obrolan dari pengguna ke bot.
Pesan teks sederhana
{
"content":"Simple text message",
"senderDisplayName":"Acs-Dev-Bot",
"metadata":{
"text":"random text",
"key1":"value1",
"key2":"{\r\n \"subkey1\": \"subValue1\"\r\n
"},
"messageType": "Text"
}
Pesan dengan lampiran
{
"content": "{
\"text\":\"sample text\",
\"attachments\": [{
\"contentType\":\"application/vnd.microsoft.card.adaptive\",
\"content\": { \"*adaptive card payload*\" }
}]
}",
"senderDisplayName": "Acs-Dev-Bot",
"metadata": {
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard",
"text": "random text",
"key1": "value1",
"key2": "{\r\n \"subkey1\": \"subValue1\"\r\n}"
},
"messageType": "Text"
}
Pesan dengan aktivitas peristiwa
Payload peristiwa mencakup semua bidang JSON dalam konten pesan kecuali Name
. Bidang Name
berisi nama peristiwa.
Dalam contoh berikut, nama endOfConversation
peristiwa dengan payload "{field1":"value1", "field2": { "nestedField":"nestedValue" }}
dikirim ke bot:
{
"content":"{
\"name\":\"endOfConversation\",
\"field1\":\"value1\",
\"field2\": {
\"nestedField\":\"nestedValue\"
}
}",
"senderDisplayName":"Acs-Dev-Bot",
"metadata":{
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.event",
"text":"random text",
"key1":"value1",
"key2":"{\r\n \"subkey1\": \"subValue1\"\r\n}"
},
"messageType": "Text"
}
Bidang metadata microsoft.azure.communication.chat.bot.contenttype
hanya diperlukan dalam pesan yang dikirim dari pengguna ke bot.
Bidang aktivitas bot yang didukung
Bagian berikut menjelaskan bidang aktivitas bot yang didukung untuk alur bot-ke-pengguna dan alur pengguna-ke-bot.
Alur bot-ke-pengguna
Bidang aktivitas bot berikut didukung untuk alur bot-ke-pengguna.
Aktivitas
- Pesan
- Mengetik
Bidang aktivitas pesan
Text
Attachments
AttachmentLayout
SuggestedActions
From.Name
(Dikonversi ke Communication ServicesSenderDisplayName
.)ChannelData
(Dikonversi ke Communication ServicesChat Metadata
. Jika adaChannelData
nilai pemetaan adalah objek, nilai tersebut diserialisasikan dalam format JSON dan dikirim sebagai string.)
Alur pengguna-ke-bot
Bidang aktivitas bot ini didukung untuk alur pengguna ke bot.
Aktivitas dan bidang
Pesan
Id
(ID pesan Obrolan Communication Services)TimeStamp
Text
Attachments
Pembaruan percakapan
MembersAdded
MembersRemoved
TopicName
Pembaruan pesan
Id
(ID pesan Obrolan Communication Services yang Diperbarui)Text
Attachments
Penghapusan pesan
Id
(ID pesan Obrolan Communication Services yang Dihapus)
Aktivitas
Name
Value
Mengetik
Bidang umum lainnya
Recipient.Id
danRecipient.Name
(ID pengguna dan nama tampilan Obrolan Communication Services)From.Id
danFrom.Name
(ID pengguna dan nama tampilan Obrolan Communication Services)Conversation.Id
(ID utas Obrolan Communication Services)ChannelId
(Obrolan Communication Services jika kosong)ChannelData
(Metadata pesan Obrolan Communication Services)
Pola serah terima bot
Terkadang, bot tidak memahami pertanyaan, atau tidak dapat menjawab pertanyaan. Pelanggan mungkin meminta dalam obrolan untuk terhubung ke agen manusia. Dalam skenario ini, utas obrolan harus diserahkan dari bot ke agen manusia. Anda dapat merancang aplikasi Anda untuk mentransisikan percakapan dari bot ke manusia.
Menangani komunikasi bot-ke-bot
Dalam beberapa kasus penggunaan, dua bot perlu ditambahkan ke utas obrolan yang sama untuk menyediakan layanan yang berbeda. Dalam skenario ini, Anda mungkin perlu memastikan bahwa bot tidak mengirim balasan otomatis ke pesan bot lain. Jika tidak ditangani dengan benar, interaksi otomatis bot antara mereka sendiri dapat mengakibatkan perulangan pesan yang tidak terbatas.
Anda dapat memverifikasi identitas pengguna Communication Services dari pengirim pesan di properti aktivitas From.Id
. Periksa untuk melihat apakah itu milik bot lain. Kemudian, ambil tindakan yang diperlukan untuk mencegah alur komunikasi bot-ke-bot. Jika jenis skenario ini menghasilkan volume panggilan tinggi, saluran Obrolan Communication Services membatasi permintaan dan bot tidak dapat mengirim dan menerima pesan.
Pelajari selengkapnya tentang batas pembatasan.
Pemecahan masalah
Bagian berikut menjelaskan cara memecahkan masalah skenario umum.
Saluran obrolan tidak dapat ditambahkan
Di portal pengembang Microsoft Bot Framework, buka Olahpesan Bot Konfigurasi>untuk memverifikasi bahwa titik akhir telah diatur dengan benar.
Bot mendapatkan pengecualian terlarang saat membalas pesan
Verifikasi bahwa ID aplikasi dan kata sandi Microsoft bot disimpan dengan benar dalam file konfigurasi bot yang Anda unggah ke aplikasi web.
Bot tidak dapat ditambahkan sebagai peserta
Verifikasi bahwa ID Communication Services bot digunakan dengan benar saat permintaan dikirim untuk menambahkan bot ke utas obrolan.
Langkah berikutnya
Coba aplikasi demo bot obrolan untuk obrolan 1:1 antara pengguna obrolan dan bot melalui komponen UI WebChat BotFramework.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk