Upload Multiple Files (Uploads API) and Add as Attachment to Ticket Comment (Tickets API)

Answered


Posted Aug 12, 2022

Hello,

I am currently developing an app that has 2 fields, a file upload field that allows multiple files and a text area.

Here is the current status of the app:

  • I was able to create a private comment using the value inputted on the text area
  • I was able to get the token when I uploaded the files using the Upload API

The next goal is for all the files to be attached to the ticket. I am using this as my reference and on the examples, only 1 file is attached to the ticket comment.

Can someone confirm if it is possible to attach multiple files/images to 1 ticket comment? If yes, can someone point me in the right direction?

Thank you,
Benessa

 


0

5

5 comments

Hello Serge BERTAINA DUBOIS,

Happy to inform you that I was able to make my code work.

Thank you for your help.

~ Benessa

0


Hi Serge BERTAINA DUBOIS,

May I ask what is the correct data format that I need to pass on the data parameter to /api/v2/uploads.json to get the upload token?

It seems that I am not passing the correct data on the /api/v2/uploads.json?filename=attachment.jpg API endpoint. Currently, I am passing the filename and when it was uploaded and attached to the ticket I am getting the error Error loading image when I tried opening the attached file.

I also tried passing Binary and Base64 data but I am getting the error

{
    "readyState": 4,
    "responseText": "{\"error\":\"AttachmentUnprocessable\",\"description\":\"Attachment file could not be processed.\"}",
    "status": 422,
    "statusText": "error"
}

Appreciate your response.

Thank you,

0


Hi Bennessa,

However, I manage to do this.
Below is a piece of my python code to upload multiple files in a single comment.

 

You see that I first load an Array : 

...
tab_token = []
  headers = {'Content-type': 'application/binary'}
  for cur_att in ATT_FILE:
      filename = os.path.basename(cur_att)
      while True:
          r_attach = requests.post(AuthConfig.get('zendesk','url') + '/api/v2/uploads.json?filename=' + filename, data=open(cur_att, 'rb'), headers=headers, auth=(AuthConfig.get('auth','user') , AuthConfig.get('auth','pass')))
      data_token = r_attach.json()
      cur_token = data_token['upload']['token']
      tab_token.append(cur_token)
...

then that in my json ticket I specify my array in uploads.

data_ticket = {
      'ticket': {
          'subject': SUJET,
            'comment': { 'html_body': COMMENTAIRE ,  'public' : false , 'uploads':  tab_token },
....

 

In hope this will help you.

Friendships,
Serge.

0


Hi Serge BERTAINA DUBOIS,

Actually, I am passing multiple files to Uploads API but I think since the Content-type is application/binary it only allows 1 file to be uploaded. Thus, it only generates 1 token that I can use when I create a new comment using the Tickets API.

Do you have any idea or workaround on how can I attach more than 1 file to the new comment using the Uploads API?

Appreciate your response.

Thank you,
Benessa

0


Hello,

As you can see on the documentation page you specify, in the json, attachments is an array.
Du can therefore specify several elements in this array:

"attachments": [
{ "url": "https://example.zendesk.com/api/v2/attachments/1503194928902.json",
         "id":1503194928902,
         "file_name": "order_issue.png",
         "content_url": "https://example.zendesk.com/attachments/token/vp7DnuiSvehLZtK2yrPjqJ1l6/?name=order_issue.png",
         "content_type": "image/png"
},
{ "url": "https://example.zendesk.com/api/v2/attachments/987984664654.json",
       "id":54687987987987,
       "file_name": "order_issue2.png",
       "content_url": "https://example.zendesk.com/attachments/token/dssqdqs65d4qd65f4/?name=order_issue2.png",
         "content_type": "image/png"
}
     ]

I admit not having had this need and therefore not tested, but I think it's a good way.

Serge.

0


Sign in to leave a comment.

Didn't find what you're looking for?

New post