fulfillment 배포 (Dialogflow)

웹훅 처리를 빌드한 후에는 프로덕션에 배포하고 작업에 연결합니다. 다음 단계에서는 프로덕션 호스팅을 위해 Firebase용 Cloud Functions에 배포하도록 환경을 설정하는 방법을 보여줍니다. 하지만 HTTPS 요청 및 응답을 지원하는 모든 웹 호스팅 플랫폼을 선택하여 처리를 호스팅할 수 있습니다.

웹 호스팅 플랫폼에 이미 웹훅을 배포한 경우 작업에 웹훅 연결로 건너뛸 수 있습니다. 아래 프로세스의 마지막 단계는 Dialogflow 또는 Actions SDK를 사용하는지에 따라 다릅니다.

Firebase용 Cloud Functions에 배포

  1. Node.js를 다운로드하고 설치합니다.
  2. Firebase CLI를 설정하고 초기화합니다. 다음 명령어가 EACCES 오류와 함께 실패하면 npm 권한을 변경해야 할 수도 있습니다.

    npm install -g firebase-tools
    
  3. Google 계정으로 Firebase 도구를 인증합니다.

    firebase login
    
  4. 작업 프로젝트 디렉터리로 이동하여 Firebase를 초기화합니다. 작업 프로젝트에 설정할 Firebase CLI 기능을 선택하라는 메시지가 표시됩니다. Functions 및 Firestore와 같이 사용하려는 다른 기능을 선택한 다음 Enter 키를 눌러 확인하고 계속합니다.

    cd <cloud_function_dir>
    firebase init
    
  5. 화살표 키로 Firebase 도구를 선택하여 프로젝트 목록을 탐색하여 Firebase 도구와 해당 작업을 연결합니다.

    명령어를 사용하여 이 연결을 수행해야 합니다.
  6. 프로젝트를 선택하면 Firebase 도구에서 사용할 언어를 묻는 Functions 설정을 시작합니다. 화살표 키를 사용하여 선택하고 Enter 키를 눌러 계속합니다.

    === Functions Setup
    A functions directory will be created in your project with a Node.js package pre-configured. Functions can be deployed with firebase deploy. ? What language would you like to use to write Cloud Functions? (Use arrow keys) > JavaScript TypeScript
  7. ESLint를 사용하여 잠재적 버그를 포착하고 Y 또는 N 스타일 입력을 강제할지 선택합니다.

    ? Do you want to use ESLint to catch probable bugs and enforce style? (Y/n)
  8. 프롬프트에 Y를 입력하여 프로젝트 종속 항목을 가져옵니다.

    ? Do you want to install dependencies with npm now? (Y/n)

    설정이 완료되면 다음과 비슷한 출력이 표시됩니다.

    ✔  Firebase initialization complete!
  9. actions-on-google 종속 항목을 설치합니다.

    cd <cloud_function_dir>/functions
    npm install actions-on-google
    
  10. 처리 종속 항목을 가져오고 처리 함수를 배포합니다.

    npm install
    firebase deploy --only functions
    

    배포하는 데 몇 분 정도 걸립니다. 완료되면 다음과 비슷한 출력이 표시됩니다. Dialogflow에 입력할 함수 URL이 필요합니다.

    ✔  Deploy complete!
    Project Console: https://console.firebase.google.com/project/exampleproject-123/overview Function URL (cloudFunctionName): https://us-central1-exampleproject-123.cloudfunctions.net/cloudFunctionName

작업에 웹훅 연결

Dialogflow를 사용하는 경우: Dialogflow 콘솔에서 Fulfillment로 이동하여 웹훅 버튼을 사용 설정됨으로 전환하고 URL 필드의 URL을 함수 URL로 바꿉니다.

Actions SDK를 사용하는 경우: conversations 객체 내에 객체를 만들어 작업 패키지에서 처리를 선언합니다.

{
  "actions": [
    {
      "description": "Default Welcome Intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "myFulfillmentFunction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to myFulfillmentFunction"
          ]
        }
      }
    }
  ],
  "conversations": {
    "myFulfillmentFunction": {
      "name": "myFulfillmentFunction",
      "url": "https://us-central1-myprojectname-ab123.cloudfunctions.net/cloudFunctionName"
    }
  },
  "locale": "en"
}