Nam Còi
  • Trang chủ
  • Lập Trình Website
  • Khóa Học
  • Động Lực
  • Tuyển Dụng
No Result
View All Result
  • Trang chủ
  • Lập Trình Website
  • Khóa Học
  • Động Lực
  • Tuyển Dụng
No Result
View All Result
Nam Còi
No Result
View All Result
Home Phần Mềm

Handling Vericlock Webhooks: Overcoming Challenges and Optimizing Costs

Nguyễn Hải Nam by Nguyễn Hải Nam
25/07/2024
in Phần Mềm, Software
118
Handling Vericlock Webhooks Post

Discover how we overcame unexpected challenges while integrating Vericlock webhooks at Prestige Lock and Door. Learn about the tricky JSON data formats, lack of API documentation, and our journey to a seamless, cost-effective solution.

0
SHARES
16
VIEWS

Integrating third-party services can sometimes feel like navigating a minefield. Recently, I encountered a tricky situation while integrating Vericlock webhooks at Prestige Lock and Door. Vericlock’s time-tracking service sent us JSON data containing nested and malformed fields, causing our webhook processing to fail. The primary issue was the unexpected data format and the lack of useful information from the Vericlock API Documentation. Here’s a breakdown of the problem and how I resolved it.

The Problem

Vericlock Logo

Initially, Vericlock sent data with the Content-Type: application/x-www-form-urlencoded instead of application/json. This discrepancy made it difficult to parse the data correctly. Even popular platforms like Make couldn’t handle the format properly. Only Zapier managed to process it without issues.

Additionally, the data included complex nested structures, especially within the customFields section. This section was causing parsing errors because it contained another JSON object that wasn’t properly closed. Here’s an example of the problematic data:

{
  "guid":"[REDACTED]",
  "rootGuid":"[REDACTED]",
  "employeeGuid":"[REDACTED]",
  "jobGuid":null,
  "jobCode":null,
  "jobName":null,
  "serviceItemGuid":null,
  "serviceItemCode":null,
  "serviceItemName":null,
  "serviceRatePennies":0,
  "start":"2024-07-15T21:40:00.000Z",
  "end":null,
  "duration":0,
  "clockInReportId":16913206,
  "inDetails":{
    "method":"api",
    "report":{
      "type":"text",
      "value":"1"
    },
    "ipAddress":"[REDACTED]",
    "geoTagging":{
      "error":"DeviceTimeout",
      "message":"A timeout error occurred on the device trying to retrieve GPS coordinates"
    },
    "customFields":":{
      "guid":"[REDACTED]",
      "name":"Vehicle",
      "type":"list",
      "listItemGuid":"[REDACTED]",
      "listItemName":"none",
      "listItemValue":4
    }:{
      "displayName":"Regular",
      "minutes":0,
      "timeTypeId":1
    },{
      "displayName":"Overtime 1",
      "minutes":0,
      "timeTypeId":2
    },{
      "displayName":"Overtime 2",
      "minutes":0,
      "timeTypeId":3
    }:""
  }
}

Notice the customFields section? It contained another JSON object that was not properly closed, leading to parsing errors.

The Solution

Prestige Lock and Door Logo

To handle this, I devised a solution that involved sanitizing the incoming JSON string before parsing it. Here’s how I did it:

1. Extract the Raw JSON String: The incoming data was stored as a string, which needed to be sanitized.

2. Remove the Problematic Section: By identifying the customFields segment, I stripped it from the string.

3. Parse the Cleaned String: Finally, the cleaned JSON string was parsed into a usable JSON object.

Here’s the code I used:

const express = require('express');
const bodyParser = require('body-parser');
const logger = require('./logger');

const app = express();
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/webhook', async (req, res) => {
  const rawBody = req.body;
  logger.info(`Raw Body: ${JSON.stringify(rawBody)}`);

  const jsonString = Object.keys(rawBody)[0];
  const sanitizedString = jsonString.split(',"customFields":')[0] + "}}";
  const parsedData = JSON.parse(sanitizedString);
  logger.info(`Parsed Data: ${JSON.stringify(parsedData)}`);

  // Process the parsed data further as needed

  res.status(200).send('Webhook processed successfully');
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
  logger.info(`Webhook receiver listening at http://localhost:${port}`);
});

Key Takeaways

1. Ask for Webhook Feature Activation: Ensure you contact Vericlock support to enable the webhook feature for your account.

2. Data Parsing Challenges: Be prepared to handle unexpected data formats. Proper sanitization and parsing are crucial.

3. Cost Optimization: By integrating this solution, Prestige Lock and Door can transition from using Zapier (which incurs costs) to our own server, leading to significant savings.

Conclusion

This experience underscored the importance of flexibility and creativity in handling third-party integrations. It also demonstrated how we can optimize costs and improve system management by leveraging our own infrastructure. If you’re facing similar challenges, I hope this guide provides the insights you need to navigate and resolve them effectively.. Sharing this experience, I hope to help other developers facing similar issues with third-party integrations.

Có liên quan

Tags: cost optimizationdata sanitizationerror handlingJSON parsingNode.jsPrestige Lock and Doorthird-party service integrationVericlock integrationwebhook processing
Previous Post

Webinoly – Trọn Bộ LEMP – Tối Ưu Hóa Máy Chủ Web Chạy NGINX

Nguyễn Hải Nam

Nguyễn Hải Nam

Mình là Nam - nick name ở nhà là Còi, trong tiếng Anh là Nick. Hiện nay, mình đang làm việc tại Axon Active Việt Nam với vị trí là Scrum Master. Ngoài ra, mình còn tham gia thỉnh giảng khóa học Lập Trình Ứng Dụng Website với PHP & MySQL. tại Softech Aptech Đà Nẵng.

Comments 118

  1. custom mylar bags says:
    1 tháng ago

    Hello there, just became alert to your blog through Google, and found that it is really informative. I?m going to watch out for brussels. I?ll be grateful if you continue this in future. A lot of people will be benefited from your writing. Cheers!

    Bình luận
  2. 📈 BTC Compensation Ready to Withdraw 👉🏾 telegra.ph/Compensations-03-29-2?hs=5734c5a9e1c2e018f8938f50cb7109d3& 📈 says:
    1 tháng ago

    pr8qt2

    Bình luận
  3. online casino apps says:
    1 tháng ago

    I have really learned new things by means of your weblog. One other thing I’d prefer to say is newer laptop operating systems tend to allow additional memory to use, but they also demand more ram simply to run. If a person’s computer could not handle extra memory plus the newest computer software requires that ram increase, it usually is the time to buy a new Computer. Thanks

    Bình luận
  4. live casino zonder licentie says:
    1 tháng ago

    Hi there, i read your blog from time to time and i own a similar one and i was just wondering if you get a lot of spam remarks? If so how do you protect against it, any plugin or anything you can advise? I get so much lately it’s driving me mad so any assistance is very much appreciated.

    Bình luận
  5. live casino zonder licentie says:
    1 tháng ago

    Pretty portion of content. I simply stumbled upon your website and in accession capital to say that I get in fact enjoyed account your weblog posts. Any way I will be subscribing in your feeds or even I achievement you access consistently fast.

    Bình luận
  6. binance referral bonus says:
    1 tháng ago

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you.

    Bình luận
  7. casino app says:
    1 tháng ago

    Do you mind if I quote a few of your articles as long as I provide credit and sources back to your blog? My blog site is in the very same area of interest as yours and my visitors would definitely benefit from some of the information you provide here. Please let me know if this alright with you. Regards!

    Bình luận
  8. 333985 says:
    1 tháng ago

    wish you best and best

    Bình luận
  9. trc20 usdt address says:
    4 tuần ago

    Howdy! Someone in my Myspace group shared this site with us so I came to take a look. I’m definitely loving the information. I’m book-marking and will be tweeting this to my followers! Great blog and fantastic style and design.

    Bình luận
  10. Ismaeldot says:
    4 tuần ago

    Thanks , I have just been searching for info approximately this subject for a long time and yours is the best I’ve found out till now. However, what about the bottom line? Are you certain about the source?
    https://share.google/P7oFw47owB456PAXH

    Bình luận
  11. free trc20 wallet says:
    4 tuần ago

    Hey there! This post could not be written any better! Reading through this post reminds me of my old room mate! He always kept chatting about this. I will forward this article to him. Pretty sure he will have a good read. Many thanks for sharing!

    Bình luận
  12. tron usdt address says:
    4 tuần ago

    excellent issues altogether, you simply won a brand new reader. What may you suggest about your publish that you just made a few days in the past? Any sure?

    Bình luận
  13. julieJoyPE says:
    4 tuần ago

    музыка [url=https://mailsco.online/]mailsco[/url] представляет собой значимой частью человеческой культуры.

    Bình luận
  14. Ismaeldot says:
    4 tuần ago

    Heya this is kind of of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding skills so I wanted to get guidance from someone with experience. Any help would be greatly appreciated!
    https://share.google/LmLlCevDknZkgOFh6

    Bình luận
  15. hai hoan imperial says:
    4 tuần ago

    I used to be suggested this blog by my cousin. I am no longer certain whether this publish is written via him as nobody else know such specific approximately my trouble. You’re incredible! Thank you!

    Bình luận
  16. hai hoan imperial says:
    4 tuần ago

    I like what you guys are up too. Such clever work and reporting! Keep up the superb works guys I?ve incorporated you guys to my blogroll. I think it’ll improve the value of my site 🙂

    Bình luận
  17. 啪啪导航 says:
    4 tuần ago

    色即是空,空即是色

    Bình luận
  18. khai hoan imperial says:
    4 tuần ago

    Great work! This is the type of information that should be shared around the internet. Shame on Google for not positioning this post higher! Come on over and visit my web site . Thanks =)

    Bình luận
Next

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Recent News

  • Handling Vericlock Webhooks: Overcoming Challenges and Optimizing Costs
  • Webinoly – Trọn Bộ LEMP – Tối Ưu Hóa Máy Chủ Web Chạy NGINX
  • Upload Multiple Files và đính kèm vào Task sử dụng Teamwork API thông qua PHP Laravel API

Category

  • Aptech PHP
  • Command Line
  • Động Lực
  • Git
  • Khóa Học
  • Lập Trình Website
  • Laravel
  • Nginx
  • Phần Mềm
  • PHP
  • Software
  • SQL
  • Tiền Mã Hoá
  • Tuyển Dụng
  • WordPress

Thông Tin Website

  • Các Điều Khoản Và Điều Kiện
  • Chính Sách Bảo Mật
  • Liên Hệ

Liên Kết

  • Vape PHP Đà Nẵng Website
  • Nga Đức Ninh Thuận Website

Bản Quyền © 2018 - | Nam Còi | [email protected]. Thiết kế & Phát triển Web bởi TechYXE.

No Result
View All Result
  • Trang chủ
  • Lập Trình Website
  • Khóa Học
  • Động Lực
  • Tuyển Dụng

Bản Quyền © 2018 - | Nam Còi | [email protected]. Thiết kế & Phát triển Web bởi TechYXE.