Publicere en agent til Azure Bot Service-kanaler
Du kan oprette forbindelse mellem din agent og eksisterende Azure Bot Service-kanaler , hvilket kan være nyttigt, hvis du vil oprette forbindelse mellem din agent og kunder på Azure Bot Service-kanaler.
Tilføjelse af din agent i Azure Bot Service-kanaler kræver stor udviklerekspertise. Denne artikel er skrevet til IT-administratorer eller udviklere, der har erfaring med at udvikle og skrive kode.
Tip
Du behøver ikke at følge dette dokument for at tilføje din Copilot Studio-agent på dit website, Facebook eller Microsoft Teams. Hvis dit mål er at forbinde med en brugerdefineret webbaseret eller oprindelig app, kan udviklerne få mere at vide på Publicere en agent til mobile og brugerdefinerede apps.
Vigtige oplysninger
Instruktionerne i dette afsnit kræver udvikling af software fra dig eller dine udviklere. Det er udviklet til erfarne IT-medarbejdere, såsom IT-administratorer eller udviklere, der har en solid forståelse for udviklerværktøjer, værktøjer og IDE'er.
Forudsætninger
- Et Azure Bot Service-abonnement.
- En Azure Bot Service-bot, som anvende v4 SDK.
- .NET Core SDK version 2.1.
- Nuget-pakken Microsoft.Bot.Connector.DirectLine.
- En agent, der er oprettet i Copilot Studio, og som du vil forbinde til en Azure Bot Service-kanal.
- Publicere en agent til mobilapps eller brugerdefinerede apps.
Kodeeksempler
Kodestykker, der bruges i dette dokument, er fra relæbehandlede bot-eksempelkode.
Referencer
Instruktionerne i dette dokument refererer til følgende dokumenter:
- Installer din bot på Azure for at få instruktioner i installation af Azure Bot Service-botten.
- Azure Bot Service-kanalerne for at forbinde med en hvilken som helst Azure Bot Service-understøttet kanal.
- Azure Bot Service-fejlfinding med emulatoren for at få instruktioner om, hvordan du foretager fejlfinding af Azure Bot Service-botten.
Opret eller brug en eksisterende Azure Bot Service-bot
Du skal bruge en Azure Bot Service-bot, der kan videresende samtaler mellem din Copilot Studio-agent og Azure Bot Service-kanaler.
Eksempelkoden for relæbehandlet bot er et godt udgangspunkt, hvis du ikke har en eksisterende Azure Bot Service-bot. Den er opbygget af Microsoft Bot Framework-bot eksempelkode, der kan kompileres og installeres i Azure Bot Service. Eksempelkoden er beregnet til at blive brugt som udgangspunkt og er ikke beregnet til at blive brugt direkte i produktionen. Du skal tilføje kode og optimering for at kunne tilpasse den til dine forretningsbehov.
Hvis du allerede har en Azure Bot Service-bot, skal du tilføje en Copilot Studio-connector og kode for at administrere samtalesessioner. Du kan derefter installere botten i Azure Bot Service og oprette forbindelse til kanaler med Azure-portalen.
Hent dine Copilot Studio-agentparametre
Hvis du vil oprette forbindelse til agenten, du har oprettet med Copilot Studio, skal du hente din agents navn og token-slutpunkt.
Kopiér din agents navn i Copilot Studio.
Vælg Kanaler under Indstillinger i navigationsmenuen.
Vælg den kanal, du vil oprette forbindelse til. I dette scenarie bruges Slack som eksempel.
Vælg Kopiér for at kopiere og gemme værdien af Slutpunkt for token. Du skal bruge dit slutpunkt for at oprette forbindelse mellem din agent og Azure Bot Service-kanalen.
Administrer samtalesessioner med din Copilot Studio-agent
Der kan være flere samtaler mellem Azure Bot Service-kanalerne og Direct Line-forbindelsen til din Copilot Studio-agent.
Din Azure Bot Service-robot skal tilknytte og videresende samtalen fra Azure Bot Service-kanalen til Direct Line-samtalen med Copilot Studio-agenten og omvendt.
Eksempel på eksempelkode
I følgende eksempel bruges eksempler fra den relæbehandlet bot-eksempelkode.
Du kan på alle nye eksterne Azure Bot Service-kanaler til samtalestart starte en Copilot Studio-agentsamtale. Du kan finde flere instruktioner i at starte en ny samtale med robotten i Hent et Direct Line-token og Anvend Direct Line til at kommunikere med agenten.
using (var httpRequest = new HttpRequestMessage()) { httpRequest.Method = HttpMethod.Get; UriBuilder uriBuilder = new UriBuilder(TokenEndPoint); httpRequest.RequestUri = uriBuilder.Uri; using (var response = await s_httpClient.SendAsync(httpRequest)) { var responseString = await response.Content.ReadAsStringAsync(); string token = SafeJsonConvert.DeserializeObject<DirectLineToken>(responseString).Token; } } /// <summary> /// class for serialization/deserialization DirectLineToken /// </summary> public class DirectLineToken { public string Token { get; set; } }
// Use the retrieved token to create a DirectLineClient instance using (var directLineClient = new DirectLineClient(token)) { var conversation = await directLineClient.Conversations.StartConversationAsync(); string conversationtId = conversation.ConversationId; }
Hvis du vil administrere flere sessioner, skal du bevare en tilknytning af eksterne Azure Bot Service-kanalsamtaler til tilsvarende Copilot Studio-agentsamtaler. En Copilot Studio-agentsamtale kan identificeres og forbindes med to egenskaber:
ConversationtId
ogToken
.Dictionary<string, PowerVirtualAgentsConversation> ConversationRouter = new Dictionary<string, PowerVirtualAgentsConversation>();
Du kan styre samtalens livscyklus ved at opdatere Direct Line-tokens eller rydde op i inaktive samtaler. Få mere at vide om tokenopdatering i Opdatere Direct Line-token. En Copilot Studio-agentsamtale til at understøtte opdatering af Direct Line tokens defineres som følger:
/// <summary> /// Data model class for Copilot Studio agent conversation /// </summary> public class PowerVirtualAgentsConversation { public string ConversationtId { get; set; } // The Copilot Studio agent conversation ID retrieved from step 1 public string Token { get; set; } // The DirectLine token retrieved from step 1 public string WaterMark { get; set; } // Identify turn in a conversation public DateTime LastTokenRefreshTime { get; set; } = DateTime.Now; // Timestamp of last token refresh public DateTime LastConversationUpdateTime { get; set; } = DateTime.Now; // Timestamp of last active user message sent to agent }
Når en ny Copilot Studio-agentsamtale startes, skal du føje et nøgleværdipar (
external_Azure_Bot_Service_channel_conversationID
,PowerVirtualAgentsConversation
) til tilknytningstabellen.// After new Copilot Studio agent conversation starts ConversationRouter[external_Azure_Bot_Service_channel_conversationID] = new PowerVirtualAgentsConversation() { Token = token, ConversationtId = conversationId, WaterMark = null, LastConversationUpdateTime = DateTime.Now, LastTokenRefreshTime = DateTime.Now, };
Hvis du vil fortsætte med en eksisterende samtale, skal du, når der er modtaget en ny ekstern Azure Bot Service-kanalmeddelelse, hente den eksisterende samtale fra tilknytningstabellen, overføre den eksterne samtaleaktivitet til din Copilot Studio-agent og modtage et svar.
I følgende eksempel vises relæ af samtalen ved at tilsidesætte metoden ActivityHandler.OnMessageActivityAsync((ITurnContext<IMessageActivity>, CancellationToken)
// Invoked when a message activity is received from the user // Send the user message to Copilot Studio agent and get response protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken) { // Retrieve agent conversation from mapping table // If not exists for the given external conversation ID, start a new Copilot Studio agent conversation ConversationRouter.TryGetValue(externalCID, out PowerVirtualAgentsConversation currentConversation) ? currentConversation : /*await StartBotConversationAsync(externalCID)*/; // Create DirectLine client with the token associated to current conversation DirectLineClient client = new DirectLineClient(currentConversation.Token); // Send user message using directlineClient await client.Conversations.PostActivityAsync(currentConversation.ConversationtId, new DirectLineActivity() { Type = DirectLineActivityTypes.Message, From = new ChannelAccount { Id = turnContext.Activity.From.Id, Name = turnContext.Activity.From.Name }, Text = turnContext.Activity.Text, TextFormat = turnContext.Activity.TextFormat, Locale = turnContext.Activity.Locale, }); // Update LastConversationUpdateTime for session management currentConversation.LastConversationUpdateTime = DateTime.Now; }
Vi henviser til Anvendelse af Direct Line til at kommunikere med agenten for oplysninger om, hvordan du kan få Copilot Studio-agentens svar. Når Copilot Studio-agentens svar modtages, skal du gå til Fortolk samtalenyttedata fra agenten for at finde ud af, hvordan du kan fortolke svaret til svaret fra den eksterne Azure Bot Service-kanal.
Du kan finde et eksempel på fortolkning af svar i relæ-eksempelkode for botten ResponseConverter.cs.
Installer på Azure Bot Service
Når du har gjort din Azure Bot Service-relæ-bot klar, skal du installere botten på din Azure Bot Service.
Opsætning af Azure Bot Service-kanaler
Du kan konfigurere de kanaler, du vil oprette forbindelse til, ved at logge på Azure-portalen og vælge den Azure Bot Service-ressourcegruppe, som du har installeret på. Få vist de specifikke instruktioner for hver kanal på Azure Bot Service-kanaler.