adição de documentação dos endpoints para integração com SLM

pull/20/head
adriano 2023-07-21 12:55:34 -03:00
parent 280c006d02
commit 5203ad0d23
4 changed files with 569 additions and 106 deletions

View File

@ -46,8 +46,10 @@
"sequelize-typescript": "^1.1.0", "sequelize-typescript": "^1.1.0",
"socket.io": "^3.0.5", "socket.io": "^3.0.5",
"socket.io-client": "^4.5.4", "socket.io-client": "^4.5.4",
"swagger-ui-express": "^5.0.0",
"uuid": "^8.3.2", "uuid": "^8.3.2",
"whatsapp-web.js": "github:pedroslopez/whatsapp-web.js", "whatsapp-web.js": "github:pedroslopez/whatsapp-web.js",
"yamljs": "^0.3.0",
"yup": "^0.32.8" "yup": "^0.32.8"
}, },
"devDependencies": { "devDependencies": {

View File

@ -12,6 +12,11 @@ import AppError from "./errors/AppError";
import routes from "./routes"; 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 }); Sentry.init({ dsn: process.env.SENTRY_DSN });
const app = express(); const app = express();
@ -26,6 +31,13 @@ app.use(cookieParser());
app.use(express.json()); app.use(express.json());
app.use(Sentry.Handlers.requestHandler()); app.use(Sentry.Handlers.requestHandler());
app.use("/public", express.static(uploadConfig.directory)); app.use("/public", express.static(uploadConfig.directory));
app.get("/", (req: Request, res: Response) => {
res.send('<h1>SLM/OMNIHIT api</h1><a href="/api-docs">Documentation</a>');
});
app.use("/api-docs", swaggerUI.serve, swaggerUI.setup(swaggerDocument));
app.use(routes); app.use(routes);
app.use(Sentry.Handlers.errorHandler()); app.use(Sentry.Handlers.errorHandler());
@ -40,5 +52,4 @@ app.use(async (err: Error, req: Request, res: Response, _: NextFunction) => {
return res.status(500).json({ error: "Internal server error" }); return res.status(500).json({ error: "Internal server error" });
}); });
export default app; export default app;

View File

@ -14,7 +14,10 @@ import SendWhatsAppMessage from "../services/WbotServices/SendWhatsAppMessage";
import { Op, where, Sequelize } from "sequelize"; import { Op, where, Sequelize } from "sequelize";
import ShowTicketServiceByContactId from "../services/TicketServices/ShowTicketServiceByContactId"; import ShowTicketServiceByContactId from "../services/TicketServices/ShowTicketServiceByContactId";
import hitPortalMonitoring from "../helpers/HitPortalMonitoring"; 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 CheckIsValidContact from "../services/WbotServices/CheckIsValidContact";
import Contact from "../models/Contact"; import Contact from "../models/Contact";
import GetProfilePicUrl from "../services/WbotServices/GetProfilePicUrl"; import GetProfilePicUrl from "../services/WbotServices/GetProfilePicUrl";
@ -25,62 +28,59 @@ import ShowQuickAnswerService from "../services/QuickAnswerService/ShowQuickAnsw
import ShowQueryItemService from "../services/SLM/ShowQueryItemService"; import ShowQueryItemService from "../services/SLM/ShowQueryItemService";
import QueryItem from "../models/QueryItem"; import QueryItem from "../models/QueryItem";
// type IndexQuery = { // type IndexQuery = {
// cod_web: string; // cod_web: string;
// }; // };
export const hit = async (req: Request, res: Response): Promise<Response> => { // export const index = async (req: Request, res: Response): Promise<Response> => {}
export const hit = async (req: Request, res: Response): Promise<Response> => {
// const { // const {
// cod_web, // cod_web,
// } = req.body as IndexQuery; // } = req.body as IndexQuery;
console.log('req.boy: ', req.body) console.log("req.boy: ", req.body);
console.log("req.body['cod_web']: ", req.body['cod_web']) console.log("req.body['cod_web']: ", req.body["cod_web"]);
console.log("req.body['action']: ", req.body['action']) console.log("req.body['action']: ", req.body["action"]);
console.log("req.body['phone']: ", req.body['phone']) console.log("req.body['phone']: ", req.body["phone"]);
console.log("req.body['name']: ", req.body['name']) console.log("req.body['name']: ", req.body["name"]);
console.log("req.body['mensagem']: ", req.body['mensagem']) 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') { if (!phone) return res.status(200).json({ message: "Ok" });
let phone = req.body['phone']
let name = req.body['name']
if (!phone) return res.status(200).json({ "message": "Ok" });
const regex = /^55/; const regex = /^55/;
phone = phone.match(/\d+/g).join(''); phone = phone.match(/\d+/g).join("");
if (!regex.test(phone)) { 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); let validNumber = await CheckIsValidContact(phone);
if (!validNumber) { 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: validNumber } });
// let contact = await Contact.findOne({ where: { number: '5517988325936' } }); // let contact = await Contact.findOne({ where: { number: '5517988325936' } });
if (!contact) { if (!contact) {
const profilePicUrl = await GetProfilePicUrl(validNumber); const profilePicUrl = await GetProfilePicUrl(validNumber);
contact = await CreateContactService({ contact = await CreateContactService({
name: name || phone, name: name || phone,
number: validNumber, number: validNumber,
profilePicUrl: profilePicUrl, profilePicUrl: profilePicUrl
}); });
const io = getIO(); const io = getIO();
@ -88,149 +88,164 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
action: "create", action: "create",
contact 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 = `*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({ response = await hitPortalMonitoring({
'params[n_chamado_web]': req.body['n_chamado_web'], "params[n_chamado_web]": req.body["n_chamado_web"],
'method': 'omnihit.consultachamado', method: "omnihit.consultachamado"
}) });
} else {
response = req.body["mensagem"];
} }
else {
response = req.body['mensagem']
}
if (!response || response.length == 0 || !contact) { if (!response || response.length == 0 || !contact) {
console.log('Empty result from hit portal monitoring to n_chamado_web: ', req.body['n_chamado_web']) console.log(
return res.status(200).json({ "message": "Ok" }); "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) { if (!ticket.dataValues.id) {
const defaultWhatsapp = await GetDefaultWhatsApp(); const defaultWhatsapp = await GetDefaultWhatsApp();
let ticket_obj: any = await FindOrCreateTicketServiceBot( let ticket_obj: any = await FindOrCreateTicketServiceBot(
contact, contact,
defaultWhatsapp.id!, 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 sendMessageHitMonitoring(response, ticket);
await sendMessageInsertInfoSLM(req, ticket, ['atdabriu', 'atdatualizou'], contact.id); await sendMessageInsertInfoSLM(
req,
} ticket,
else if (ticket.id && ticket.userId == botInfo.userIdBot) { ["atdabriu", "atdatualizou"],
contact.id
);
} else if (ticket.id && ticket.userId == botInfo.userIdBot) {
let queue = await ShowQueueService(botInfo.botQueueId); 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); 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 sendMessageHitMonitoring(response, ticket);
await sendMessageInsertInfoSLM(req, ticket, ['atdabriu', 'atdatualizou'], contact.id); await sendMessageInsertInfoSLM(
req,
ticket,
["atdabriu", "atdatualizou"],
contact.id
);
} }
} } else {
else { return res.status(401).json({ message: "Token Inválido!" });
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({ const insert_protocol_info: QueryItem = await ShowQueryItemService({
contactId, contactId,
name: 'insert_protocol_info' name: "insert_protocol_info"
}) });
const n_chamado_web: QueryItem = await ShowQueryItemService({ const n_chamado_web: QueryItem = await ShowQueryItemService({
contactId, contactId,
name: 'n_chamado_web' name: "n_chamado_web"
}) });
await new Promise(f => setTimeout(f, 2000)); await new Promise(f => setTimeout(f, 2000));
if (params.includes(req.body['action'])) { if (params.includes(req.body["action"])) {
if (
if (insert_protocol_info && insert_protocol_info &&
insert_protocol_info?.status && insert_protocol_info?.status &&
n_chamado_web?.queryItem) { n_chamado_web?.queryItem
) {
await sendMessageHitMonitoring(`🔄 Houve uma atualização no chamado acima`, ticket); await sendMessageHitMonitoring(
`🔄 Houve uma atualização no chamado acima`,
ticket
);
await new Promise(f => setTimeout(f, 1000)); await new Promise(f => setTimeout(f, 1000));
await sendMessageHitMonitoring(`✅ Protocolo *${n_chamado_web?.queryItem}* validado, digite a informação que deseja adicionar.`, ticket); await sendMessageHitMonitoring(
`✅ Protocolo *${n_chamado_web?.queryItem}* validado, digite a informação que deseja adicionar.`,
} ticket
else { );
} else {
// await new Promise(f => setTimeout(f, 1000)); // 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 && insert_protocol_info?.status &&
n_chamado_web?.queryItem) { n_chamado_web?.queryItem
) {
if (req.body['n_chamado_web'] && if (
req.body['n_chamado_web'].trim() == n_chamado_web?.queryItem) { req.body["n_chamado_web"] &&
req.body["n_chamado_web"].trim() == n_chamado_web?.queryItem
insert_protocol_info.update({ status: false }) ) {
insert_protocol_info.update({ status: false });
await new Promise(f => setTimeout(f, 1000)); 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) { async function sendMessageHitMonitoring(msg: any, ticket: Ticket) {
if (msg && msg.length > 0) { if (msg && msg.length > 0) {
console.log("MESSAGE WILL BE SENT!");
console.log('MESSAGE WILL BE SENT!')
await SendWhatsAppMessage({ body: msg, ticket }); await SendWhatsAppMessage({ body: msg, ticket });
} }
} }

View File

@ -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