Node, Nexmo 및 Firebase 기능을 사용하여 SMS 메시지 전송 및 수신

17492 단어 firebasenodenexmosms
Firebase 플랫폼은 개발자가 응용 프로그램 백엔드를 신속하게 구축할 수 있도록 합니다.사용하기에도 즐겁다.이 강좌에서 Nexmo의 문자에 사용하고 싶습니다.이 연습이 끝나면 SMS 메시지 로그를 만들고 Firebase Functions과 Firestore, Nexmo SMS API를 사용하여 발송자에게 응답할 수 있습니다.

네가 시작하기 전에


너는 약간의 물건이 있어야만 시작할 수 있으니, 이 두 가지 물건이 모두 준비되었는지 확인하는 데 시간이 좀 걸릴 것이다.
  • Firebase
  • Nexmo
  • Firebase 설정


    첫 번째 단계는 Firebase 프로젝트를 구축하는 것이다.Firebase 콘솔을 사용하여 새 항목을 설정하도록 안내합니다.

    Firebase 항목 만들기

  • 에서 Firebase console으로 전환
  • 항목 추가 클릭
  • 이름을 추가하고
  • 계속하려면 누르십시오.
  • 에서 Google Analytics를 열고 continue(필요 없음)
  • 을 클릭합니다.
  • Google Analytics 계정을 선택한 다음 항목 만들기(추가된 경우)
  • 을 클릭합니다.
  • 잠시만요 프로젝트 생성 - 1분도 안돼요
  • 요금 유형 설정⚙️ -> 사용 및 요금 계산 -> Blaze 상세 정보 및 설정현금 인출 프로그램은 타사 API를 사용해야 합니다.구글 계산서에 대한 더 자세한 내용은 here을 클릭하십시오.

  • Google Cloud Platform (GCP) resource location⚙️ -> Project Settings 설정

  • Firebase 도구 설치


    Firebase를 사용하는 데 필요한 대부분의 작업은 명령줄에서 Firebase가 제공하는 도구 모음을 사용하여 직접 완성할 수 있습니다.
  • npm를 사용하여 Firebase 도구 설치
  •  npm install -g firebase-tools
    
  • firebase login을 사용하여 Firebase에 로그인합니다.로그인 프로세스는 인증을 위해 브라우저를 엽니다.
  • 로컬 환경 설정


    Firebase 함수를 작성하려면 초기화 작업이 필요하지만, 주로 Firebase 도구 명령을 사용해서 완성됩니다.
  • 프로젝트 폴더 만들기 mkdir nexmo-project && cd nexmo-project
  • Firebase 함수 초기화 firebase init functions
  •      ######## #### ########  ######## ########     ###     ######  ########
         ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##
         ######    ##  ########  ######   ########  #########  ######  ######
         ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##
         ##       #### ##     ## ######## ########  ##     ##  ######  ########
    
    You're about to initialize a Firebase project in this directory:
    
     /your_folders/your-project-name
    
    
    === Project Setup
    
    First, let's associate this project directory with a Firebase project.
    You can create multiple project aliases by running firebase use --add,
    but for now, we'll just set up a default project.
    
    ? Please select an option: (Use arrow keys)
    ❯ Use an existing project
     Create a new project
     Add Firebase to an existing Google Cloud Platform project
     Don't set up a default project
    
    대시보드에 항목을 만들었으므로 Use an existing project을 선택하면 원하는 항목을 선택하라는 메시지가 표시됩니다.만약 아직 이렇게 하지 않았다면, Create a new project을 사용해서 유일한 이름을 만들어 주십시오.위치와 계산서를 업데이트하려면 컨트롤러로 이동해야 하지만, 이것은 Firebase 프로젝트를 만드는 또 다른 옵션입니다.
  • 만든 프로젝트 이름
  • 선택
  • JavaScript
  • 선택
  • 원하는 경우 ESLint를 위해 Y (권장)
  • 을 선택하십시오.
  • 모든 의존항 즉시 설치
  • 이 절차는 Firebase 기능을 구축하고 모든 의존 항목을 설치하는 데 필요한 폴더와 파일을 만듭니다.NPM이 완료되면 functions 디렉터리로 전환하고 가장 좋아하는 편집기에서 index.js을 열어 코드를 추가합니다.

    첫 번째 함수 만들기


    생성한 첫 번째 함수는 Nexmo에서 전송된 SMS 메시지를 캡처하고 기록하는 웹 훅으로 사용됩니다.index.js 파일은 당신이 필요로 하지 않는 예시 코드를 제공합니다.모든 내용을 삭제하고 위쪽부터 다음 코드를 추가합니다.
    const functions = require('firebase-functions');
    const admin = require('firebase-admin'); 
    
    // Initialize Firebase app for database access
    admin.initializeApp();
    
    admin.initializeApp();을 호출하면 함수가 Firebase 실시간 데이터베이스를 읽고 쓸 수 있습니다.다음 방법으로 함수를 만듭니다.
    // This function will serve as the webhook for incoming SMS messages,
    // and will log the message into the Firebase Realtime Database
    exports.inboundSMS = functions.https.onRequest(async (req, res) => {
      await admin.database().ref('/msgq').push(req.body);
      res.send(200);
    });
    
    inboundSMS 방법은 HTTPS 요청을 정탐한다. 이것이 바로 Nexmo 웹훅에 필요한 것이다.Firebase 함수는 req.body을 포획하여 실시간 데이터베이스에 로그로 보내는 /msgq 대상입니다.
    우리가 사용하는 것은 req.body이기 때문에 웹훅은 POST Method이 필요하다.Nexmo webhooks에 GET 메서드를 사용하려면 req.query으로 교체하면 GET 메서드도 같은 방식으로 작동합니다.
    현재 일부 코드를 작성했습니다. 파일을 저장하고 함수를 Firebase에 배치하십시오.
    firebase deploy --only functions
    
    === Deploying to 'nexmo-project'...
    
    i deploying functions
    Running command: npm --prefix "$RESOURCE_DIR" run lint
    
    > functions@ lint /Users/kellyjandrews/Google Drive/Apps/nexmo-project/functions
    > eslint .
    
    ✔ functions: Finished running predeploy script.
    i functions: ensuring necessary APIs are enabled...
    ✔ functions: all necessary APIs are enabled
    i functions: preparing functions directory for uploading...
    i functions: packaged functions (38.78 KB) for uploading
    ✔ functions: functions folder uploaded successfully
    i functions: creating Node.js 8 function inboundSMS(us-central1)...
    ✔ functions[inboundSMS(us-central1)]: Successful create operation.
    Function URL (inboundSMS): https://us-central1-nexmo-project.cloudfunctions.net/inboundSMS
    
    ✔ Deploy complete!
    
    Project Console: https://console.firebase.google.com/project/nexmo-project/overview
    
    출력의 관건적인 부분은 Function URL (inboundSMS)이다.이 URL은 Nexmo에서 웹 훅을 설정하는 데 필요한 것입니다. 다음에 이 동작을 실행할 것입니다.

    Nexmo 설정


    Nexmo 설정에는 명령줄에서 모든 단계를 완료하는 몇 가지 빠른 단계가 있습니다.
  • CLI 설치
  •  npm install -g nexmo-cli
    
  • 대시보드 https://dashboard.nexmo.com/getting-started-guide의 API 키 및 암호를 사용하여 CLI 설정
  • 새 전화번호 구매
  •  nexmo number:buy --country_code US
    
  • 이 명령은 미국에서 처음으로 사용할 수 있는 전화번호를 검색합니다.Nexmo 숫자에 대한 자세한 내용은 [디지털 문서](https://developer.nexmo.com/numbers/overview)를 참조하십시오.
  • 확인 입력 후 번호 복사
  • 이 명령을 사용하여 전화번호를 웹훅에 연결합니다
  •  nexmo link:sms YOUR_NUMBER YOUR_FUNCTION_URL
    
    프로세스를 완전히 설정하고 새로운 기능을 테스트하여 메시지가 기록될 수 있도록 몇 초의 시간을 주십시오.
    너의 핸드폰을 잡고 전화번호로 메시지를 보내라.Firebase 콘솔을 열고 database 페이지로 이동하면 다음과 같은 내용을 볼 수 있습니다.

    현재 전송된 메시지를 기록하는 방법이 있습니다. 전송된 메시지를 처리하기 위해 함수를 작성할 수 있습니다.

    발송 함수 만들기


    지금까지 Nexmo 전화 번호에 연결된 Firebase 함수를 만들어 사이트 SMS 메시지를 캡처했습니다.Firebase 함수도 데이터베이스 업데이트에 반응할 수 있습니다.새 항목에서 코드는 원본 텍스트의 메아리를 보냅니다.
    우선 Nexmo를 종속 항목 목록에 추가합니다. functions 디렉토리에서 이 작업을 수행해야 합니다.
    npm i nexmo --save
    
    Firebase 구성에 다음 환경 변수 추가
    firebase functions:config:set nexmo.api_key="YOUR_KEY" nexmo.api_secret="YOUR_SECRET"
    
    다음은 index.js을 열고 nexmo을 상단의 요구에 추가하고 환경 변수를 가져와 Nexmo를 초기화합니다.
    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    const Nexmo = require('nexmo');
    
    // Initialize Firebase app for database access
    admin.initializeApp();
    
    // get Firebase environment variables for Nexmo
    const {
      api_key,
      api_secret
    } = functions.config().nexmo;
    
    // Initialize Nexmo with application credentials
    const nexmo = new Nexmo({
      apiKey: api_key,
      apiSecret: api_secret
    });
    
    이제 Firebase에 새 함수를 만들어 응답을 보낼 수 있습니다.
    // This function listens for updates to the Firebase Realtime Database
    // and sends a message back to the original sender
    exports.sendSMS = functions.database.ref('/msgq/{pushId}')
      .onCreate((message) => {
        const { msisdn, text, to } = message.val();
        // the incoming object - 'msisdn' is the your phone number, and 'to' is the Nexmo number
        // nexmo.message.sendSms(to, msisdn, text);
        return nexmo.message.sendSms(to, msisdn, `You sent the following text: ${text}`, (err, res) => {
          if (err) {
            console.log(err);
          } else {
            if (res.messages[0]['status'] === "0") {
              console.log("Message sent successfully.");
            } else {
              console.log(`Message failed with error: ${res.messages[0]['error-text']}`);
            }
          }
        })
      });
    
    새 함수는 /msgq 데이터베이스 대상에 추가된 새로운 메시지를 감시합니다.터치하면 전체 Nexmo 객체가 message으로 전달됩니다.이 대상은 msisdn입니다. 이것은 원시 전화번호입니다. - 이 예에서 당신의 전화번호와 to 번호입니다. 이것은 당신이 구매한 Nexmo 가상 번호입니다.
    핸드폰 번호와 문자가 생기면 너는 지금 많은 일을 할 수 있다.키워드에 따라 특정한 데이터를 사용하여 응답하거나 다른 시스템으로 전송하거나 우리의 상황에서 원본 메시지를 보내는 검색표를 만들 수 있습니다.
    명령줄에서 Firebase 기능 재배치:
    firebase deploy --only functions
    
    핸드폰을 들고 메시지를 보내면 You sent the following text: Test message처럼 보이는 답장을 받을 수 있다.

    총결산


    현재, 당신은 이미 이 강좌의 모든 절차를 완성했습니다.Github에서 전체 코드를 볼 수 있습니다.
    메시지를 발송하고 수신하는 초기 절차가 이미 완성되었기 때문에 나의 다음 몇 편의 글은 이 개념을 채택하고 이를 문자를 통해 나의 가정 자동화를 제어할 수 있도록 확장할 것이다.나도 네가 무엇을 하려고 하는지 듣고 싶으니 나에게 소식을 보내서 나에게 알려줘.

    한층 더 읽다

  • 클릭 https://developer.nexmo.com 개발자 문서 보기
  • Nexmo SMS 기능에 대한 상세 정보 https://developer.nexmo.com/messaging/sms/overview
  • Firebase 함수 입문 https://firebase.google.com/docs/functions/get-started
  • 게시물 Send and Receive SMS Messages with Firebase FunctionsNexmo Developer Blog에 먼저 올라왔습니다.

    좋은 웹페이지 즐겨찾기