다음을 통해 공유


확장을 위한 Node.js 봇 구성

2023년 9월 1일부터 네트워크 격리를 위해 Azure 서비스 태그 방법을 사용하는 것이 좋습니다. DL-ASE의 사용률은 매우 구체적인 시나리오로 제한되어야 합니다. 프로덕션 환경에서 이 솔루션을 구현하기 전에 지원 팀에 지침을 문의하는 것이 좋습니다.

적용 대상: SDK v4

이 문서에서는 명명된 파이프를 사용하도록 Node.js 봇을 업데이트하는 방법과 봇이 호스트되는 Azure 앱 Service 리소스에서 Direct Line App Service 확장을 사용하도록 설정하는 방법을 설명합니다.

필수 조건

  • Azure 계정. 아직 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
  • Azure에 배포된 Node.js 봇입니다.
  • Node.js용 Bot Framework SDK, 4.7 이상.

직접 회선 App Service 확장 사용

이 섹션에서는 봇의 직접 회선 채널 구성에서 App Service 확장 키를 사용하여 Direct Line App Service 확장을 사용하도록 설정하는 방법을 설명합니다.

봇 코드 업데이트

앱이 Direct Line App Service 확장 명명된 파이프를 사용할 수 있도록 허용하려면 다음을 수행합니다.

  1. 봇의 index.js 파일을 편집합니다.

    1. 봇의 어댑터를 만드는 줄을 찾습니다.

    2. 어댑터를 만든 후 다음 문을 추가합니다. 이 문은 환경에서 App Service 이름을 가져오고 어댑터에 적절한 명명된 파이프에 연결하도록 지시합니다.

      • 봇이 (권장)를 CloudAdapter 사용하는 경우:

        adapter.connectNamedPipe(
            process.env.APPSETTING_WEBSITE_SITE_NAME + '.directline',
            async (context) => {
                await myBot.run(context);
            },
            process.env.MicrosoftAppId,
            AuthenticationConstants.ToChannelFromBotOAuthScope);
        
      • 봇이 사용되지 BotFrameworkAdapter않는 것을 사용하는 경우:

        adapter.useNamedPipe(async (context) => {
            await myBot.run(context);
            },
            process.env.APPSETTING_WEBSITE_SITE_NAME + '.directline'
        );
        
    3. 변경 내용을 저장합니다.

  2. 서비스 요청에 Direct Line App Service 확장에 AspNetCore 필요한 처리기 및 규칙을 추가하려면 봇의 web.config 파일을 편집합니다.

    1. 봇의 web.config 파일을 편집합니다.

    2. 태그의 webSocket enabled 특성을 .로 변경합니다 true.

      <webSocket enabled="true" />
      
    3. <handlers> 섹션에서 다음 처리기에 대한 등록을 추가합니다.

      <add name="aspNetCore" path="*/.bot/*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      
    4. <rewrite> 섹션에서 규칙 목록에 다음 규칙을 추가합니다.

      <!-- Do not interfere with Direct Line App Service extension requests. (This rule should be as high in the rules section as possible to avoid conflicts.) -->
      <rule name ="DLASE" stopProcessing="true">
        <conditions>
          <add input="{REQUEST_URI}" pattern="^/.bot"/>
        </conditions>
      </rule>
      
    5. 변경 내용을 저장합니다.

  3. 업데이트된 봇을 Azure에 다시 배포합니다.

봇 Direct Line App Service 확장 사용

  1. Azure Portal에서 Azure Bot 리소스로 이동합니다.

    1. 설정 아래에서 채널을 선택하여 봇이 메시지를 수락하는 채널을 구성합니다.
    2. 아직 사용하도록 설정되지 않은 경우 사용 가능한 채널 목록에서 직접 회선 채널을 선택하여 채널을 사용하도록 설정합니다.
    3. 직접 회선을 사용하도록 설정한 후 채널 페이지에서 다시 선택합니다.
    4. App Service 확장 탭을 선택합니다.
    5. App Service 확장 키에서 해당 키 옆에 있는 눈 아이콘을 선택합니다.
  2. 홈 페이지로 이동하여 페이지 맨 위에 있는 App Services를 선택합니다. 또는 포털 메뉴를 표시한 다음 App Services 메뉴 항목을 선택합니다. Azure에서 App Services 페이지를 표시합니다 .

  3. 검색 상자에 Azure Bot 리소스 이름을 입력합니다. 리소스가 나열됩니다.

    아이콘이나 메뉴 항목을 마우스로 가리키면 마지막으로 본 리소스 목록이 표시됩니다. Azure Bot 리소스가 나열될 가능성이 높습니다.

  4. 리소스 링크를 선택합니다.

    1. 설정 섹션에서 구성 메뉴 항목을 선택합니다.

    2. 오른쪽 패널에서 다음 설정을 추가합니다.

      속성
      DirectLineExtensionKey 이전에 복사한 App Service 확장 키의 값입니다.
      DIRECTLINE_EXTENSION_VERSION latest
    3. 퍼블릭 포털을 통해 Azure에 액세스하지 않는 소버린 또는 기타 제한된 Azure 클라우드에서 봇이 호스트되는 경우 다음 설정도 추가해야 합니다.

      속성
      DirectLineExtensionABSEndpoint 봇이 호스트되는 Azure 클라우드와 관련된 엔드포인트입니다. 예를 들어 USGov 클라우드의 경우 엔드포인트는 .입니다 https://directline.botframework.azure.us/v3/extension.
    4. 구성 섹션 내에서 일반 설정 섹션을 선택하고 웹 소켓을 켭니다.

    5. 저장을 선택하여 설정을 저장합니다. 그러면 Azure 앱 서비스가 다시 시작됩니다.

직접 회선 확장 및 봇이 구성되었는지 확인

브라우저에서 https://<your_app_service>.azurewebsites.net/.bot으로 이동합니다. 모든 것이 올바르면 페이지에서 다음 JSON 콘텐츠를 반환합니다.

    {"v":"123","k":true,"ib":true,"ob":true,"initialized":true}
  • v 는 Direct Line App Service 확장의 빌드 버전을 보여줍니다.
  • k 는 확장이 해당 구성에서 확장 키를 읽을 수 있는지 여부를 나타냅니다.
  • initialized 는 확장이 Azure AI Bot Service에서 봇 메타데이터를 다운로드할 수 있는지 여부를 나타냅니다.
  • ib 는 확장이 봇에 대한 인바운드 연결을 설정할 수 있는지 여부를 나타냅니다.
  • ob 은 확장이 봇에서 아웃바운드 연결을 설정할 수 있는지 여부를 나타냅니다.

문제 해결

  • .bot 엔드포인트에서 표시하는 ibob 값이 false이면 봇과 Direct Line App Service 확장이 서로 연결할 수 없습니다.

    1. 명명된 파이프를 사용하는 코드가 봇에 추가된 검사 두 번 추가되었습니다.
    2. 봇이 시작하고 실행할 수 있는지 확인합니다. 유용한 도구는 WebChat에서 테스트, 추가 채널 연결, 원격 디버깅 또는 로깅입니다.
    3. 봇이 호스팅되는 전체 Azure 앱 서비스를 다시 시작하여 클린 모든 프로세스를 시작하도록 합니다.
  • .bot 엔드포인트초기화된 값이 false이면 Direct Line App Service 확장에서 위의 봇 애플리케이션 설정 추가된 App Service 확장 키의 유효성을 검사할 수 없습니다.

    1. 값이 올바르게 입력되었는지 확인합니다.
    2. 봇의 직접 회선 구성 페이지에 표시된 대체 확장 키로 전환합니다.

다음 단계