확장을 위한 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 확장 명명된 파이프를 사용할 수 있도록 허용하려면 다음을 수행합니다.
봇의
index.js
파일을 편집합니다.봇의 어댑터를 만드는 줄을 찾습니다.
어댑터를 만든 후 다음 문을 추가합니다. 이 문은 환경에서 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' );
변경 내용을 저장합니다.
서비스 요청에 Direct Line App Service 확장에
AspNetCore
필요한 처리기 및 규칙을 추가하려면 봇의web.config
파일을 편집합니다.봇의
web.config
파일을 편집합니다.태그의
webSocket
enabled
특성을 .로 변경합니다true
.<webSocket enabled="true" />
<handlers>
섹션에서 다음 처리기에 대한 등록을 추가합니다.<add name="aspNetCore" path="*/.bot/*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
<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>
변경 내용을 저장합니다.
업데이트된 봇을 Azure에 다시 배포합니다.
봇 Direct Line App Service 확장 사용
Azure Portal에서 Azure Bot 리소스로 이동합니다.
- 설정 아래에서 채널을 선택하여 봇이 메시지를 수락하는 채널을 구성합니다.
- 아직 사용하도록 설정되지 않은 경우 사용 가능한 채널 목록에서 직접 회선 채널을 선택하여 채널을 사용하도록 설정합니다.
- 직접 회선을 사용하도록 설정한 후 채널 페이지에서 다시 선택합니다.
- App Service 확장 탭을 선택합니다.
- App Service 확장 키에서 해당 키 옆에 있는 눈 아이콘을 선택합니다.
홈 페이지로 이동하여 페이지 맨 위에 있는 App Services를 선택합니다. 또는 포털 메뉴를 표시한 다음 App Services 메뉴 항목을 선택합니다. Azure에서 App Services 페이지를 표시합니다 .
검색 상자에 Azure Bot 리소스 이름을 입력합니다. 리소스가 나열됩니다.
아이콘이나 메뉴 항목을 마우스로 가리키면 마지막으로 본 리소스 목록이 표시됩니다. Azure Bot 리소스가 나열될 가능성이 높습니다.
리소스 링크를 선택합니다.
설정 섹션에서 구성 메뉴 항목을 선택합니다.
오른쪽 패널에서 다음 설정을 추가합니다.
속성 값 DirectLineExtensionKey 이전에 복사한 App Service 확장 키의 값입니다. DIRECTLINE_EXTENSION_VERSION latest 퍼블릭 포털을 통해 Azure에 액세스하지 않는 소버린 또는 기타 제한된 Azure 클라우드에서 봇이 호스트되는 경우 다음 설정도 추가해야 합니다.
속성 값 DirectLineExtensionABSEndpoint 봇이 호스트되는 Azure 클라우드와 관련된 엔드포인트입니다. 예를 들어 USGov 클라우드의 경우 엔드포인트는 .입니다 https://directline.botframework.azure.us/v3/extension
.구성 섹션 내에서 일반 설정 섹션을 선택하고 웹 소켓을 켭니다.
저장을 선택하여 설정을 저장합니다. 그러면 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 엔드포인트에서 표시하는 ib 및 ob 값이 false이면 봇과 Direct Line App Service 확장이 서로 연결할 수 없습니다.
- 명명된 파이프를 사용하는 코드가 봇에 추가된 검사 두 번 추가되었습니다.
- 봇이 시작하고 실행할 수 있는지 확인합니다. 유용한 도구는 WebChat에서 테스트, 추가 채널 연결, 원격 디버깅 또는 로깅입니다.
- 봇이 호스팅되는 전체 Azure 앱 서비스를 다시 시작하여 클린 모든 프로세스를 시작하도록 합니다.
.bot 엔드포인트의 초기화된 값이 false이면 Direct Line App Service 확장에서 위의 봇 애플리케이션 설정 추가된 App Service 확장 키의 유효성을 검사할 수 없습니다.
- 값이 올바르게 입력되었는지 확인합니다.
- 봇의 직접 회선 구성 페이지에 표시된 대체 확장 키로 전환합니다.