Dela via


Ansluta en robot till Direct Line

I den här artikeln beskrivs hur du ansluter en robot till Direct Line-kanalen . Använd den här kanalen för att kommunicera med en robot via klientprogrammet.

Anmärkning

Direct Line är en standardkanal via HTTPS-protokollet för att tillåta kommunikation mellan ett klientprogram och en robot. Om du behöver nätverksisolering i stället använder du Direct Line App Service-tillägget över WebSockets.

Förutsättningar

  • Ett Azure-konto. Om du inte redan har ett skapar du ett kostnadsfritt konto innan du börjar.
  • En befintlig robot som har publicerats i Azure.

Lägg till direct line-kanalen

Det första du behöver göra är att lägga till Direct Line-kanalen i roboten.

  1. Gå till Azure-portalen.
  2. Gå till din Azure Bot-resurs. Under Robotinställningar väljer du Kanaler.
  3. Välj Direct Line i listan med tillgängliga kanaler.

Roboten har nu konfigurerats för att använda Direct Line genom Default site.

Du kan också lägga till en ny webbplats i stället för att använda standardwebbplatsen. Välj knappen Ny webbplats på sidan Direktlinjekanal för att skapa en ny webbplats. Direktradsknapp för ny webbplats i Azure-portalen

Hantera hemliga nycklar

När du lägger till Direct Channel genererar Bot Framework hemliga nycklar. Klientapplikationen använder dessa nycklar för att autentisera Direct Line API-begäranden som den utfärdar för att kommunicera med en bot. Mer information finns i Authentication.

  1. Om du vill visa en webbplats Direct Line-hemlighet i klartext går du till sidan Direct Line-kanal.

  2. Välj fliken Direktlinje och sedan den webbplats som du vill hämta nyckeln för, till exempel Default_Site. Azure öppnar fönstret Konfigurera webbplats .

  3. Under Hemliga nycklar väljer du ögonikonen bredvid motsvarande nyckel.

    Visa Direct Line-nycklar

  4. Kopiera och lagra nyckeln på ett säkert sätt. Använd nyckeln för att autentisera Direct Line API-anrop som din klientapplikation gör för att kommunicera med en bot.

    Anmärkning

    Hemligheter ska inte exponeras eller bäddas in i klientprogram. Se nästa steg.

  5. Det bästa sättet är att använda Direct Line API för att byta ut nyckeln mot en token. Klientprogrammet använder sedan token för att autentisera sina begäranden inom ramen för en enda konversation.

Konfigurera inställningar

Så här konfigurerar du webbplatsinställningarna:

  1. På sidan för Direct Line-kanalen väljer du den webbplats som du vill konfigurera från listan Webbplatser. Fönstret Konfigurera webbplats öppnas, som visas nedan: Konfigurera webbplatsfönstret

  2. Välj den direct line-protokollversion som klientprogrammet ska använda för att kommunicera med en robot.

    Tips/Råd

    Om du skapar en ny anslutning mellan klientprogrammet och roboten använder du Direct Line API 3.0.

  3. När du är klar väljer du Använd för att spara platskonfigurationen. Upprepa den här processen, från och med en ny webbplats, för varje klientprogram som du vill ansluta till din robot.

Konfigurera förbättrad autentisering

En av de tillgängliga platskonfigurationerna är Förbättrade autentiseringsalternativ, vilket hjälper till att minska säkerhetsriskerna vid anslutning till en robot (till exempel med hjälp av webbchattkontrollen). Mer information finns i Utökad direktlinjeautentisering.

Så här lägger du till förbättrad autentisering:

  1. Aktivera Förbättra alternativ för autentisering. Ett meddelande med texten "Du måste ha minst ett betrott ursprung." visas med länken Lägg till ett betrott ursprung . Om du aktiverar den förbättrade autentiseringen måste du ange minst ett betrott ursprung.

    Ett betrott ursprung är en domän som används av systemet för att autentisera användare. I det här fallet använder Direct Line domänen för att generera en token.

    • Om du konfigurerar betrott ursprung som en del av konfigurationsgränssnittssidan används de här inställningarna alltid som den enda uppsättningen för generering av en token. Att skicka ytterligare betrodda ursprung (eller ange betrodda ursprung som 'ingen') när du antingen genererar en token eller startar en konversation ignoreras (de läggs inte till i listan eller valideras mot varandra).
    • Om du inte har aktiverat förbättrad autentisering används alla ursprungs-URL:er som du skickar som en del av API-anropen. Lägg till betrott ursprung
  2. När du har lagt till en betrodd domän-URL väljer du Använd.

Exempelrobot för Direct Line

Du kan ladda ned ett .NET-exempel från den här platsen: Exempel på direktradsrobot.

Exemplet innehåller två projekt:

  • DirectLineBot. Den skapar en robot för att ansluta via en Direct Line-kanal.
  • DirectLineClient. Det här är ett konsolprogram som pratar med den tidigare roboten via Direct Line-kanalen.

API för Direct Line

  • Autentiseringsuppgifter för Direct Line-API:et måste hämtas från Azure Bot-registreringen och tillåter endast anroparen att ansluta till roboten som de genererades för. Uppdatera filen i robotprojektet appsettings.json med dessa värden.

    {
    "MicrosoftAppId": "",
    "MicrosoftAppPassword": ""
    }
    
  • I Azure-portalen aktiverar du Direct Line i kanallistan och konfigurerar sedan Direct Line-hemligheten. Kontrollera att kryssrutan för version 3.0 är markerad. I konsolklientprojektet uppdaterar du App.config-filen med Direct Line hemlighetsnyckeln och botkontakt (Bot-ID).

    <appSettings>
        <add key="DirectLineSecret" value="YourBotDirectLineSecret" />
        <add key="BotId" value="YourBotHandle" />
    </appSettings>
    

Användarmeddelanden skickas till roboten med hjälp av metoden Direct Line Client Conversations.PostActivityAsync med hjälp av den ConversationId som genererades tidigare.

while (true)
{
    string input = Console.ReadLine().Trim();

    if (input.ToLower() == "exit")
    {
        break;
    }
    else
    {
        if (input.Length > 0)
        {
            Activity userMessage = new Activity
            {
                From = new ChannelAccount(fromUser),
                Text = input,
                Type = ActivityTypes.Message
            };

            await client.Conversations.PostActivityAsync(conversation.ConversationId, userMessage);
        }
    }
}