웹훅 처리를 빌드한 후에는 프로덕션에 배포하고 작업에 연결합니다. 다음 단계에서는 프로덕션 호스팅을 위해 Firebase용 Cloud Functions에 배포하도록 환경을 설정하는 방법을 보여줍니다. 하지만 HTTPS 요청 및 응답을 지원하는 모든 웹 호스팅 플랫폼을 선택하여 처리를 호스팅할 수 있습니다.
웹 호스팅 플랫폼에 이미 웹훅을 배포한 경우 작업에 웹훅 연결로 건너뛸 수 있습니다. 아래 프로세스의 마지막 단계는 Dialogflow 또는 Actions SDK를 사용하는지에 따라 다릅니다.
Firebase용 Cloud Functions에 배포
- Node.js를 다운로드하고 설치합니다.
Firebase CLI를 설정하고 초기화합니다. 다음 명령어가
EACCES
오류와 함께 실패하면 npm 권한을 변경해야 할 수도 있습니다.npm install -g firebase-tools
Google 계정으로 Firebase 도구를 인증합니다.
firebase login
작업 프로젝트 디렉터리로 이동하여 Firebase를 초기화합니다. 작업 프로젝트에 설정할 Firebase CLI 기능을 선택하라는 메시지가 표시됩니다.
Functions
및 Firestore와 같이 사용하려는 다른 기능을 선택한 다음 Enter 키를 눌러 확인하고 계속합니다.cd <cloud_function_dir> firebase init
화살표 키로 Firebase 도구를 선택하여 프로젝트 목록을 탐색하여 Firebase 도구와 해당 작업을 연결합니다.
명령어를 사용하여 이 연결을 수행해야 합니다. 프로젝트를 선택하면 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 TypeScriptESLint를 사용하여 잠재적 버그를 포착하고
Y
또는N
스타일 입력을 강제할지 선택합니다.? Do you want to use ESLint to catch probable bugs and enforce style? (Y/n)
프롬프트에
Y
를 입력하여 프로젝트 종속 항목을 가져옵니다.? Do you want to install dependencies with npm now? (Y/n)
설정이 완료되면 다음과 비슷한 출력이 표시됩니다.
✔ Firebase initialization complete!
actions-on-google 종속 항목을 설치합니다.
cd <cloud_function_dir>/functions npm install actions-on-google
처리 종속 항목을 가져오고 처리 함수를 배포합니다.
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" }