alexa로 알림을 건너 뛰기

6898 단어 알렉사

개요



프로 액티브 이벤트 API를 사용하여 사용자에게 이벤트 (알림)를 보았습니다.

이 내용을 실제로 해보겠습니다.

프로액티브 이벤트란?



스킬에서 발급된 ClientID+ClientSecret을 이용하여
모든 사용자 또는 모든 사용자에게
알림 을 보낼 수 있습니다.

알림이 전송되면 Echo Dot의 경우, "폰"이라고 소리를 내고 LED가 노란색으로 빛나고, "알렉사, 알림은 무엇?"라고 말하면 그 상세를 확인할 수 있습니다.

해봤어



만드는 것


  • alexa skill (알리는 측의 스킬)
  • 이벤트 통지를 받는 lambda (subscribe 하는 측의 lambda)
  • 실제로 이 lambda가 이용되는 장면은 잘 모르지만, 준비하지 않으면 설정할 수 없는 모양.


  • 1. alexa 스킬 만들기



    메인이 되는 alexa 스킬, 즉 통지하는 측의 스킬을 작성합니다.

    이번에도 에서, 사쿠와 샘플 앱을 만듭니다.
    (별로 무엇이든 괜찮습니다.)

    2. subscribe 할 lambda 만들기



    serverless framework를 이용하여 lambda를 만듭니다.
    $ serverless create --template aws-nodejs --path subscribe-event-lambda
    

    이벤트 알림을 받으려면 lambda의 입력 트리거로 skillId를 지정하여 alexa와 함께 작동합니다.
    serverless framework에서는 events 부분을 추가하면 OK입니다.

    serverless.yml
    functions:
      hello:
        handler: handler.hello
        events:
          - alexaSkill: amzn1.ask.skill.xxx
    

    3. skill.json 설정



    alexa skill 측 설정으로 돌아갑니다.
    이벤트 통지용의 permission 를 추가합니다.

    skill.json
    $ cat skill.json | jq .manifest.events
    {
      "publications": [
        {
          "eventName": "AMAZON.OrderStatus.Updated"
        },
        {
          "eventName": "AMAZON.MessageAlert.Activated"
        }
      ],
      "subscriptions": [
        {
          "eventName": "SKILL_PROACTIVE_SUBSCRIPTION_CHANGED"
        }
      ],
      "endpoint": {
        "uri": "arn:aws:lambda:us-east-1:XXX:function:subscribe-event-lambda-dev-hello"
      }
    }
    
    publications 에서는, 여기 를 참고에 통지하는 이벤트를 설정합니다.
    subscriptions 는 없어도 움직입니다만, 샘플로부터 copipe 해 둡니다.
    이 설명이 있으면 스킬을 활성화한 시점에서 hello lambda가 시작되는 것 같습니다.
    endpoint 는 필수인 것 같습니다. 사용되는 타이밍은 알 수 없습니다.

    이상으로 skill측의 설정은 완료이므로 변경점을 deploy합니다.
    $ ask deploy
    

    4. 알림을 건너뜁니다.



    알림을 건너뛰려면 두 개의 API를 두드려야 합니다.
  • 액세스 토큰 얻기
  • 알림 API (ProactiveEvents API) 호출
  • 1.アクセストークンの取得 에서 이용하는 clientId와 clientSecret는,
    alexa developer console의 「스킬」-> 「액세스 권한」-> 「Alexa 스킬 메시징」의 것을 이용합니다.
    2. 通知APIを呼び出す 에서는, 지정의 유저 또는 전원의 어느쪽이든을 선택할 수 있습니다만, 이번은 지정의 유저에게 통지합니다.
    또한 userId의 특정은 alexa skill에 로그를 넣어 거기에서 확인하는 방법을 사용했습니다.
    console.log(JSON.stringify(handlerInput.requestEnvelope, null , "\t"));
    

    문서에는 curl을 사용하여 두드리는 예가 나열되어 있지만, 간단하게 이 코드를 사용합니다.
    htps : // 기주 b. 코 m / 테쿠 토오 / 아오 코 k 보오 k / b ぉ b / 후 아츠레 / 모 dp 로아 c ゔ ぇ ゔ ぇ ts / 후 아츠레 - s /s ㅇㅔㅔㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅎㅎㅎㅎ js

    원래 코드를 일부 했습니다. (일부 변수를 환경 변수로 설정)
    변경점

    통지 해 봅니다.

    (덧붙여, 예와 같이 실제 기계가 아니면 아마 움직이지 않을지도 모릅니다. iPhone의 alexa 앱이라고 안 될지도 모릅니다.)
    # 環境変数をセットします。
    $ export CLIENT_ID=hogehoge
    $ export CLIENT_SECRET=fugafuga
    $ export USER_ID=amzn1.ask.account.xxx
    
    $ node order.js #通知します。
    

    기타


  • GitHub에 매우 유용한 샘플 모음이 있습니다.
    htps : // 기주 b. 코 m / 오 / 아 / 코 호 k k / t ree / ma s r / 후 아츠레 - s
  • 좋은 웹페이지 즐겨찾기