Dela via


Anslut 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.

Kommentar

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 Robot Inställningar väljer du Kanaler.
  3. Välj Direktrad i listan över tillgängliga kanaler.

Roboten har nu konfigurerats för att använda Direct Line med hjälp av standardwebbplatsen.

Du kan också lägga till en ny webbplats i stället för att använda standardwebbplatsen. Välj knappen Ny webbplatssidan Direktlinjekanal för att skapa en ny webbplats. Direct Line new site button in Azure portal

Hantera hemliga nycklar

När du lägger till Direct Channel genererar Bot Framework hemliga nycklar. Klientprogrammet använder dessa nycklar för att autentisera direct line API-begäranden som det har problem med att kommunicera med en robot. Mer information finns i Autentisering.

  1. Om du vill visa en webbplats direktradshemlighet i oformaterad text går du till sidan Direktlinjekanal .

  2. Välj fliken Direktrad 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.

    Show Direct Line keys

  4. Kopiera och lagra nyckeln på ett säkert sätt. Använd nyckeln för att autentisera direct line API-begäranden som klientprogrammet har problem med att kommunicera med en robot.

    Kommentar

    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 Direktradskanal väljer du den plats som du vill konfigurera i listan Webbplatser . Fönstret Konfigurera webbplats öppnas, som visas nedan: Configure site pane

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

    Dricks

    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 Webbchatt kontroll). Mer information finns i Utökad direktlinjeautentisering.

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

  1. Aktivera Alternativet Förbättra 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 betrott ursprung (eller ange betrott ursprung till inget) när du antingen genererar en token eller startar en konversation ignoreras (de läggs inte till i listan eller kors verifieras).
    • Om du inte har aktiverat förbättrad autentisering används alla ursprungs-URL:er som du skickar som en del av API-anropen. Add trusted origin
  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 direktlinjekanal.
  • DirectLineClient. Det här är ett konsolprogram som pratar med den tidigare roboten via Direct Line-kanalen.

API för direktrad

  • 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 med dessa värden i robotprojektet appsettings.json .

    {
    "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 App.config du filen med direktradshemlighetsnyckeln och robothandtaget (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);
        }
    }
}