diff --git a/backend/package.json b/backend/package.json index 98be155..f8e963f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -18,7 +18,7 @@ "@google-cloud/dialogflow": "^4.6.0", "@sentry/node": "^5.29.2", "@types/pino": "^6.3.4", - "actions-on-google": "^3.0.0", + "actions-on-google": "^3.0.0", "axios": "^1.2.3", "bcryptjs": "^2.4.3", "cookie-parser": "^1.4.5", @@ -46,8 +46,10 @@ "sequelize-typescript": "^1.1.0", "socket.io": "^3.0.5", "socket.io-client": "^4.5.4", + "swagger-ui-express": "^5.0.0", "uuid": "^8.3.2", "whatsapp-web.js": "github:pedroslopez/whatsapp-web.js", + "yamljs": "^0.3.0", "yup": "^0.32.8" }, "devDependencies": { diff --git a/backend/src/app.ts b/backend/src/app.ts index 7864346..d4e3adb 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -10,7 +10,12 @@ import "./database"; import uploadConfig from "./config/upload"; import AppError from "./errors/AppError"; import routes from "./routes"; -import { logger } from "./utils/logger"; +import { logger } from "./utils/logger"; + +// Swagger SLM +const swaggerUI = require("swagger-ui-express"); +const YAML = require("yamljs"); +const swaggerDocument = YAML.load("./swagger.yaml"); Sentry.init({ dsn: process.env.SENTRY_DSN }); @@ -26,6 +31,13 @@ app.use(cookieParser()); app.use(express.json()); app.use(Sentry.Handlers.requestHandler()); app.use("/public", express.static(uploadConfig.directory)); + +app.get("/", (req: Request, res: Response) => { + res.send('

SLM/OMNIHIT api

Documentation'); +}); + +app.use("/api-docs", swaggerUI.serve, swaggerUI.setup(swaggerDocument)); + app.use(routes); app.use(Sentry.Handlers.errorHandler()); @@ -39,6 +51,5 @@ app.use(async (err: Error, req: Request, res: Response, _: NextFunction) => { logger.error(err); return res.status(500).json({ error: "Internal server error" }); }); - export default app; diff --git a/backend/src/controllers/HitController.ts b/backend/src/controllers/HitController.ts index 02789b1..97d2904 100644 --- a/backend/src/controllers/HitController.ts +++ b/backend/src/controllers/HitController.ts @@ -14,7 +14,10 @@ import SendWhatsAppMessage from "../services/WbotServices/SendWhatsAppMessage"; import { Op, where, Sequelize } from "sequelize"; import ShowTicketServiceByContactId from "../services/TicketServices/ShowTicketServiceByContactId"; import hitPortalMonitoring from "../helpers/HitPortalMonitoring"; -import { sendDialogflowAwswer, verifyContact } from "../services/WbotServices/wbotMessageListener"; +import { + sendDialogflowAwswer, + verifyContact +} from "../services/WbotServices/wbotMessageListener"; import CheckIsValidContact from "../services/WbotServices/CheckIsValidContact"; import Contact from "../models/Contact"; import GetProfilePicUrl from "../services/WbotServices/GetProfilePicUrl"; @@ -25,62 +28,59 @@ import ShowQuickAnswerService from "../services/QuickAnswerService/ShowQuickAnsw import ShowQueryItemService from "../services/SLM/ShowQueryItemService"; import QueryItem from "../models/QueryItem"; - - // type IndexQuery = { -// cod_web: string; -// }; +// cod_web: string; +// }; + +// export const index = async (req: Request, res: Response): Promise => {} export const hit = async (req: Request, res: Response): Promise => { - // const { - // cod_web, + // cod_web, // } = req.body as IndexQuery; - console.log('req.boy: ', req.body) - console.log("req.body['cod_web']: ", req.body['cod_web']) - console.log("req.body['action']: ", req.body['action']) - console.log("req.body['phone']: ", req.body['phone']) - console.log("req.body['name']: ", req.body['name']) - console.log("req.body['mensagem']: ", req.body['mensagem']) + console.log("req.boy: ", req.body); + console.log("req.body['cod_web']: ", req.body["cod_web"]); + console.log("req.body['action']: ", req.body["action"]); + console.log("req.body['phone']: ", req.body["phone"]); + console.log("req.body['name']: ", req.body["name"]); + console.log("req.body['mensagem']: ", req.body["mensagem"]); + if (req.headers["auth"] === "0424bd59b807674191e7d77572075f33") { + let phone = req.body["phone"]; + let name = req.body["name"]; - if (req.headers["auth"] === '0424bd59b807674191e7d77572075f33') { - - let phone = req.body['phone'] - let name = req.body['name'] - - if (!phone) return res.status(200).json({ "message": "Ok" }); + if (!phone) return res.status(200).json({ message: "Ok" }); const regex = /^55/; - phone = phone.match(/\d+/g).join(''); + phone = phone.match(/\d+/g).join(""); if (!regex.test(phone)) { - phone = '55' + phone; + phone = "55" + phone; } - if (phone.length < 7) return res.status(200).json({ "message": "Ok" }); + if (phone.length < 7) return res.status(200).json({ message: "Ok" }); let validNumber = await CheckIsValidContact(phone); if (!validNumber) { - return res.status(200).json({ "message": "Ok" }); + return res.status(200).json({ message: "Ok" }); } - validNumber = req.body['cod_web'] === '0001' ? validNumber : '5517988325936' + validNumber = + req.body["cod_web"] === "0001" ? validNumber : "5517988325936"; let contact = await Contact.findOne({ where: { number: validNumber } }); // let contact = await Contact.findOne({ where: { number: '5517988325936' } }); if (!contact) { - const profilePicUrl = await GetProfilePicUrl(validNumber); contact = await CreateContactService({ name: name || phone, number: validNumber, - profilePicUrl: profilePicUrl, + profilePicUrl: profilePicUrl }); const io = getIO(); @@ -88,149 +88,164 @@ export const hit = async (req: Request, res: Response): Promise => { action: "create", contact }); - } // let response: any = `*Olá!*\r\n\r\n*Esperamos que esteja tudo bem com você. Somos o grupo HIT e estamos aqui para mantê-lo atualizado sobre o chamado referente à unidade 0001 - Hit World Teste. Queremos garantir que você esteja informado sobre o incidente e possa acompanhar tudo de perto.*\r\n\r\nPrezado cliente, se deseja adicionar alguma informação no protocolo 200-322442 digite 2\r\n\r\n\r\n*Protocolo:* 200-322442\r\n*Data de abertura:* 07/07/2023 16:51:29\r\n*Nome do cliente:* Hit World Teste\r\n*Nome da filial:* Hit World Teste\r\n*Código do cliente:* 0001\r\n\r\n*Informação de abertura:* teste de ativação Contato: Felipe Telefone: 11983534545\r\n*Data de abertura:* 07/07/2023 16:51:29\r\n\r\n` - let response: any = '' + let response: any = ""; - if (['atdabriu', 'atdatualizou'].includes(req.body['action'])) { + if (["atdabriu", "atdatualizou"].includes(req.body["action"])) { response = await hitPortalMonitoring({ - 'params[n_chamado_web]': req.body['n_chamado_web'], - 'method': 'omnihit.consultachamado', - }) + "params[n_chamado_web]": req.body["n_chamado_web"], + method: "omnihit.consultachamado" + }); + } else { + response = req.body["mensagem"]; } - else { - response = req.body['mensagem'] - } - - - if (!response || response.length == 0 || !contact) { - console.log('Empty result from hit portal monitoring to n_chamado_web: ', req.body['n_chamado_web']) - return res.status(200).json({ "message": "Ok" }); + console.log( + "Empty result from hit portal monitoring to n_chamado_web: ", + req.body["n_chamado_web"] + ); + return res.status(200).json({ message: "Ok" }); } - const botInfo = await BotIsOnQueue('botqueue') + const botInfo = await BotIsOnQueue("botqueue"); - let ticket: any = await ShowTicketServiceByContactId(contact.id) + let ticket: any = await ShowTicketServiceByContactId(contact.id); if (!ticket.dataValues.id) { - const defaultWhatsapp = await GetDefaultWhatsApp(); let ticket_obj: any = await FindOrCreateTicketServiceBot( contact, defaultWhatsapp.id!, - 0, + 0 ); - ticket = ticket_obj.ticket + ticket = ticket_obj.ticket; } - - if (ticket.id && ticket.status == 'pending') { - + if (ticket.id && ticket.status == "pending") { await sendMessageHitMonitoring(response, ticket); - await sendMessageInsertInfoSLM(req, ticket, ['atdabriu', 'atdatualizou'], contact.id); - - } - else if (ticket.id && ticket.userId == botInfo.userIdBot) { - + await sendMessageInsertInfoSLM( + req, + ticket, + ["atdabriu", "atdatualizou"], + contact.id + ); + } else if (ticket.id && ticket.userId == botInfo.userIdBot) { let queue = await ShowQueueService(botInfo.botQueueId); - await UpdateTicketService({ ticketData: { queueId: queue.id }, ticketId: ticket.id }); + await UpdateTicketService({ + ticketData: { queueId: queue.id }, + ticketId: ticket.id + }); ticket = await ShowTicketService(ticket.id); - let msg: any = { type: 'chat', from: `${contact.number}@c.us`, body: '0' } + let msg: any = { + type: "chat", + from: `${contact.number}@c.us`, + body: "0" + }; - await sendDialogflowAwswer(ticket.whatsappId, ticket, msg, contact, false); + await sendDialogflowAwswer( + ticket.whatsappId, + ticket, + msg, + contact, + false + ); await sendMessageHitMonitoring(response, ticket); - await sendMessageInsertInfoSLM(req, ticket, ['atdabriu', 'atdatualizou'], contact.id); - + await sendMessageInsertInfoSLM( + req, + ticket, + ["atdabriu", "atdatualizou"], + contact.id + ); } - } - else { - return res.status(401).json({ "message": "Token Inválido!" }); + } else { + return res.status(401).json({ message: "Token Inválido!" }); } - - return res.status(200).json({ "message": "Ok" }); - + return res.status(200).json({ message: "Ok" }); }; -async function sendMessageInsertInfoSLM(req: Request, ticket: any, params: any[], contactId: number) { - +async function sendMessageInsertInfoSLM( + req: Request, + ticket: any, + params: any[], + contactId: number +) { const insert_protocol_info: QueryItem = await ShowQueryItemService({ contactId, - name: 'insert_protocol_info' - }) + name: "insert_protocol_info" + }); const n_chamado_web: QueryItem = await ShowQueryItemService({ contactId, - name: 'n_chamado_web' - }) + name: "n_chamado_web" + }); await new Promise(f => setTimeout(f, 2000)); - if (params.includes(req.body['action'])) { - - if (insert_protocol_info && + if (params.includes(req.body["action"])) { + if ( + insert_protocol_info && insert_protocol_info?.status && - n_chamado_web?.queryItem) { - - await sendMessageHitMonitoring(`🔄 Houve uma atualização no chamado acima`, ticket); + n_chamado_web?.queryItem + ) { + await sendMessageHitMonitoring( + `🔄 Houve uma atualização no chamado acima`, + ticket + ); await new Promise(f => setTimeout(f, 1000)); - await sendMessageHitMonitoring(`✅ Protocolo *${n_chamado_web?.queryItem}* validado, digite a informação que deseja adicionar.`, ticket); - - } - else { - + await sendMessageHitMonitoring( + `✅ Protocolo *${n_chamado_web?.queryItem}* validado, digite a informação que deseja adicionar.`, + ticket + ); + } else { // await new Promise(f => setTimeout(f, 1000)); - await sendMessageHitMonitoring(`Se deseja adicionar alguma informação ao protocolo acima, digite 2.`, ticket); - + await sendMessageHitMonitoring( + `Se deseja adicionar alguma informação ao protocolo acima, digite 2.`, + ticket + ); } - - - } - else if (req.body['action'] == 'atdfechou') { - - if (insert_protocol_info && + } else if (req.body["action"] == "atdfechou") { + if ( + insert_protocol_info && insert_protocol_info?.status && - n_chamado_web?.queryItem) { - - if (req.body['n_chamado_web'] && - req.body['n_chamado_web'].trim() == n_chamado_web?.queryItem) { - - insert_protocol_info.update({ status: false }) + n_chamado_web?.queryItem + ) { + if ( + req.body["n_chamado_web"] && + req.body["n_chamado_web"].trim() == n_chamado_web?.queryItem + ) { + insert_protocol_info.update({ status: false }); await new Promise(f => setTimeout(f, 1000)); - await sendMessageHitMonitoring(`O Protocolo *${n_chamado_web?.queryItem}* foi encerrado. Não é mais possível adicionar informação. Se desejar consultar o historico digite 1`, ticket); - + await sendMessageHitMonitoring( + `O Protocolo *${n_chamado_web?.queryItem}* foi encerrado. Não é mais possível adicionar informação. Se desejar consultar o historico digite 1`, + ticket + ); } - } } } async function sendMessageHitMonitoring(msg: any, ticket: Ticket) { - if (msg && msg.length > 0) { - - console.log('MESSAGE WILL BE SENT!') + console.log("MESSAGE WILL BE SENT!"); await SendWhatsAppMessage({ body: msg, ticket }); - } - } diff --git a/backend/swagger.yaml b/backend/swagger.yaml new file mode 100644 index 0000000..64d73b0 --- /dev/null +++ b/backend/swagger.yaml @@ -0,0 +1,435 @@ +openapi: 3.0.0 +info: + title: SLM-OMNIHIT-INTEGRATION + description: This API describes the endpoints and parameters to integrate the omnihit application with the SLM from hit telecommunications. + contact: {} + version: "1.0" +servers: + - url: http://177.107.192.247:8095/labs/monitoramentohit/api/api.php + variables: {} + - url: http://172.31.187.4:8080/omnihit/incidente + variables: {} +paths: + /labs/monitoramentohit/api/api.php consultachamadostatus: + post: + tags: + - SLM + summary: Consulta status do chamado + description: Consulta status do chamado + operationId: Consultastatusdochamado + parameters: [] + requestBody: + content: + application/x-www-form-urlencoded: + encoding: {} + schema: + required: + - auth + - jsonrpc + - method + - id + - params[n_chamado_web] + type: object + properties: + auth: + type: string + example: 0123ce68c916783282f6c66451164g22 + jsonrpc: + type: number + format: double + example: 2 + method: + type: string + example: omnihit.consultachamadostatus + id: + type: integer + format: int32 + example: 101 + params[n_chamado_web]: + type: string + example: 200-322094 + required: false + responses: + "200": + description: "" + headers: {} + content: + text/plain: + schema: + type: string + example: + jsonrpc: "2.0" + result: close + id: "101" + example: + jsonrpc: "2.0" + result: close + id: "101" + deprecated: false + security: [] + servers: + - url: http://177.107.192.247:8095/labs/monitoramentohit/api/api.php + variables: {} + /labs/monitoramentohit/api/api.php consultachamado: + post: + tags: + - SLM + summary: Consulta chamado + description: Consulta chamado + operationId: Consultachamado + parameters: [] + requestBody: + content: + application/x-www-form-urlencoded: + encoding: {} + schema: + required: + - jsonrpc + - method + - id + - params[n_chamado_web] + - auth + type: object + properties: + jsonrpc: + type: number + format: double + example: 2 + method: + type: string + example: omnihit.consultachamado + id: + type: integer + format: int32 + example: 101 + params[n_chamado_web]: + type: string + example: 200-323882 + auth: + type: string + example: 0123ce68c916783282f6c66451164g22 + required: false + responses: + "200": + description: "" + headers: {} + content: + text/plain: + schema: + type: string + example: + jsonrpc: "2.0" + result: "Olá! Sou o atendente Inteligente do grupo HIT! \U0001F916\r\nEspero que você esteja bem. Estou aqui para mantê-lo atualizado sobre o chamado referente à unidade 0001 - Hit World Teste. Meu objetivo é garantir que você esteja plenamente informado sobre o incidente e possa acompanhar todos os detalhes de perto. ❗\r\n\r\n*Protocolo:* 200-323882\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n*Nome do cliente:* Hit World Teste\r\n*Nome da filial:* Hit World Teste\r\n*Código do cliente:* 0001\r\n\r\n*Informação de abertura:* Teste Felipe Ribeiro 16:37\r\n*Contato:* Felipe Ribeiro *Telefone:* 17988310949\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n\r\n*Status do Chamado:* Aguardando\r\n*Atualização do chamado pelo cliente:* Este é um teste de integração SLM X WA para o Adriano 16:41h\r\n*Data da atualização:* 17/07/2023 16:41:21\r\n\r\n*Status do Chamado:* Em Atendimento\r\n*Atualização do chamado pela HIT:* Este é um teste de integração do SLM X WA do Alan Oliveira\r\n*Data da atualização:* 17/07/2023 16:43:28\r\n\r\n*Status do Chamado:* Fechado\r\n*Atualização do chamado pela HIT:* Teste de integração SLM X WA realizado com sucesso por Alan e Adriano 16:45h\r\n*Status de Encerramento:* Chamado concluído\r\n*Data do encerramento:* 17/07/2023 16:45:17\r\n" + id: "101" + example: + jsonrpc: "2.0" + result: "Olá! Sou o atendente Inteligente do grupo HIT! \U0001F916\r\nEspero que você esteja bem. Estou aqui para mantê-lo atualizado sobre o chamado referente à unidade 0001 - Hit World Teste. Meu objetivo é garantir que você esteja plenamente informado sobre o incidente e possa acompanhar todos os detalhes de perto. ❗\r\n\r\n*Protocolo:* 200-323882\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n*Nome do cliente:* Hit World Teste\r\n*Nome da filial:* Hit World Teste\r\n*Código do cliente:* 0001\r\n\r\n*Informação de abertura:* Teste Felipe Ribeiro 16:37\r\n*Contato:* Felipe Ribeiro *Telefone:* 17988310949\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n\r\n*Status do Chamado:* Aguardando\r\n*Atualização do chamado pelo cliente:* Este é um teste de integração SLM X WA para o Adriano 16:41h\r\n*Data da atualização:* 17/07/2023 16:41:21\r\n\r\n*Status do Chamado:* Em Atendimento\r\n*Atualização do chamado pela HIT:* Este é um teste de integração do SLM X WA do Alan Oliveira\r\n*Data da atualização:* 17/07/2023 16:43:28\r\n\r\n*Status do Chamado:* Fechado\r\n*Atualização do chamado pela HIT:* Teste de integração SLM X WA realizado com sucesso por Alan e Adriano 16:45h\r\n*Status de Encerramento:* Chamado concluído\r\n*Data do encerramento:* 17/07/2023 16:45:17\r\n" + id: "101" + deprecated: false + security: [] + servers: + - url: http://177.107.192.247:8095/labs/monitoramentohit/api/api.php + variables: {} + /labs/monitoramentohit/api/api.php chamadoaddobs: + post: + tags: + - SLM + summary: Insere info SLM + description: Insere info SLM + operationId: InsereinfoSLM + parameters: [] + requestBody: + content: + application/x-www-form-urlencoded: + encoding: {} + schema: + required: + - auth + - jsonrpc + - method + - id + - params[n_chamado_web] + - params[obs] + type: object + properties: + auth: + type: string + example: 0424bd59b807674191e7d77572075f33 + jsonrpc: + type: number + format: double + example: 2 + method: + type: string + example: omnihit.chamadoaddobs + id: + type: integer + format: int32 + example: 101 + params[n_chamado_web]: + type: string + example: 200-324398 + params[obs]: + type: string + example: O tecnico já esta na unidade para prestar o suporte necessario. + required: false + responses: + "200": + description: "" + headers: {} + content: + text/plain: + schema: + type: string + example: + jsonrpc: "2.0" + result: Informação adicionada com sucesso. + id: "101" + example: + jsonrpc: "2.0" + result: Informação adicionada com sucesso. + id: "101" + deprecated: false + security: [] + servers: + - url: http://177.107.192.247:8095/labs/monitoramentohit/api/api.php + variables: {} + /omnihit/incidente atdfechou: + post: + tags: + - OMNIHIT + summary: Webhook omnihit fechamento do chamado + operationId: Webhookomnihitfechamentodochamado + parameters: + - name: auth + in: header + description: "" + required: true + style: simple + schema: + type: string + example: 0424bd59b807674191e7d77572075f33 + requestBody: + description: "" + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/WebhookomnihitfechamentodochamadoRequest" + - example: + n_chamado_web: 200-323934 + action: atdfechou + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "*Olá!*\r\n\r\n*Sou o atendente Inteligente do grupo HIT Communications! \U0001F916*\r\n\r\nGostaria de informar que o chamado referente à unidade 0001 - Hit World Teste foi encerrado. Estou à disposição para qualquer outra assistência através do mesmo número, na opção 4 - Suporte Técnico, ou em qualquer outro setor. A equipe da HIT Communications está pronta para auxiliá-lo em qualquer situação. \U0001F9E1\r\n\r\n*Protocolo:* 200-323882\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n*Nome do cliente:* Hit World Teste\r\n*Nome da filial:* Hit World Teste\r\n*Código do cliente:* 0001\r\n\r\n*Informação de abertura:* Teste Felipe Ribeiro 16:37\r\n*Contato:* Felipe Ribeiro *Telefone:* 17988310949\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n\r\n*Status do Chamado:* Aguardando\r\n*Atualização do chamado pelo cliente:* Este é um teste de integração SLM X WA para o Adriano 16:41h\r\n*Data da atualização:* 17/07/2023 16:41:21\r\n\r\n*Status do Chamado:* Em Atendimento\r\n*Atualização do chamado pela HIT:* Este é um teste de integração do SLM X WA do Alan Oliveira\r\n*Data da atualização:* 17/07/2023 16:43:28\r\n\r\n*Status do Chamado:* Fechado\r\n*Atualização do chamado pela HIT:* Teste de integração SLM X WA realizado com sucesso por Alan e Adriano 16:45h\r\n*Status de Encerramento:* Chamado concluído\r\n*Data do encerramento:* 17/07/2023 16:45:17\r\n\r\n\r\n" + example: + n_chamado_web: 200-323934 + action: atdfechou + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "*Olá!*\r\n\r\n*Sou o atendente Inteligente do grupo HIT Communications! \U0001F916*\r\n\r\nGostaria de informar que o chamado referente à unidade 0001 - Hit World Teste foi encerrado. Estou à disposição para qualquer outra assistência através do mesmo número, na opção 4 - Suporte Técnico, ou em qualquer outro setor. A equipe da HIT Communications está pronta para auxiliá-lo em qualquer situação. \U0001F9E1\r\n\r\n*Protocolo:* 200-323882\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n*Nome do cliente:* Hit World Teste\r\n*Nome da filial:* Hit World Teste\r\n*Código do cliente:* 0001\r\n\r\n*Informação de abertura:* Teste Felipe Ribeiro 16:37\r\n*Contato:* Felipe Ribeiro *Telefone:* 17988310949\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n\r\n*Status do Chamado:* Aguardando\r\n*Atualização do chamado pelo cliente:* Este é um teste de integração SLM X WA para o Adriano 16:41h\r\n*Data da atualização:* 17/07/2023 16:41:21\r\n\r\n*Status do Chamado:* Em Atendimento\r\n*Atualização do chamado pela HIT:* Este é um teste de integração do SLM X WA do Alan Oliveira\r\n*Data da atualização:* 17/07/2023 16:43:28\r\n\r\n*Status do Chamado:* Fechado\r\n*Atualização do chamado pela HIT:* Teste de integração SLM X WA realizado com sucesso por Alan e Adriano 16:45h\r\n*Status de Encerramento:* Chamado concluído\r\n*Data do encerramento:* 17/07/2023 16:45:17\r\n\r\n\r\n" + required: true + responses: + "200": + description: "" + headers: {} + content: + text/plain: + schema: + type: string + example: + message: Ok + example: + message: Ok + deprecated: false + security: [] + servers: + - url: http://172.31.187.4:8080/omnihit/incidente + variables: {} + /omnihit/incidente atdabriu: + post: + tags: + - OMNIHIT + summary: Webhook omnihit abertura do chamado + operationId: Webhookomnihitaberturadochamado + parameters: + - name: auth + in: header + description: "" + required: true + style: simple + schema: + type: string + example: 0424bd59b807674191e7d77572075f33 + requestBody: + description: "" + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/WebhookomnihitaberturadochamadoRequest" + - example: + n_chamado_web: 200-323934 + action: atdabriu + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "" + example: + n_chamado_web: 200-323934 + action: atdabriu + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "" + required: true + responses: + "200": + description: "" + headers: {} + content: + text/plain: + schema: + type: string + example: + message: Ok + example: + message: Ok + deprecated: false + security: [] + servers: + - url: http://172.31.187.4:8080/omnihit/incidente + variables: {} + /omnihit/incidente atdatualizou: + post: + tags: + - OMNIHIT + summary: Webhook omnihit atualizacao do chamado + operationId: Webhookomnihitatualizacaodochamado + parameters: + - name: auth + in: header + description: "" + required: true + style: simple + schema: + type: string + example: 0424bd59b807674191e7d77572075f33 + requestBody: + description: "" + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/WebhookomnihitatualizacaodochamadoRequest" + - example: + n_chamado_web: 200-323934 + action: atdatualizou + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "" + example: + n_chamado_web: 200-323934 + action: atdatualizou + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "" + required: true + responses: + "200": + description: "" + headers: {} + content: + text/plain: + schema: + type: string + example: + message: Ok + example: + message: Ok + deprecated: false + security: [] + servers: + - url: http://172.31.187.4:8080/omnihit/incidente + variables: {} +components: + schemas: + WebhookomnihitfechamentodochamadoRequest: + title: WebhookomnihitfechamentodochamadoRequest + required: + - n_chamado_web + - action + - phone + - name + - mensagem + type: object + properties: + n_chamado_web: + type: string + action: + type: string + phone: + type: string + name: + type: string + mensagem: + type: string + example: + n_chamado_web: 200-323934 + action: atdfechou + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "*Olá!*\r\n\r\n*Sou o atendente Inteligente do grupo HIT Communications! \U0001F916*\r\n\r\nGostaria de informar que o chamado referente à unidade 0001 - Hit World Teste foi encerrado. Estou à disposição para qualquer outra assistência através do mesmo número, na opção 4 - Suporte Técnico, ou em qualquer outro setor. A equipe da HIT Communications está pronta para auxiliá-lo em qualquer situação. \U0001F9E1\r\n\r\n*Protocolo:* 200-323882\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n*Nome do cliente:* Hit World Teste\r\n*Nome da filial:* Hit World Teste\r\n*Código do cliente:* 0001\r\n\r\n*Informação de abertura:* Teste Felipe Ribeiro 16:37\r\n*Contato:* Felipe Ribeiro *Telefone:* 17988310949\r\n*Data de abertura:* 17/07/2023 16:38:08\r\n\r\n*Status do Chamado:* Aguardando\r\n*Atualização do chamado pelo cliente:* Este é um teste de integração SLM X WA para o Adriano 16:41h\r\n*Data da atualização:* 17/07/2023 16:41:21\r\n\r\n*Status do Chamado:* Em Atendimento\r\n*Atualização do chamado pela HIT:* Este é um teste de integração do SLM X WA do Alan Oliveira\r\n*Data da atualização:* 17/07/2023 16:43:28\r\n\r\n*Status do Chamado:* Fechado\r\n*Atualização do chamado pela HIT:* Teste de integração SLM X WA realizado com sucesso por Alan e Adriano 16:45h\r\n*Status de Encerramento:* Chamado concluído\r\n*Data do encerramento:* 17/07/2023 16:45:17\r\n\r\n\r\n" + WebhookomnihitaberturadochamadoRequest: + title: WebhookomnihitaberturadochamadoRequest + required: + - n_chamado_web + - action + - phone + - name + - mensagem + type: object + properties: + n_chamado_web: + type: string + action: + type: string + phone: + type: string + name: + type: string + mensagem: + type: string + example: + n_chamado_web: 200-323934 + action: atdabriu + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "" + WebhookomnihitatualizacaodochamadoRequest: + title: WebhookomnihitatualizacaodochamadoRequest + required: + - n_chamado_web + - action + - phone + - name + - mensagem + type: object + properties: + n_chamado_web: + type: string + action: + type: string + phone: + type: string + name: + type: string + mensagem: + type: string + example: + n_chamado_web: 200-323934 + action: atdatualizou + phone: +55 17 988310949 + name: ADRIANO TESTE + mensagem: "" +tags: + - name: SLM + - name: OMNIHIT