Bot Framework SDK for Java로 만든 웹 애플리케이션과 로컬 환경에서 대화하기

Bot을 개발할 수 있는 Bot Framework는 현재 4개 언어의 SDK를 제공합니다.



자바는 여전히 미리보기 하지만, GitHub에 샘플 가 있었으므로 시험해 보았습니다.



echo-bot 시작



시도한 것은 입력한 메시지를 앵무새 반환하는 '02.echo-bot'입니다. 이 샘플은 Spring Boot에서 구현됩니다.

BotBuilder-Samples를 복제하여 '02.echo-bot' 폴더를 엽니다.
git clone https://github.com/microsoft/BotBuilder-Samples.git

빌드
mvn clean package

실행합니다.
java -jar /target/*.jar

그러면 다음 화면이 표시됩니다.



Emulator 준비



이번에는 로컬 환경에서 시도하기 위해 Emulator를 다운로드합니다.

htps : // 기주 b. 이 m/미 c로소 ft/보 tF 라메를 rk-에무아와 r/레에아세 s/타 g/v4.5.2


실행하면 다음과 같은 화면이 표시됩니다.



화면 왼쪽 하단의 설정(기어 마크 아이콘)을 클릭합니다.



ngrok를 다운로드합니다.



"Path to ngrok"로 다운로드한 ngrok 실행 파일의 경로를 지정합니다.



Emulator 시작 후 나타나는 첫 번째 화면을 다시 열고 'Open Bot' 버튼을 사용하여 Spring Boot 샘플 URL을 설정합니다.



설정은 이상입니다. Emulator에 메시지를 입력하면 앵무새 반환에서 동일한 메시지가 반환됩니다.



빠진 것



처음 로컬 환경에서 실행할 때는 ngrok는 불필요한가라고 (멋대로) 생각하고 있어, 「Path to ngrok」를 비우고 있었습니다. 그리고 Emulator에서 메시지를 입력하면 다음 오류가 발생하여 원인을 잘 모르고 곤란했습니다.
POST 500 directline/conversations/<conversationId>/activities

Spring Boot에서는 다음 로그가 나오고 포트 번호가 다르므로 ngrok에서 터널링하지 않는 것일까? 라고 시도했는데 잘 작동했습니다.
ERROR 11362 --- [          Bot-1] c.m.b.i.AdapterWithErrorHandler          : onTurnError

java.util.concurrent.CompletionException: java.net.ConnectException: Failed to connect to localhost/127.0.0.1:62833
        at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331) ~[na:na]
        at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346) ~[na:na]
        at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:632) ~[na:na]
        at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[na:na]
        at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) ~[na:na]
        at retrofit2.CompletableFutureCallAdapterFactory$ResponseCallAdapter$2.onFailure(CompletableFutureCallAdapterFactory.java:123) ~[retrofit-2.5.0.jar!/:na]

이하의 문서를 베이스로 진행하고 있었습니다만, ngrok 주위의 설정이 세세하게 나오지 않기 때문에 빠져 버렸습니다.

이것을 Azure의 Bot Service에 배포하고 싶지만 방법을 모르겠습니다 ...라고 생각하면 아래에 썼습니다.

좋은 웹페이지 즐겨찾기