WhatsApp으로 인보이스 자동 전송

15018 단어 javascriptnodewebhooks
이 튜토리얼에서는 FreshBooks에서 인보이스를 생성할 때 공유 가능한 링크를 생성하는 방법을 살펴봅니다. 그런 다음 이 링크를 Whatsapp을 통해 고객에게 보냅니다. 고객이 자신의 모바일에서 즉시 인보이스를 볼 수 있도록 합니다. 결제 링크, 비용 등에 동일한 개념을 적용할 수 있습니다.

전제 조건


  • FreshBooks 개발자 계정.
  • A Twilio Sandbox account .
  • Async, Await 및 Node.js에 대한 기본 지식.
  • 코드 편집기(예: VS Code, Sublime, Atom 등)
  • Postman에서 전달자 토큰을 생성하는 방법

  • Express 앱을 로컬로 설정



    먼저 포트 3000에서 수신하고 '/webhooks/ready'에서 사용할 수 있는 URI가 있는 익스프레스 앱을 설정합니다.

    const app = express();
    app.use(express.json()); 
    app.use(express.urlencoded({
        extended: true
    }));
    
    app.get('/', function (req, res) {
      res.end('Hello World 1',()=>{
      console.log(`Get Body ${JSON.stringify(req.body)}`)
      });
    
    })
    
    app.post('/webhooks/ready',function (req,res){
        res.end('Thanks for your business POST',()=>{
          console.log(`POST Body ${JSON.stringify(req.body)}`)
          });
        var name = req.body.name;
        if(name == "invoice.create" || name == "invoice.update"){
          var { account_id, object_id } = req.body;  
          sendShareLink(account_id,object_id);
        };
      })
    
      app.listen(3000,()=>{
        console.log("listening on port 3000")
      })
    

    공용 웹 서버 만들기



    공개적으로 액세스할 수 있는 웹 서버를 만들기 위해 'ngrok'을 사용하고 있습니다. 이것을 사용하여 ngrok를 다운로드할 수 있습니다link. ngrok를 설치하면 ngrok를 시작하고 로컬 웹 서버를 노출할 수 있습니다. ngrok에서 제공한 https URL을 기록해 두는 것을 잊지 마세요. 이 URL을 사용하여 웹후크를 등록합니다. ngrok는 포트 3000에서 localhost 서버로 호출을 릴레이합니다.

    웹후크 등록



    FreshBooks는 인보이스 생성 시 애플리케이션에 알려야 합니다. 알림을 받으려면 'invoice.created' 이벤트에 대해 등록하고 FreshBooks webhook을 수신해야 합니다. ngrok를 사용하여 이전에 생성된 URI를 사용하여 웹후크에 등록합니다. https://d7b0-213-127-111-74.ngrok.io . 이 부분은 작성 시점에 아직 애플리케이션에 내장되지 않았습니다. 지금은 postman 을 사용하여 이 작업을 수행합니다. ngrok inspect를 사용하여 웹후크에 대한 검증자 코드를 가져올 수 있습니다.

    You can inspect calls coming in via a web UI provided by ngrok. After you start the ngrok agent, open http://localhost:4040 in a browser on the same machine


    공유 가능한 링크 및 고객 연락처 얻기



    먼저 FreshBooks 클라이언트를 생성하여 . 앱의 clientID와 env 변수를 사용하여 제공한 전달자 토큰으로 클라이언트를 초기화합니다.

    FreshBooks UI를 사용하여 인보이스를 생성하면 이전에 등록된 링크에 대한 웹후크 호출이 트리거됩니다. 앱이 이 API 호출을 수신하면 인보이스 ID를 검색합니다. 송장 ID는 FreshBooks 클라이언트를 사용하여 송장 링크를 생성하는 데 사용됩니다.

    공유 가능한 인보이스 링크를 생성하기 위해 nodejs sdk를 사용하고 get shareable link api를 사용하여 인보이스 ID에 대한 인보이스 링크를 가져옵니다. 또한 클라이언트의 휴대폰 번호도 검색합니다.

    const postWhatsapp = require('./postWhatsapp');
    const clientId = process.env.CLIENTID;
    const token = process.env.TOKEN;
    
    let accountId;
    let invoiceId;
    
    
    
    module.exports = async (accountId,invoiceId)=>{
        try {
            const { Client } = await import("@freshbooks/api");
            const app = new Client(clientId,token);
            const shareLink = await app.invoices.shareLink(accountId,invoiceId);
            const invoiceInfo = await app.invoices.single(accountId,invoiceId);
            const client  = await app.clients.single(accountId,invoiceInfo.data.customerId);   
    
    
            postWhatsapp(shareLink.data.shareLink, client.data.mobPhone);
    
          } catch (error) {
          console.log(error);  
        }
    
    };
    

    whatsapp를 통해 인보이스 보내기



    공유 가능한 링크가 있으면 Twilio SDK를 사용하여 'Twilio SID' 및 '인증 토큰'을 사용하여 클라이언트를 초기화합니다. 이 twilio 클라이언트를 사용하여 인보이스에 대한 공유 가능한 링크가 포함된 whatsapp 메시지를 보냅니다.

    const twilio = require('twilio');
    
    const accountSid  =  process.env.ACCSID; 
    const authToken   =  process.env.AUTHTOK; 
    const client      =  require('twilio')(accountSid, authToken); 
    let shareLink;
    let mobNo
    
    module.exports= (shareLink,mobNo)=>{
      client.messages 
      .create({ 
         body: `Here is your share link ${shareLink}`, 
         from: 'whatsapp:+14155238886',       
         to: `whatsapp:${mobNo}` 
       }) 
      .then(message => console.log(message.sid)) 
      .catch(error=>{
        console.log(error);
      })
      .done();
    
    }
    

    Twilio whatsapp api에 대한 자세한 정보를 찾고 있다면 여기에서 확인할 수 있습니다link.

    이제 클라이언트에 대한 인보이스를 만들 때마다 서버에서 알림을 받고 공유 링크를 가져와서 WhatsApp을 통해 클라이언트에게 보냅니다.

    내 개인 저장소에서 전체 코드를 체크아웃할 수 있습니다.


    lygel07 / freshbooks-whatsapp-링크


    좋은 웹페이지 즐겨찾기