Google Assistant 앱으로 위치 정보 얻기

Actions on Google은 권한을 제대로 요청하여,
위치 정보를 비롯한 사용자의 정보를 얻을 수 있습니다.

거친 흐름



크게 나누면 이런 느낌입니다.
  • fulfillment로 허가를 요구하는 처리를 이동한다
  • Intent에서 허가를 받은 결과를 받는다
  • 취득한 정보를 자유롭게 고뇨고 한다

  • 1. fulfillment 로 허가를 요구하는 처리를 이동한다



    허가를 요구하는 처리는 npm 패키지의 actions-on-google 로 정의되고 있는 Permmision 클래스를 이용합니다.Permission 클래스는 응답의 일종으로 이하와 같이 기술합니다.
    import { Permission } from 'actions-on-google'
    
    app.intent('TestIntent', conv => {
      const context = '「位置情報を使ってもいいですか」の前に喋ってほしい内容'
      const permission = ['DEVICE_PRECISE_LOCATION']
    
      conv.ask(new Permission({ context, permission }))
    })
    

    위의 코드를 이동하면 TestIntent 에 들어갔을 경우에 위치 정보를 취득해 좋은지 유저에게 질문하게 됩니다.

    위치 정보 이외의 허가를 요구하고 싶은 경우는 이쪽을 봐 주세요. 위치 정보 외에도 사용자 이름 등이 몇 가지 있습니다.
    htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m/아 c치온 s/레후오렌세/레 st/샤레 d. 타이페스/페르미시온

    2. 허가를 요구한 결과를 Intent에서 받는다



    사용자에게 허가를 요구한 후에는 actions_intent_PERMISSION 라는 이벤트가 발화하므로, 그것을 Dialogflow 로 잡습니다.
    새로운 인텐트를 만들어 아래 그림과 같이 설정합시다.



    허가를 요구한 정보는 fulfillment 로부터 액세스 하므로, 인텐트의 하단에 있는 fulfillment 의 설정을 Enable 로 하는 것을 잊지 말고.

    3. 취득한 정보를 자유롭게 고뇨고



    2로 표시된 이미지와 동일한 인텐트 이름을 지정하면 아래 코드를 사용하여 위치 정보에 액세스할 수 있습니다.
    app.intent('PermissionConfirm', (conv, params, confirmationGranted) => {
      if (!confirmationGranted) { // ユーザーが承認したかどうか
        conv.close('位置情報が取得できませんでした')
      }
    
      console.log(conv.device.location) // 位置情報が入っているオブジェクト
      conv.close('位置情報が取得できました')
    })
    

    이번 허가를 요구한 DEVICE_PRECISE_LOCATION의 경우는 conv.device.location 안에 정보가 들어가 있습니다만,
    다른 권한의 경우는 conv.user 등 다른 장소에 정보가 들어 있습니다.

    아래 페이지에 요청에 포함된 정보가 기재되어 있으므로 허가를 요청한 정보에 따라 확인하시기 바랍니다.
    ぇぺぺrs. 오, ぇ. 코 m/아 c치온 s/레후오렌세/레 st/샤레 d. Type s / Ap Rekue St

    주의점



    한 번 들었던 권한에서도 매번 허가를 요구해야 합니다.
    이름 등 한 번 얻은 정보를 사용자별로 기억해 두고 싶은 경우에는 다음 두 가지를 수행해야 합니다.
  • 계정 링킹에서 기술을 사용하는 사용자를 식별 할 수 있습니다
  • Firestore와 같은 어딘가에 사용자 정보 저장
  • 좋은 웹페이지 즐겨찾기