Recent searches


No recent searches

Divya Chauhan's Avatar

Divya Chauhan

Joined Jan 28, 2025

·

Last activity Jan 28, 2025

Following

0

Followers

0

Total activity

1

Votes

0

Subscriptions

0

ACTIVITY OVERVIEW

Latest activity by Divya Chauhan

Divya Chauhan created a post,

Post Developer - Zendesk APIs

Hi Everyone, 

I'm using Zendesk Help Center Attachments API to add attachments to an article. However, some uploads fail randomly with 500 error (Internal Server Error for API: ). The failures vary each time I attempt, both in the specific attachments and the number that fail. Re-publishing succeeds for previously failed attachments but causes others to fail. I've added retry of failed API calls which gives 500 error & for them I get success.  When I compared the Request header of failed api call and the one send using replay XHR featue of network call in devtools, they were same for failed & success calls. Even the binary data send is same on comparison. 

My guesses are its due to  Temporary Server Overload issue / Race Conditions / Concurrency Limitations , but couldn't find any supporting documents if this is the real root cause , can anyone please guide me into right direction ? 

I'm trying to upload attachments while uploading content to zendesk Help Centre API, which are 10  parallel api calls, meaning, I make 10 api callso to below curl and wait for there response and then make further 10 api calls, untill all the content is uploaded. I've also tried reducing to 3 parallel API calls, same error is reproduced over there as well. For faster uploading the content, I want to support parallel API calls


Curl: 

curl --location 'https://adobe7546.zendesk.com/api/v2/help_center/articles/24164966574354/attachments.json' \
--header 'authority: adobe7546.zendesk.com' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: Basic ' \
--header 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Electron/12.2.3 Safari/537.36' \
--header 'sec-fetch-site: cross-site' \
--header 'sec-fetch-mode: cors' \
--header 'sec-fetch-dest: empty' \
--header 'accept-language: en-US' \
--header 'cookie: ' \
--form 'inline="true"' \
--form 'file='

API URL: 

https://adobe7546.zendesk.com/api/v2/help_center/articles/23838113722642/attachments.json

Our Code, we are calling makeAttachmentApiCall() function:

import fs from 'fs'
import axios, { Method } from 'axios'
import * as  _  from 'lodash'
function uploadAttachment(api_url,bodyFormData,noOfRetries=10){
  return axios.post(api_url, bodyFormData, {
                  headers: { 
           "Content-Type": "multipart/form-data",
            ...this.defaultUrlparams.headers 
      },
                 auth: {
                           username: this.user,
                           password: this.password
       }
     })
             .then((result) => {
          console.log(result)
      })
    .catch((err) => {
         console.log(err);
         if(err && noOfRetries<=10){
             return _.delay(() => {
                uploadAttachment(api_url,bodyFormData,file, ++noOfRetries)
                    .then(result=>result).catch(error=>error)
                   }, noOfRetries * 1000)
          }
         if(err) {
             console.error("failed to upload file " + file + "," + err)
         } 
        return error
             });
}
async function makeAttachmentApiCall(){
const bodyFormData = new FormData()
  bodyFormData.append('inline', isInline)
  const buffer = fs.readFileSync(file);
  const blob = new Blob([buffer], { type: mime.getMimeType(file) });
  bodyFormData.append('file', blob, path.basename(file))
  await uploadAttachment(api_url,bodyFormData)
}
where api_url looks like = https://adobe7546.zendesk.com/api/v2/help_center/articles/24175204782354/attachments.json
where file is of type string with absolute file_path like “/Users/divyac/Documents/My RoboHelp Projects/outputs/About RoboHelp/Zendesk/assets/images/BadgeTip.png”

Response: 

 {"body":"{"status":500,"error":"Internal Server Error"}"

Edited Jan 28, 2025 · Divya Chauhan

0

Followers

2

Votes

1

Comment