Can I attach files to tickets using the API?

Return to top

8 Comments

  • Віктор Борисюк

    Hi, is it possible to attache a file from external resource, smth like Google Cloud Bucket, or Azure Blob Storage? Since, I do not have the file on the server I am not able to upload it.

    0
  • Tipene Hughes
    Zendesk Developer Advocacy

    Hi Віктор Борисюк,

    Thanks for reaching out!

    Unfortunately it's not possible to attach files to a ticket comment directly from an external source. The file must be uploaded via the Attachment API which requires the actual file, which then creates a token that is used to attach the file to the ticket. 

    An alternative option could be uploading the file as an inline attachment using markdown, depending on the file type.

    Feel free to reach out if you have any questions!

    Tipene

    0
  • Chris Green

    Tipene Hughes I'm trying to do this exact thing. We have Power Apps forms that create SharePoint lists, in which we then use the Zendesk API to create the ticket in Zendesk. I'm wondering about the best approach to get the attachment into the ticket, or at the very least, a link to the attachment? 

    I've found this article online, but am having a hard time understanding the 'Attachment' section:

    https://4sysops.com/archives/using-the-zendesk-api-with-microsoft-power-automate/

     

    Thanks in advance,

    Chris

    0
  • Tipene Hughes
    Zendesk Developer Advocacy

    Hey Chris,

    I'm not super familiar with Microsoft Power Apps but from the looks of it, the article is outlining how to utilize the Attachments API along with the Tickets API within the Power Apps UI.

    When uploading an image to create a token using the Attachments API, the file must first be converted to binary which appears to be something that can be handled within Power Apps. Once the token has been generated, it's then passed in to the payload sent to the Tickets API to create or update a ticket which again looks like it can be handled within the Power Apps UI. 

    Sorry I can't give you any specifics on the functionality of Power Apps but by the looks of it, the article is outlining the correct workflow as written in the documentation I linked above. 

     

    0
  • Benessa Dumol

    Hello Tipene Hughes, sorry for hijacking this thread, but I am currently stuck and I desperately need some help.

    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 you help to confirm if it is possible to attach multiple files/images to 1 ticket comment? If yes, can you point me in the right direction?

    Thank you,
    Benessa

    0
  • Tipene Hughes
    Zendesk Developer Advocacy

    Hey, Benessa Dumol!

    Can you confirm if you're passing in the token as a query parameter to the endpoint URL when uploading more than one attachment? This is referenced in the documentation here.

     

    0
  • Benessa Dumol

    HI Tipene Hughes, thank you for responding to my comment.

    Currently, I am looping through all the files that were uploaded to get all the tokens.

    I am using this endpoint /api/v2/uploads.json?filename=attachment.jpg to get the upload token. Below is my for loop code to get all the tokens.

    for (let i = 0; i < incidentAttachmentLength; i++) {
          const settings = {
            url: "/api/v2/uploads.json?filename=attachment.jpg",
            type: "POST",
            contentType: "application/binary",
            cors: false,
            secure: true,
            httpCompleteResponse: true,
            data: files[i].name
          };
     
          client.request(settings).then(
            function(response) {
              json = JSON.parse(response.responseText);
              console.log("token: " + json.upload.token);
            },
            function(response) {
              console.error(response.responseText);
            }
          );
        }

    I am also using the endpoint /api/v2/tickets/ to create the ticket comment. Below is my code to create the ticket comment.

    const settings = {
        url: "/api/v2/tickets/" + zendeskTicketId,
        type: "PUT",
        cors: false,
        secure: true,
        httpCompleteResponse: true,
        data: {
          "ticket": {
            "comment": {
              "body": ticketComment,
              "uploads": uploadToken,
              "public": false
            },
          }
        },
      };

      client.request(settings).then(
        function(response) {
          console.log("Comment posted.")
        },
        function(response) {
          console.error(response.responseText);
        }
      );
     
    Is it possible to pass the array of upload tokens on the uploads parameter on the create ticket comment API?

    Thank you,
    Benessa
    0
  • Tipene Hughes
    Zendesk Developer Advocacy

    Hi Benessa Dumol,

    You only need to generate one token which you'll then use to make subsequent requests to the uploads API endpoint to add additional attachments.

    After making the first request to the uploads endpoint, you will need to add the token to the end of the URL for subsequent uploads e.g:

    "https://{subdomain}.zendesk.com/api/v2/uploads?filename=user_crash.log&token={optional_token}"

    Then, using just the single token, you'll make the call to the tickets API which will upload all attachments that have been associated with the token.

    I hope this helps! Feel free to reach out with any questions.

    Tipene

    0

Please sign in to leave a comment.

Powered by Zendesk