전철의 운행 정보를 가르쳐 주는 Alexa Skill을 만들어 보았다

이 기사는 Google Home 용으로 만든 기차의 운행 정보를 가르쳐주는 Assistant 대응 앱을 만들어 보았다.의 Alexa Skill 버전입니다.

구성



Alexa Skill의 기본 구성은 다음과 같습니다. Lambda의 일부는 Heroku 등을 사용하여 직접 준비한 서비스를 사용할 수도 있습니다. 이번에는 그대로 람다를 사용했습니다.



이러한 기본 구성은 회사 동료가 만든 아내를 달래는 Skill 을 참고하면 큰 프레임은 완성됩니다. 이번은 그 이외의 부분을 중심으로 정리합니다.

알렉사 스킬 키트



Amazon Echo를 향해 「○○를 열어」라고 말하면 기동해, 다양한 음성 커멘드에 반응하는 구조를 자전으로 만들 수 있는 플랫폼이 Alexa Skill입니다.

Skill Builder



Skill Builder는 여전히 BETA 기능이지만 Google Home의 Dialog Flow와 같이 복잡한 음성 명령에 해당하는 Skill을 개발할 수 있습니다. 우선, 아래와 같이 운행 정보를 문의하는 커스텀 Intent를 작성합니다.


Train 의 부분은 커스텀 슬롯에서 아래와 같이 Synonyms(동의어)의 설정을 할 수 있습니다.



Synonyms를 설정하면 다른 단어도 같은 의미로 해석하고 처리 할 수 ​​있습니다.

람다



Synonyms(동의어)로 설정한 id 다음은 Node.js에서 구현한 예입니다.
// 省略
  'TrainStatusIntent': function () {
    var train = this.event.request.intent.slots.Train;
    var speechOutput = train.value + 'の運行情報を取得できませんでした。';
    // SlotにSynonymが設定されているかをチェックして鉄道会社ごとにサイトをチェックする

    if ('resolutions' in train) {
      if (train.resolutions["resolutionsPerAuthority"][0]["status"]["code"] == 'ER_SUCCESS_MATCH') {
        var slotId = train.resolutions["resolutionsPerAuthority"][0]["values"][0]["value"]["id"];

        if ( slotId==='HANKYU' ) {
          // 阪急のサイトで運行情報を取得する
        } else if ( slotId==='HANSHIN' ) {
          // 阪神のサイトで運行情報を取得する
        }
      }
    }

    console.log(speechOutput);
    this.emit(':tell', speechOutput);
  },
// 省略

Skill Builder에서 Synonyms를 설정한 경우 위와 같이 resolutions 부하를 확인하여 동의어 id를 얻을 수 있습니다. 자세한 것은 다른 기사에 정리했습니다.

IntentRequest 내에서 Custom Slot Type의 동의어 정보를 가져옵니다.

또, 운행 정보를 취득할 때에 외부 액세스 하면 응답까지 조금 시간이 걸리기 때문에 타임 아웃의 설정을 디폴트보다 조금 길게 해 두는 것이 좋을 것입니다.



요약



Alexa Skill Kit와 Lambda를 설정하면 Skill 테스트가 가능하지만 위의 다른 기사에도 썼습니다. Synonym 설정은 서비스 시뮬레이터에서 테스트 할 수 없습니다. 구성은 Google Assinstant 대응 앱보다 심플하고 알기 쉽도록 생각합니다만 Beta 기능으로 개발 도상인 곳은 약간 알기 어려울지도 모릅니다. Test Simulator라고 하는 Beta 기능도 있습니다만 이번은 제대로 사용하지 못했으므로 설명은 생략합니다. 이러한 베타 기능을 공식적으로 사용할 수 있게 되면 더 개발하기 쉬워질 수 있습니다. 다만, 기본적인 구조를 이해해 두면 개발의 순서는 그다지 난이도는 높지 않다고 생각합니다.

이번 샘플로 만든 람다의 스크립트는 아래에 놓았습니다.

AlexaSkilll-TrainStatus

좋은 웹페이지 즐겨찾기