ETC/기타

[Aog] Dialogflow 와 java와 연동하기 (1)

지과쌤 2020. 7. 9.
반응형

 

developers.google.com/assistant/conversational/df-asdk/overview

 

Conversational Actions  |  Dialogflow and legacy Actions SDK

Conversational Actions extend the functionality of the Google Assistant by allowing developers to create custom experiences, or conversations, for users on the Assistant. In a conversation, your Conversational Action handles requests from the Assistant and

developers.google.com

위 문서를 먼저 잘 읽고 연동 방법부터 기본적인 뼈대 구성은 숙지하는것이 좋습니다.

 

Responses - rich responses 탭을 보면 여러 sample code가 나와있습니다.

 

일단 이번 프로젝트는 java를 사용할 예정이기때문에, java dialogflow 를 참고하여 연동시키도록 하겠습니다.

 

아래는 대략적인 example code입니다.

 

github.com/actions-on-google/dialogflow-quickstart-java/blob/f2e00259169b365320f75d5ccbc530bf5ea6864f/responses/src/main/java/com/example/MyActionsApp.java

 

actions-on-google/dialogflow-quickstart-java

Documentation samples for Actions on Google (Dialogflow/Java) - actions-on-google/dialogflow-quickstart-java

github.com

 

현재 회사 서버를 통해서 기능을 구현하고있기때문에 전체적인 코드는 이후 깃에 업로드 할 예정입니다.

 

https://github.com/jerrygoha/2020_summer_intern

 

jerrygoha/2020_summer_intern

Contribute to jerrygoha/2020_summer_intern development by creating an account on GitHub.

github.com

 

 


TestLck_Schedule 이라는 intent를 생성한 후, 간단하게 "스케줄" 이라는 키워드만 traning phrases에 등록한 후 진행합니다.

 

현재 존재하는 intent는

 

이렇게 두개로 놓고 dialog 설정들을 모두 저장합니다. default welcome intent 는 기본으로 생성되어있는 intent입니다.

 

 

Intent - Default Welcome Intent

	@ForIntent("Default Welcome Intent")
	public ActionResponse defaultWelcome(ActionRequest request) throws ExecutionException, InterruptedException {
		ResponseBuilder rb = getResponseBuilder(request);

		SimpleResponse simpleResponse = new SimpleResponse();
		BasicCard basicCard = new BasicCard();

		simpleResponse.setTextToSpeech("안녕하세요, 테스트앱 입니다.")
				.setDisplayText("안녕하세요, 테스트앱 입니다.")
		;
		basicCard
				.setTitle("베이직 카드 제목")
				.setFormattedText("테스트용 베이직 카드")
				.setImage(new Image().setUrl(" 이미지 삽입 ")
						.setAccessibilityText("home"));

		rb.add(simpleResponse);
		rb.add(basicCard);

		return rb.build();
	}

 

Intent - TestLck_Schedule

	@ForIntent("TestLck_Schedule")
			public ActionResponse scheduleView(ActionRequest request) throws ExecutionException, InterruptedException {
			ResponseBuilder rb = getResponseBuilder(request);

		
			SimpleResponse simpleResponse = new SimpleResponse();
			BasicCard basicCard = new BasicCard();

			simpleResponse.setTextToSpeech("안녕하세요, 스케줄 입니다.")
			.setDisplayText("안녕하세요, 스케줄 입니다.")
			;
			basicCard
			.setTitle("스케줄을 나타내는 제목입니다.")
			.setFormattedText("스케줄을 나타내는 텍스트입니다.")
			.setImage(new Image().setUrl(" 이미지 삽입 ")
					.setAccessibilityText("home"));

			rb.add(simpleResponse);
			rb.add(basicCard);

			return rb.build();
			}

 

ResponseBuilder 선언 / SimpleResponse 선언 / basicCard 선언 이후 response와 basiccard에 관한 부분을 작성해줍니다.

setTextToSpeech -> TTS

 

setDisplayText -> text view

 

setTitle -> basicCard title

 

setFormattedText -> text view

 

setImage -> input imageUrl

 

setAccessibilityText -> comment

 

기본적인 틀 구성 후 빌드!

 

 

처음 호출한 후.

TTS -> 안녕하세요 테스트앱입니다. 

 

text view(우측) -> 안녕하세요 테스트앱니다.

 

basicCard title -> 베이직 카드 제목

 

text view(스마트 디스플레이 내부) -> 테스트용 베이직 카드

 

input imageUrl -> 임의로 넣은 사진이 제대로 출력됨(gif도 가능)

 

comment -> 사진에 home 이라는 코멘트가 달려있을것이다.

 

스케줄 키워드를 호출한 상황

 

사전에 설정해둔 text와 TTS가 정상적으로 나오는 모습이다.

 

반응형

댓글

💲 추천 글