Dialogflow 자습서를 Actions on Google API v2 지원

소개



가볍게 Dialogflow를 만져 보려고 구그하면 Google 공식 같은 튜토리얼을 발견했기 때문에 시도해 보았는데, Actions on Google에서 에러가 되었으므로 대응을 메모해 둡니다.

시도한 튜토리얼은 이쪽.
Dialogflow로 처음 앱 빌드

※ 2018/07/10 시점의 정보이므로, 튜토리얼 페이지가 업데이트되면 이 기사는 불필요하게 됩니다.

Dialogflow란?



Google의 채팅봇 프레임워크, 괜찮을까. 옛날에는 Api.ai라는 이름이었습니다. Actions on Google, Slack 등과 연동하여 음성/텍스트 사용자 인터페이스를 만들 수 있습니다.

Dialogflow

그 외 나오는 서비스명등은 튜토리얼을 실시하는 분이라면 설명 불필요하다고 생각하므로, 설명은 생략.

튜토리얼에서 오류 발생



순조롭게 진행 중이었지만 '완료 빌드'에서 오류가 발생했습니다 (Actions on Google에서 답변이 반환되지 않았습니다). Fulfillment는 Webhook에서 Firebase의 Functions를 호출하는 곳입니다.

Firebase 콘솔에서 로그를 확인할 때 다음 줄이있었습니다.
Error: Dialogflow v2 is not currently supported

무엇이 문제였는가



로그에서 볼 수 있듯이 Dialogflow API가 v1에서 v2로 업그레이드되었습니다.
Dialogflow 의 페이지에 액세스하면 상부에 경고 표시되고 있었으므로 「헤ー」라고 생각해 즉[DISMISS] 하고 있었습니다만, 튜토리얼도 대응 미제였습니다.



v1에서 v2로의 마이그레이션에 대해서는 경고의 "Learn how to migrate your V1 agents here"의 링크도 괜찮습니다. 하고 있어 알기 쉽기 때문에, 이쪽을 참조하면 좋다고 생각합니다.

Actions on Google Node.js Client Library Version 1 Migration Guide

API v2에 대한 대응 코드



일단 튜토리얼을 움직인 곳이므로 v2 에서의 변경점은 본 기사에서는 해설하지 않습니다만, 대응한 튜토리얼의 코드를 실어 둡니다.
const functions = require('firebase-functions');
const { dialogflow } = require('actions-on-google');

// a. the action name from the make_name Dialogflow intent
const NAME_ACTION = 'make_name';

// b. the parameters that are parsed from the make_name intent 
const COLOR_ARGUMENT = 'color';
const NUMBER_ARGUMENT = 'number';

const app = dialogflow();

// c. The function that generates the silly name
app.intent(NAME_ACTION, (conv => {
  let number = conv.parameters[NUMBER_ARGUMENT];
  let color = conv.parameters[COLOR_ARGUMENT];
  conv.close('Alright, your silly name is ' +
             color + ' ' + number +
             '! I hope you like it. See you next time.');
}));

exports.sillyNameMaker = functions.https.onRequest(app);

요약



튜토리얼 등의 일본어 번역은 고맙습니다만, 최신에의 추종이 늦어지기 때문에 주의가 필요하네요. (튜토리얼 최종 갱신일이 2018/3/20, API v2로의 마이그레이션이 2018/4/16…

좋은 웹페이지 즐겨찾기