Skip to content

Quando viene aggiunto un allegato al Case sul CzRM, aggiungere l'allegato alla segnalazione su SegnalaCi

Quando viene aggiunto una allegato al Case sul CzRM, si riceverà la seguente notifica sul topic czrm-updates

{
        "X-Forwarded-For": "85.222.158.8",
        "entity": "ContentVersion",
        "event_created_at": "2023-05-04T10:04:15.918257502Z",
        "event_id": "5e5a93d8-1cd9-4e50-8094-7de4ac98be29",
        "event_version": 1,
        "id": "0685E000004E1FZQA0",
        "segnalaCiId": null,
        "updated_at": "2023-04-28T11:45:15.000Z"
}

1.Eseguire sul CzRM una GET /ContentVersion/{id} dove id è l'identificativo dell'allegato presente nella notifica, e prendere il valore del campo FirstPublishLocationId che è l'id del case, il valore del campo PathOnClient, il valore del campo Description e il valore del campo FileExtension. Qui sotto un esempio:

{
    "attributes": {
        "type": "ContentVersion",
        "url": "/services/data/v56.0/sobjects/ContentVersion/0685E0000043FepQAE"
    },
    "Id": "0685E0000043FepQAE",
    "ContentDocumentId": "0695E000004BFuWQAW",
    "IsLatest": true,
    "ContentUrl": null,
    "ContentBodyId": "05T5E00000CZjjTUAT",
    "VersionNumber": "1",
    "Title": "Allegato esempio",
    "Description": null,
    "ReasonForChange": null,
    "SharingOption": "A",
    "SharingPrivacy": "N",
    "PathOnClient": "Screenshot.png",
    "RatingCount": 0,
    "IsDeleted": false,
    "ContentModifiedDate": "2023-03-24T14:47:10.000+0000",
    "ContentModifiedById": "0055E00000FCelpQAD",
    "PositiveRatingCount": 0,
    "NegativeRatingCount": 0,
    "FeaturedContentBoost": null,
    "FeaturedContentDate": null,
    "OwnerId": "0055E00000FCelpQAD",
    "CreatedById": "0055E00000FCelpQAD",
    "CreatedDate": "2023-03-24T14:47:10.000+0000",
    "LastModifiedById": "0055E00000FCelpQAD",
    "LastModifiedDate": "2023-03-24T14:47:10.000+0000",
    "SystemModstamp": "2023-03-24T14:47:12.000+0000",
    "TagCsv": null,
    "FileType": "PNG",
    "PublishStatus": "P",
    "VersionData": "/services/data/v56.0/sobjects/ContentVersion/0685E0000043FepQAE/VersionData",
    "ContentSize": 101723,
    "FileExtension": "png",
    "FirstPublishLocationId": "5005E00000Gma9MQAR",
    "Origin": "C",
    "ContentLocation": "S",
    "TextPreview": null,
    "ExternalDocumentInfo1": null,
    "ExternalDocumentInfo2": null,
    "Checksum": "7a71e7277debf5eacfd3857531d2fd8b",
    "IsMajorVersion": true,
    "IsAssetEnabled": false,
    "VersionDataUrl": "https://comunedigenova--dev2.sandbox.file.force.com/sfc/servlet.shepherd/version/download/0685E0000043Fep"
}

2.Eseguire sul CzRM una GET /ContentVersion/{id}/VersionData e prendere il risultato (è un binario essendo un file)

3.Eseguire su SegnalaCi una POST /{_locale}/upload con body

{
  "original_filename": "<PathOnClient>",
  "description": "<Description>",
  "mime_type": "image/png" # non è presente nel ContentVersion, userei una libreria per determinarlo a partire dal campo FileExtension,
  "protocol_required": false
}

4.prendere il valore del campo id e salvarselo, prendere inoltre il valore del campo uri ed eseguire una POST su di esso usando il binario nello step n.2

5.prendere il valore dell' id allo step 4 ed eseguire una PUT /{_locale}/upload/{id} con body

{
  "file_hash": "hash restituito dalla POST sull'uri dello step 4",
  "check_signature": false
}

6.eseguire una GET /applications/byexternal-id/{externalId} dove externalId è il valore del campo FirstPublishLocationId ritornato nello step 1

7.eseguire una PUT /applications/{id} dove id è il valore del campo id dell'application ritornata allo step 6, il body deve essere dato dall'application ritornata allo step 6, e in essa va aggiunto al campo data le informazioni dell'allegato caricato allo step 5. L'application dovrà quindi avere in più nel campo data

{
  "user": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "service": "string",
  "data": {
    "images": [
      {
        "description": "<Description>",
        "id": "<id ottenuto allo step 4>",
        "name": "<PathOnClient (troncare l'estensione)>-<id ottenuto allo step 4>.<FileExtension>",
        "originalName": "<PathOnClient>",
        "protocol_required": false,
        "url": "{SDC_BASENAME}applications/{id_application_step_6}/attachments/{id_attachment_step_4}?version=1"
      }
    ]
  }
  "protocol_folder_number": "string",
  "protocol_folder_code": "string",
  "protocol_number": "string",
  "protocol_document_id": "string",
  "protocolled_at": "2023-05-12T06:58:10.744Z",
  "outcome": true,
  "outcome_motivation": "string",
  "outcome_protocol_number": "string",
  "outcome_protocol_document_id": "string",
  "outcome_protocolled_at": "2023-05-12T06:58:10.744Z",
  "payment_type": "string",
  "payment_data": {},
  "status": "string",
  "user_compilation_notes": "string",
  "external_id": "string"
}
  1. Salvare il campo id presente nella notifica nell'oggetto dell'allegato lato SegnalaCi sul campo external_id. Per fare ciò eseguire su SegnalaCi una PATCH /api/applications/{id_application_step_6}/attachments/{id_attachment_step_4} con body
{
    "external_id": "id ritornato da salesforce nella notifica"
}

┆Issue is synchronized with this Wrike task

Edited by Mouslim Fatnassi