feat(integration): add crmAccountId field to allow dynamic CRM account ID in integration template
parent
9705157bdd
commit
a7763a5e56
|
@ -0,0 +1,236 @@
|
||||||
|
{
|
||||||
|
"authentication":{
|
||||||
|
"type":"bearer",
|
||||||
|
"token":"pat-na1-e83c1bfa-1a58-498b-8027-f6fdbb9f237d",
|
||||||
|
"crmPhoneTest":"5514987659932",
|
||||||
|
"crmAccountId":"23636141"
|
||||||
|
},
|
||||||
|
"crmRest":[
|
||||||
|
{
|
||||||
|
"createContactRecord":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/contacts/v1/contact"
|
||||||
|
},
|
||||||
|
"body":{
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"property":"phone",
|
||||||
|
"value":"crmPhone"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"id":"vid"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lookupContactByPhone":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Get",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/contacts/v1/search/query?q=crmPhone"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"phone":"contacts.properties.phone.value",
|
||||||
|
"id":"contacts.vid"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"callJournaling":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/engagements/v1/engagements"
|
||||||
|
},
|
||||||
|
"calls":[
|
||||||
|
{
|
||||||
|
"inboundAnsweredCall":{
|
||||||
|
"engagement":{
|
||||||
|
"active":true,
|
||||||
|
"type":"CALL"
|
||||||
|
},
|
||||||
|
"associations":{
|
||||||
|
"contactIds":[
|
||||||
|
{
|
||||||
|
"_prop":"crmContactId",
|
||||||
|
"_type":"number"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata":{
|
||||||
|
"toNumber":{
|
||||||
|
"_prop":"crmAgent",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"fromNumber":{
|
||||||
|
"_prop":"crmPhone",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"status":"COMPLETED",
|
||||||
|
"durationMilliseconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"milliseconds"
|
||||||
|
},
|
||||||
|
"body":"Ligação recebida - Chamada entrante",
|
||||||
|
"disposition":"f240bbac-87c9-4f6e-bf70-924b57d47db7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inboundMissedCall":{
|
||||||
|
"engagement":{
|
||||||
|
"active":true,
|
||||||
|
"type":"CALL"
|
||||||
|
},
|
||||||
|
"associations":{
|
||||||
|
"contactIds":[
|
||||||
|
{
|
||||||
|
"_prop":"crmContactId",
|
||||||
|
"_type":"number"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata":{
|
||||||
|
"toNumber":{
|
||||||
|
"_prop":"crmAgent",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"fromNumber":{
|
||||||
|
"_prop":"crmPhone",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"status":"COMPLETED",
|
||||||
|
"body":"Ligação perdida - Chamada entrante",
|
||||||
|
"disposition":"f240bbac-87c9-4f6e-bf70-924b57d47db7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"outboundAnsweredCall":{
|
||||||
|
"engagement":{
|
||||||
|
"active":true,
|
||||||
|
"type":"CALL"
|
||||||
|
},
|
||||||
|
"associations":{
|
||||||
|
"contactIds":[
|
||||||
|
{
|
||||||
|
"_prop":"crmContactId",
|
||||||
|
"_type":"number"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata":{
|
||||||
|
"fromNumber":{
|
||||||
|
"_prop":"crmPhone",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"toNumber":{
|
||||||
|
"_prop":"crmAgent",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"status":"COMPLETED",
|
||||||
|
"durationMilliseconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"milliseconds"
|
||||||
|
},
|
||||||
|
"body":"Ligação atendida - outbound call",
|
||||||
|
"disposition":"f240bbac-87c9-4f6e-bf70-924b57d47db7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"outboundUnansweredCall":{
|
||||||
|
"engagement":{
|
||||||
|
"active":true,
|
||||||
|
"type":"CALL"
|
||||||
|
},
|
||||||
|
"associations":{
|
||||||
|
"contactIds":[
|
||||||
|
{
|
||||||
|
"_prop":"crmContactId",
|
||||||
|
"_type":"number"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata":{
|
||||||
|
"fromNumber":{
|
||||||
|
"_prop":"crmAgent",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"toNumber":{
|
||||||
|
"_prop":"crmPhone",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"status":"COMPLETED",
|
||||||
|
"body":"Ligação perdida - oubound call",
|
||||||
|
"disposition":"f240bbac-87c9-4f6e-bf70-924b57d47db7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createTicketRecord":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/crm/v3/objects/tickets"
|
||||||
|
},
|
||||||
|
"body":{
|
||||||
|
"properties":{
|
||||||
|
"hs_pipeline":"24955700",
|
||||||
|
"hs_pipeline_stage":"57851009",
|
||||||
|
"hs_ticket_priority":"HIGH",
|
||||||
|
"subject":"Ticket criado a partir da URA"
|
||||||
|
},
|
||||||
|
"associations":[
|
||||||
|
{
|
||||||
|
"to":{
|
||||||
|
"id":"crmContactId"
|
||||||
|
},
|
||||||
|
"types":[
|
||||||
|
{
|
||||||
|
"associationCategory":"HUBSPOT_DEFINED",
|
||||||
|
"associationTypeId":16
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"id":"id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lookupTicket":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Get",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/crm/v3/objects/tickets/ticketId"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"status":"properties.hs_pipeline_stage",
|
||||||
|
"id":"id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,235 @@
|
||||||
|
{
|
||||||
|
"authentication":{
|
||||||
|
"type":"bearer",
|
||||||
|
"token":"pat-na1-37da6668-e0b1-44cb-bd2d-596f5f65634a",
|
||||||
|
"crmPhoneTest":"5514987659932"
|
||||||
|
},
|
||||||
|
"crmRest":[
|
||||||
|
{
|
||||||
|
"createContactRecord":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/contacts/v1/contact"
|
||||||
|
},
|
||||||
|
"body":{
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"property":"phone",
|
||||||
|
"value":"crmPhone"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"id":"vid"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lookupContactByPhone":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Get",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/contacts/v1/search/query?q=crmPhone"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"phone":"contacts.properties.phone.value",
|
||||||
|
"id":"contacts.vid"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"callJournaling":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/engagements/v1/engagements"
|
||||||
|
},
|
||||||
|
"calls":[
|
||||||
|
{
|
||||||
|
"inboundAnsweredCall":{
|
||||||
|
"engagement":{
|
||||||
|
"active":true,
|
||||||
|
"type":"CALL"
|
||||||
|
},
|
||||||
|
"associations":{
|
||||||
|
"contactIds":[
|
||||||
|
{
|
||||||
|
"_prop":"crmContactId",
|
||||||
|
"_type":"number"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata":{
|
||||||
|
"toNumber":{
|
||||||
|
"_prop":"crmAgent",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"fromNumber":{
|
||||||
|
"_prop":"crmPhone",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"status":"COMPLETED",
|
||||||
|
"durationMilliseconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"milliseconds"
|
||||||
|
},
|
||||||
|
"body":"Ligação recebida - inbound call",
|
||||||
|
"disposition":"f240bbac-87c9-4f6e-bf70-924b57d47db7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inboundMissedCall":{
|
||||||
|
"engagement":{
|
||||||
|
"active":true,
|
||||||
|
"type":"CALL"
|
||||||
|
},
|
||||||
|
"associations":{
|
||||||
|
"contactIds":[
|
||||||
|
{
|
||||||
|
"_prop":"crmContactId",
|
||||||
|
"_type":"number"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata":{
|
||||||
|
"toNumber":{
|
||||||
|
"_prop":"crmAgent",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"fromNumber":{
|
||||||
|
"_prop":"crmPhone",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"status":"COMPLETED",
|
||||||
|
"body":"Ligação perdida - inbound call",
|
||||||
|
"disposition":"f240bbac-87c9-4f6e-bf70-924b57d47db7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"outboundAnsweredCall":{
|
||||||
|
"engagement":{
|
||||||
|
"active":true,
|
||||||
|
"type":"CALL"
|
||||||
|
},
|
||||||
|
"associations":{
|
||||||
|
"contactIds":[
|
||||||
|
{
|
||||||
|
"_prop":"crmContactId",
|
||||||
|
"_type":"number"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata":{
|
||||||
|
"fromNumber":{
|
||||||
|
"_prop":"crmPhone",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"toNumber":{
|
||||||
|
"_prop":"crmAgent",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"status":"COMPLETED",
|
||||||
|
"durationMilliseconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"milliseconds"
|
||||||
|
},
|
||||||
|
"body":"Ligação atendida - outbound call",
|
||||||
|
"disposition":"f240bbac-87c9-4f6e-bf70-924b57d47db7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"outboundUnansweredCall":{
|
||||||
|
"engagement":{
|
||||||
|
"active":true,
|
||||||
|
"type":"CALL"
|
||||||
|
},
|
||||||
|
"associations":{
|
||||||
|
"contactIds":[
|
||||||
|
{
|
||||||
|
"_prop":"crmContactId",
|
||||||
|
"_type":"number"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata":{
|
||||||
|
"fromNumber":{
|
||||||
|
"_prop":"crmAgent",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"toNumber":{
|
||||||
|
"_prop":"crmPhone",
|
||||||
|
"_type":"string"
|
||||||
|
},
|
||||||
|
"status":"COMPLETED",
|
||||||
|
"body":"Ligação perdida - oubound call",
|
||||||
|
"disposition":"f240bbac-87c9-4f6e-bf70-924b57d47db7"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createTicketRecord":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/crm/v3/objects/tickets"
|
||||||
|
},
|
||||||
|
"body":{
|
||||||
|
"properties":{
|
||||||
|
"hs_pipeline":"0",
|
||||||
|
"hs_pipeline_stage":"1",
|
||||||
|
"hs_ticket_priority":"HIGH",
|
||||||
|
"subject":"Teste"
|
||||||
|
},
|
||||||
|
"associations":[
|
||||||
|
{
|
||||||
|
"to":{
|
||||||
|
"id":"crmContactId"
|
||||||
|
},
|
||||||
|
"types":[
|
||||||
|
{
|
||||||
|
"associationCategory":"HUBSPOT_DEFINED",
|
||||||
|
"associationTypeId":16
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"id":"id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lookupTicket":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Get",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://api.hubapi.com/crm/v3/objects/tickets/ticketId"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"status":"properties.hs_pipeline_stage",
|
||||||
|
"id":"id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -4,7 +4,8 @@
|
||||||
"crmClientId":"3MVG9JJwBBbcN47Kv0Z7EuNd19INI1Bhe7uX_Wz6M0VlMyWJD4xPKTtn_b39bGn6LmdSkKJ.aLNGdV1brj16C",
|
"crmClientId":"3MVG9JJwBBbcN47Kv0Z7EuNd19INI1Bhe7uX_Wz6M0VlMyWJD4xPKTtn_b39bGn6LmdSkKJ.aLNGdV1brj16C",
|
||||||
"crmClientSecret":"870E8D51A1CA06896D966A3D92ABD885346DAD4428926E965776C479055969E7",
|
"crmClientSecret":"870E8D51A1CA06896D966A3D92ABD885346DAD4428926E965776C479055969E7",
|
||||||
"crmScopes":"full refresh_token",
|
"crmScopes":"full refresh_token",
|
||||||
"crmPhoneTest":"5514983253326"
|
"crmPhoneTest":"5514983253326",
|
||||||
|
"crmAccountId":"001ak00000e27uPAAQ"
|
||||||
},
|
},
|
||||||
"crmRest":[
|
"crmRest":[
|
||||||
{
|
{
|
||||||
|
@ -176,6 +177,29 @@
|
||||||
"url":"https://nocompany-a9-dev-ed.develop.lightning.force.com/lightning/r/Lead/crmContactId/edit?count=1&backgroundContext=%2Flightning%2Fr%2FLead%2F00Qak0000098YFhEAM%2Fview"
|
"url":"https://nocompany-a9-dev-ed.develop.lightning.force.com/lightning/r/Lead/crmContactId/edit?count=1&backgroundContext=%2Flightning%2Fr%2FLead%2F00Qak0000098YFhEAM%2Fview"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
"createCase": {
|
||||||
|
"request": {
|
||||||
|
"requestContentType": "application/json",
|
||||||
|
"requestEncoding": "Json",
|
||||||
|
"requestType": "Post",
|
||||||
|
"responseType": "Json",
|
||||||
|
"url": "https://nocompany-a9-dev-ed.develop.my.salesforce.com/services/data/v61.0/sobjects/Case"
|
||||||
|
},
|
||||||
|
"body": {
|
||||||
|
|
||||||
|
"Subject": "Assunto do Caso teste",
|
||||||
|
"Description": "Descrição detalhada do caso test",
|
||||||
|
"Status": "Novo",
|
||||||
|
"Priority": "Alta",
|
||||||
|
"Departamento__c": "Financeiro"
|
||||||
|
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"id": "id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -0,0 +1,205 @@
|
||||||
|
{
|
||||||
|
"authentication":{
|
||||||
|
"type":"oauth2",
|
||||||
|
"crmClientId":"3MVG9_I_oWkIqLrkzfDaK8hlNFdHqjRWZ62.9A6C8bCCuZsTmzJVokEhC.xFZq8LjH8aacBs8CNb_lQSHcfMw",
|
||||||
|
"crmClientSecret":"7AEBE0AE0AE6386D34348A7D83D56234CCA1406998DF804F1AD0DE6AB1E55E75",
|
||||||
|
"crmScopes":"full refresh_token",
|
||||||
|
"crmPhoneTest":"5514983253326",
|
||||||
|
"crmOAuthRefreshToken":"5Aep861dGfrsDEfsAziKaAP7kJIZ_jtDR9PknPzivGHe39mGzePJXl6LwYfSJGnAe9F_oZ0AalhUk2tdLidlCg_",
|
||||||
|
"crmOAuthToken":"00DHa000001uwdZ!AQEAQFf9mSrBHKgnPNWwjQ.P0ybkWVk7BaHJ2Y1UmEvktnQlJ8Mjcxx9NZaSp7nvuXC_J7AVPHa7MRMyX8ZI0aXHNR.kwhl3"
|
||||||
|
},
|
||||||
|
"crmRest":[
|
||||||
|
{
|
||||||
|
"authorizationEndpoint":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"empty",
|
||||||
|
"requestEncoding":"empty",
|
||||||
|
"requestType":"Get",
|
||||||
|
"responseType":"empty",
|
||||||
|
"url":"https://portoitapoa--qaporto.sandbox.my.salesforce.com/services/oauth2/authorize?response_type=code&client_id=crmClientId&code_challenge=bDXEJ0wxr0s369lGxHwewLULiOuyl6Y3W7QZABmn2S4&redirect_uri=crmRedirectURI&scope=crmScopes&code_challenge_method=S256"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tokenEndpoint":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"none",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://portoitapoa--qaporto.sandbox.my.salesforce.com/services/oauth2/token"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createContactRecord":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://portoitapoa--qaporto.sandbox.my.salesforce.com/services/data/v61.0/sobjects/Contact"
|
||||||
|
},
|
||||||
|
"body":{
|
||||||
|
"Phone":"crmPhone",
|
||||||
|
"LastName":"crmLastName",
|
||||||
|
"FirstName":"crmFirstName"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"id":"id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lookupContactByPhone":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Get",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://portoitapoa--qaporto.sandbox.my.salesforce.com/services/data/v61.0/query/?q=SELECT+Id,+Name,+Phone,+AccountId+FROM+Contact+WHERE+Phone='crmPhone'"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"phone":"records[0].Phone",
|
||||||
|
"id":"records[0].Id",
|
||||||
|
"name":"records[0].Name",
|
||||||
|
"accountId":"records[0].AccountId"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"callJournaling":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://portoitapoa--qaporto.sandbox.my.salesforce.com/services/data/v61.0/sobjects/Task"
|
||||||
|
},
|
||||||
|
"calls":[
|
||||||
|
{
|
||||||
|
"inboundAnsweredCall":{
|
||||||
|
"Subject":"Call Journal",
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Description":"Ligação recebida",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal",
|
||||||
|
"CallType":"Outbound",
|
||||||
|
"CallDurationInSeconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"seconds"
|
||||||
|
},
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"TaskSubtype":"Call"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inboundMissedCall":{
|
||||||
|
"Subject":"Call Journal",
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Description":"Ligação recebida perdida",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal",
|
||||||
|
"CallType":"Outbound",
|
||||||
|
"CallDurationInSeconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"seconds"
|
||||||
|
},
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"TaskSubtype":"Call"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"outboundAnsweredCall":{
|
||||||
|
"Subject":"Call Journal",
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Description":"Ligação realizada",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal",
|
||||||
|
"CallType":"Outbound",
|
||||||
|
"CallDurationInSeconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"seconds"
|
||||||
|
},
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"TaskSubtype":"Call"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"outboundUnansweredCall":{
|
||||||
|
"Subject":"Call Journal",
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Description":"Ligação realizada nao atendida",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal",
|
||||||
|
"CallType":"Outbound",
|
||||||
|
"CallDurationInSeconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"seconds"
|
||||||
|
},
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"TaskSubtype":"Call"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"chatJournaling":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://portoitapoa--qaporto.sandbox.my.salesforce.com/services/data/v61.0/sobjects/Task"
|
||||||
|
},
|
||||||
|
"chats":[
|
||||||
|
{
|
||||||
|
"chatDone":{
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Subject":"WhatsApp Chat",
|
||||||
|
"Description":"Conversation started via WhatsApp. Conversation link: chatLink",
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"redirectLink":{
|
||||||
|
"request":{
|
||||||
|
"url":"https://portoitapoa--qaporto.sandbox.my.salesforce.com/lightning/r/Lead/crmContactId/edit?count=1&backgroundContext=%2Flightning%2Fr%2FLead%2F00Qak0000098YFhEAM%2Fview"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createCase":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://portoitapoa--qaporto.sandbox.my.salesforce.com/services/data/v61.0/sobjects/Case"
|
||||||
|
},
|
||||||
|
"body":{
|
||||||
|
"Subject":"Caso criado na URA",
|
||||||
|
"Status":"Aberto",
|
||||||
|
"ContactId":"0038800000LVXFfAAP",
|
||||||
|
"AccountId":"0018800000fuRajAAE",
|
||||||
|
"Origin":"Telefone",
|
||||||
|
"Priority":"Médio",
|
||||||
|
"Reason":"Informação"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"id":"id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,206 @@
|
||||||
|
{
|
||||||
|
"authentication":{
|
||||||
|
"type":"oauth2",
|
||||||
|
"crmClientId":"3MVG9_I_oWkIqLrkzfDaK8hlNFdHqjRWZ62.9A6C8bCCuZsTmzJVokEhC.xFZq8LjH8aacBs8CNb_lQSHcfMw",
|
||||||
|
"crmClientSecret":"7AEBE0AE0AE6386D34348A7D83D56234CCA1406998DF804F1AD0DE6AB1E55E75",
|
||||||
|
"crmScopes":"full refresh_token",
|
||||||
|
"crmPhoneTest":"551498325332",
|
||||||
|
"crmOAuthRefreshToken":"5Aep8618yVsldz6rZP_nN5Ob0S3VSbO5DsHksJseMuG7dYHJQuUnAR.0muSjn_VlVM9YeARnacAGg5s0QsZWxKA",
|
||||||
|
"crmOAuthToken":"00D4P000000iyUc!AQEAQPdYbZ9PsW7dEAFfFK2jzVzntHAkJjF5xDPK1bdZPsbFLHH.5Aw1th_DFJrS6XcJeGfRjQmhSBS36i6dIJuFDKjbAl67"
|
||||||
|
},
|
||||||
|
"crmRest":[
|
||||||
|
{
|
||||||
|
"authorizationEndpoint":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"empty",
|
||||||
|
"requestEncoding":"empty",
|
||||||
|
"requestType":"Get",
|
||||||
|
"responseType":"empty",
|
||||||
|
"url":"https://restoque.my.salesforce.com/services/oauth2/authorize?response_type=code&client_id=crmClientId&code_challenge=bDXEJ0wxr0s369lGxHwewLULiOuyl6Y3W7QZABmn2S4&redirect_uri=crmRedirectURI&scope=crmScopes&code_challenge_method=S256"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tokenEndpoint":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"none",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://restoque.my.salesforce.com/services/oauth2/token"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createContactRecord":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://restoque.my.salesforce.com/services/data/v61.0/sobjects/Contact"
|
||||||
|
},
|
||||||
|
"body":{
|
||||||
|
"Phone":"crmPhone",
|
||||||
|
"LastName":"crmLastName",
|
||||||
|
"FirstName":"crmFirstName"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"id":"id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lookupContactByPhone":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Get",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://restoque.my.salesforce.com/services/data/v61.0/query/?q=SELECT+Id,+Name,+PersonMobilePhone+FROM+Account+WHERE+PersonMobilePhone='crmPhone'"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"phone":"records[0].PersonMobilePhone",
|
||||||
|
"id":"records[0].Id",
|
||||||
|
"name":"records[0].Name",
|
||||||
|
"accountId":"records[0].Id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"callJournaling":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://restoque.my.salesforce.com/services/data/v61.0/sobjects/Task"
|
||||||
|
},
|
||||||
|
"calls":[
|
||||||
|
{
|
||||||
|
"inboundAnsweredCall":{
|
||||||
|
"Subject":"Call Journal",
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Description":"Ligação recebida",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal",
|
||||||
|
"CallType":"Outbound",
|
||||||
|
"CallDurationInSeconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"seconds"
|
||||||
|
},
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"TaskSubtype":"Call"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inboundMissedCall":{
|
||||||
|
"Subject":"Call Journal",
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Description":"Ligação recebida perdida",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal",
|
||||||
|
"CallType":"Outbound",
|
||||||
|
"CallDurationInSeconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"seconds"
|
||||||
|
},
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"TaskSubtype":"Call"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"outboundAnsweredCall":{
|
||||||
|
"Subject":"Call Journal",
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Description":"Ligação realizada",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal",
|
||||||
|
"CallType":"Outbound",
|
||||||
|
"CallDurationInSeconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"seconds"
|
||||||
|
},
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"TaskSubtype":"Call"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"outboundUnansweredCall":{
|
||||||
|
"Subject":"Call Journal",
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Description":"Ligação realizada nao atendida",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal",
|
||||||
|
"CallType":"Outbound",
|
||||||
|
"CallDurationInSeconds":{
|
||||||
|
"_prop":"crmCallDuration",
|
||||||
|
"_type":"number",
|
||||||
|
"_format":"seconds"
|
||||||
|
},
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"TaskSubtype":"Call"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"chatJournaling":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://restoque.my.salesforce.com/services/data/v61.0/sobjects/Task"
|
||||||
|
},
|
||||||
|
"chats":[
|
||||||
|
{
|
||||||
|
"chatDone":{
|
||||||
|
"WhoId":"crmContactId",
|
||||||
|
"Subject":"WhatsApp Chat",
|
||||||
|
"Description":"Conversation started via WhatsApp. Conversation link: chatLink",
|
||||||
|
"ActivityDate":"YYYY-MM-DD",
|
||||||
|
"Status":"Completed",
|
||||||
|
"Priority":"Normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"redirectLink":{
|
||||||
|
"request":{
|
||||||
|
"url":"https://restoque.my.salesforce.com/lightning/r/Lead/crmContactId/edit?count=1&backgroundContext=%2Flightning%2Fr%2FLead%2F00Qak0000098YFhEAM%2Fview"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"createCase":{
|
||||||
|
"request":{
|
||||||
|
"requestContentType":"application/json",
|
||||||
|
"requestEncoding":"Json",
|
||||||
|
"requestType":"Post",
|
||||||
|
"responseType":"Json",
|
||||||
|
"url":"https://restoque.my.salesforce.com/services/data/v61.0/sobjects/Case"
|
||||||
|
},
|
||||||
|
"body":{
|
||||||
|
"Subject":"Assunto do Caso teste",
|
||||||
|
"Origin":"Telefone",
|
||||||
|
"Description":"Descrição detalhada do caso test",
|
||||||
|
"Status":"Novo",
|
||||||
|
"Priority":"Alta",
|
||||||
|
"Categoria__c":"Telefonia",
|
||||||
|
"ContactId":"",
|
||||||
|
"RecordTypeId":"0124P00000070MzQAI"
|
||||||
|
},
|
||||||
|
"response":{
|
||||||
|
"id":"id"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -116,7 +116,8 @@ const AuthenticationSchema = new Schema({
|
||||||
crmScopes: String,
|
crmScopes: String,
|
||||||
crmOAuthRefreshToken: String,
|
crmOAuthRefreshToken: String,
|
||||||
crmOAuthToken: String,
|
crmOAuthToken: String,
|
||||||
crmPhoneTest: String
|
crmPhoneTest: String,
|
||||||
|
crmAccountId: String
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ async function createTicket(companyId, rest, authentication, crmPhone, crmFirstN
|
||||||
|
|
||||||
console.log('========> body3: ', JSON.stringify(body, null, 6))
|
console.log('========> body3: ', JSON.stringify(body, null, 6))
|
||||||
|
|
||||||
const { type, userName, passWord, token, crmClientId } = authentication
|
const { type, userName, passWord, token, crmClientId, crmAccountId } = authentication
|
||||||
|
|
||||||
//url, crmPhone, requestType, requestContentType, type, userName, passWord, token, crmClientId, data = '', ticketId = '', companyId
|
//url, crmPhone, requestType, requestContentType, type, userName, passWord, token, crmClientId, data = '', ticketId = '', companyId
|
||||||
const config = await requestConfigHeader(url, crmPhone, requestType, requestContentType, type, userName, passWord, token, crmClientId, body, '', companyId)
|
const config = await requestConfigHeader(url, crmPhone, requestType, requestContentType, type, userName, passWord, token, crmClientId, body, '', companyId)
|
||||||
|
@ -117,7 +117,8 @@ async function createTicket(companyId, rest, authentication, crmPhone, crmFirstN
|
||||||
|
|
||||||
await CRM_Ticket.create({ companyId, contact, ticketId: auxTicketId, crm })
|
await CRM_Ticket.create({ companyId, contact, ticketId: auxTicketId, crm })
|
||||||
|
|
||||||
ticketUrl = `https://app.hubspot.com/contacts/23636141/ticket/${auxTicketId}`
|
// ticketUrl = `https://app.hubspot.com/contacts/23636141/ticket/${auxTicketId}`
|
||||||
|
ticketUrl = `https://app.hubspot.com/contacts/${crmAccountId}/ticket/${auxTicketId}`
|
||||||
|
|
||||||
sendEventTicketCreatedToSocket({ companyId, extension: crmAgent, ticketUrl: ticketUrl })
|
sendEventTicketCreatedToSocket({ companyId, extension: crmAgent, ticketUrl: ticketUrl })
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ async function lookupContactByPhone(rest, authentication, crmPhone, companyId, t
|
||||||
|
|
||||||
let { requestContentType, requestEncoding, requestType, responseType, url } = request
|
let { requestContentType, requestEncoding, requestType, responseType, url } = request
|
||||||
|
|
||||||
const { type, userName, passWord, token, crmClientId } = authentication
|
const { type, userName, passWord, token, crmClientId, crmAccountId} = authentication
|
||||||
|
|
||||||
if (cacheContact) {
|
if (cacheContact) {
|
||||||
const crmInfo = await CRM_Contact.findOne({ companyId, crmBaseURL: new URL(url).hostname, phone: crmPhone })
|
const crmInfo = await CRM_Contact.findOne({ companyId, crmBaseURL: new URL(url).hostname, phone: crmPhone })
|
||||||
|
@ -153,6 +153,13 @@ async function lookupContactByPhone(rest, authentication, crmPhone, companyId, t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tenta pegar o accountId no body da resposta se não conseguir, pega do template se a propriedade crmAccountId existir no template
|
||||||
|
// Foi criado dessa forma para evitar problemas com integrações que já estão em funcionamento
|
||||||
|
if(!auxAccountId && crmAccountId){
|
||||||
|
console.log('---------> auxAccountId definido a partir do crmAccountId do template: ',crmAccountId)
|
||||||
|
auxAccountId = crmAccountId
|
||||||
|
}
|
||||||
|
|
||||||
console.log('---------> auxPhone: ', auxPhone, ' | auxContactId: ', auxContactId, ' | auxAccountId: ', auxAccountId)
|
console.log('---------> auxPhone: ', auxPhone, ' | auxContactId: ', auxContactId, ' | auxAccountId: ', auxAccountId)
|
||||||
|
|
||||||
if (auxPhone) {
|
if (auxPhone) {
|
||||||
|
|
|
@ -36,6 +36,10 @@ async function ticketCRM(companyId, crmPhone, crmAgent = "0000", crmFirstName =
|
||||||
|
|
||||||
if (obj) {
|
if (obj) {
|
||||||
|
|
||||||
|
const { crmAccountId } = authentication
|
||||||
|
|
||||||
|
console.log("------------> ticketCRM crmAccountId: ",crmAccountId)
|
||||||
|
|
||||||
let { url } = obj.request
|
let { url } = obj.request
|
||||||
let contact = await _lookupContact(rest, authentication, crmPhone, companyId, crmFirstName, url)
|
let contact = await _lookupContact(rest, authentication, crmPhone, companyId, crmFirstName, url)
|
||||||
|
|
||||||
|
@ -91,7 +95,7 @@ async function ticketCRM(companyId, crmPhone, crmAgent = "0000", crmFirstName =
|
||||||
isCreated = false
|
isCreated = false
|
||||||
|
|
||||||
crmTicketLinks.push({
|
crmTicketLinks.push({
|
||||||
ticketId: `https://app.hubspot.com/contacts/23636141/ticket/${ticket_id}`,
|
ticketId: `https://app.hubspot.com/contacts/${crmAccountId}/ticket/${ticket_id}`,
|
||||||
created: isCreated,
|
created: isCreated,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -130,7 +134,7 @@ async function ticketCRM(companyId, crmPhone, crmAgent = "0000", crmFirstName =
|
||||||
isCreated = false
|
isCreated = false
|
||||||
|
|
||||||
crmTicketLinks.push({
|
crmTicketLinks.push({
|
||||||
ticketId: `https://app.hubspot.com/contacts/23636141/ticket/${ticket_id}`,
|
ticketId: `https://app.hubspot.com/contacts/${crmAccountId}/ticket/${ticket_id}`,
|
||||||
created: isCreated,
|
created: isCreated,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -147,7 +151,7 @@ async function ticketCRM(companyId, crmPhone, crmAgent = "0000", crmFirstName =
|
||||||
}
|
}
|
||||||
|
|
||||||
crmTicketLinks.push({
|
crmTicketLinks.push({
|
||||||
ticketId: `https://app.hubspot.com/contacts/23636141/ticket/${ticket_id}`,
|
ticketId: `https://app.hubspot.com/contacts/${crmAccountId}/ticket/${ticket_id}`,
|
||||||
created: isCreated,
|
created: isCreated,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -194,7 +198,7 @@ async function sincTicket(authentication, contact, companyId, crm, obj_contact,
|
||||||
|
|
||||||
async function findTicketOpenHubspot(authentication, contact) {
|
async function findTicketOpenHubspot(authentication, contact) {
|
||||||
|
|
||||||
const ticket = await findTicketOpenHubspotByContact(authentication, contact)
|
const ticket = await findTicketOpenHubspotByContact(authentication, contact)
|
||||||
console.log('=========> OPEN TICKET 2: ', JSON.stringify(ticket, null, 6))
|
console.log('=========> OPEN TICKET 2: ', JSON.stringify(ticket, null, 6))
|
||||||
|
|
||||||
if (ticket && Object.keys(ticket).length != 0) {
|
if (ticket && Object.keys(ticket).length != 0) {
|
||||||
|
|
Loading…
Reference in New Issue