Tickets

Detalle de un ticket

/v2/ticket/{ticket_id}/ - GET

Probar servicio

Retorna un objeto tipo ticket utilizando su id.

A continuación se ve un ejemplo de respuesta:

{
  "id": "583dcb2855d0a46e438d0206",
  "identifier": "261",
  "created": "2016-11-29T18:38:32",
  "current_assignment": {
    "cmid": 467,
    "name": "Francisco Pinto",
    "email": "fapint@somecorporate.com"
  },
  "is_closed": true,
  "last_author": "Jhon Doe",
  "last_content": "Hi, I need help configuring with my product.",
  "social_network": "facebook",
  "subject": null,
  "updated_time": "2016-12-21T13:17:29.283"
}

TicketSummaryResponse

Corresponde al resumen de un ticket de atención.

Campo Descripción Tipo
id Código de identificación para el ticket string
identifier Código de identificación de cara al ejecutivo string
created  Fecha de creación del ticket string
current_assignment El ejecutivo de atención asignado actualmente CMEmbeddedSerializer
is_closed  Indica si el ticket está cerrado boolean
last_author  Indica el nómbre del último participante en el ticket string
last_content  Indica el contenido enviado por el último participante en el ticket string
social_network Canal vinculado al ticket string
updated_time Fecha de actualización del ticket string
subject En caso de ser un email, contiene el asunto string

CMEmbeddedSerializer

Corresponde al ejecutivo de atención o ejecutivo.

Campo Descripción Tipo
cmid Id del ejecutivo. integer
name Nombre del ejecutvio string
email  Email del ejecutivo (opcional) string

Mensajes de un ticket

/v2/ticket/{ticket_id}/messages/ - GET

Probar servicio

Retorna los mensajes de un ticket utilizando su id.

A continuación se ve un ejemplo de respuesta:

{
  "status": 200,
  "messages": [
    {
      "content": "Hola Carlos, ¿en qué te podemos ayudar?",
      "author_id": "572c2b2z20a9g4201250leb4",
      "author_name": "Super Empresa",
      "author_account": "superempresa",
      "created": "2014-11-30T20:46:58",
      "media": "http://placekitten.com/200/300"
    },
    {
      "content": "@superempresa con uno de sus productos",
      "author_id": "546b9b2720a9f1301050fec3",
      "author_name": "Carlos Palma",
      "author_account": "cpalma",
      "created": "2014-11-30T18:55:04"
    },
    {
      "content": "@superempresa hola tengo un problema",
      "author_id": "546b9b2720a9f1301050fec3",
      "author_name": "Carlos Palma",
      "author_account": "cpalma",
      "created": "2014-11-30T18:50:11"
    }
  ]
}

MessagesListResponse

Corresponde a la lista de mensajes de un ticket.

Campo Descripción Tipo
status Código de retorno de la petición. 200 si la petición fue exitosa integer
messages  Lista de mensajes asociados al ticket MessageResponse

MessageResponse

Corresponde a un mensaje en particular.

Campo Descripción Tipo
content Texto del mensaje. string
author_id Id del autor del mensaje string
author_name Nombre del autor del mensaje string
author_account Cuenta del autor del mensaje string
created  Fecha de creación string
media  Url de media (opcional) string

Cerrar ticket

/v2/ticket/{ticket_id}/close/ - POST Probar servicio

Cierra un ticket a partir de su id.

Ejemplo de respuesta exitosa:

{
  "status": 200,
  "message": "Ok"
}

Reasignar ticket

/v2/ticket/{ticket_id}/reassign/ - POST Probar servicio

Gatilla la re-asignación automática de un ticket a partir de su id.

Ejemplo de respuesta exitosa:

{
  "status": 200,
  "message": "Ok"
}

Obtener ticket interno desde el id visible por ejecutivos

/v2/ticket/{agent_ticket_id}/by_agent_id/ - POST Probar servicio

El ejecutivo en PostCenter ve otro tipo de identificador en cada ticket y no es el mismo que se utiliza en esta API.

Para poder hacer transformaciones entre este tipo de identificador y el que ve el ejecutivo, hemos habilitado este servicio web que permite desde un id de ejecutivo, obtener el id interno de API.

Por ejemplo, ante una petición GET a la URL /v2/ticket/261/by_agent_id/, obtendremos lo siguiente:

{
    "status": 200,
    "ticket_id": "5b64e514ed76411a80dd3bed"
}

Teniendo el ID interno, es posible obtener el id de ejecutivo consultando el servicio web de detalle de ticket.


Obtener un ejecutivo disponible para atender un ticket

/v2/ticket/{ticket_id}/get_possible_agent/ - GET Probar servicio

Este servicio entrega el cmid de un ejecutivo disponible para responder el ticket con id ticket_id.

Por ejemplo, una respuesta posible puede ser la siguiente:

{
    "status": 200,
    "assignation": {
        "cm" : 27,
        "reason": "Assign Because Workload and non cm was online"
    }
}

La respuesta tiene la siguiente estructura (AssignationResponse):

Campo Descripción Tipo
status Código de retorno de la petición. 200 si la petición fue exitosa integer
assignation Asignación de ejecutivo disponible AssignationDetail

La asignación tiene la siguiente estructura (AssignationDetail)

Campo Descripción Tipo
cm Identificador del ejecutivo para asignar. null en caso de no encontrar ejecutivo disponible integer
reason Texto descriptivo justificando la asignación correspondiente string

Servicios Tickets

Tickets de clientes

/v2/tickets/?country_id={country_id} - GET

Probar servicio

Retorna todos los tickets asociados a un cliente/usuario utilizando su country_id.

tip "Preguntas relacionadas:""

* [¿Cuál es el campo `country_id` y dónde lo encuentro?](/faq/#cual-es-el-campo-country_id-y-donde-lo-encuentro)
* [¿Qué ocurre si no veo el `country_id` en el perfil de mis usuarios?](/faq/#que-ocurre-si-no-veo-el-rut-en-el-perfil-de-mis-usuarios)

La información que se retorna corresponde a un resumen de los tickets encontrados. Utilice el servicio /v2/ticket/{ticket_id}/ para obtener un ticket en particular.

A continuación se ve un ejemplo de respuesta:

{
  "status": 200,
  "tickets": [
    {
      "id": "583dcb2855d0a46e438d0206",
      "identifier": 1242,
      "created": "2016-11-29T18:38:32",
      "current_assignment": {
        "cmid": 467,
        "name": "Francisco Pinto",
        "email": "fapint@somecorporate.com"
      },
      "is_closed": true,
      "last_author": "Jhon Doe",
      "last_content": "Hi, I need help configuring with my product.",
      "social_network": "facebook",
      "title": null,
      "updated_time": "2016-12-21T13:17:29.283"
    }
  ]
}

En esta respuesta hay 3 estructuras de datos anidados: Lista de Tickets, que contiene varios Ticket y el Ejecutivo de Atención asignado, contenido en cada Ticket.

TicketsListResponse

Corresponde a una lista de tickets.

Campo Descripción Tipo
status Código de retorno de la petición. 200 si la petición fue exitosa integer
tickets  Lista de tickets asociados al usuario TicketSummaryResponse

TicketSummaryResponse

Corresponde al resumen de un ticket de atención.

Campo Descripción Tipo
id Código de identificación para el ticket string
identifier Código de identificación de cara al ejecutivo int
created  Fecha de creación del ticket string
current_assignment El ejecutivo de atención asignado actualmente CMEmbeddedSerializer
is_closed  Indica si el ticket está cerrado boolean
last_author  Indica el nómbre del último participante en el ticket string
last_content  Indica el contenido enviado por el último participante en el ticket string
social_network Canal vinculado al ticket string
updated_time Fecha de actualización del ticket string
title En caso de ser un email, contiene el asunto string

CMEmbeddedSerializer

Corresponde al ejecutivo de atención.

Campo Descripción Tipo
cmid Id del ejecutivo. integer
name Nombre del ejecutvio string
email  Email del ejecutivo (opcional) string

Tickets asociados a un usuario de Facebook

/v2/tickets/facebook/?page_id={page_id}&uid={uid} - GET Probar servicio

Retorna todos los tickets asociados a un cliente/usuario a partir de su uid de Facebook en el contexto de un page_id.

La información que se retorna corresponde a un resumen de los tickets encontrados. Utilice el servicio /v2/ticket/{ticket_id}/ para obtener un ticket en particular.

A continuación se ve un ejemplo de respuesta:

{
  "status": 200,
  "tickets": [
    {
      "id": "583dcb2855d0a46e438d0206",
      "identifier": 1242,
      "created": "2016-11-29T18:38:32",
      "current_assignment": {
        "cmid": 467,
        "name": "Francisco Pinto",
        "email": "fapint@somecorporate.com"
      },
      "is_closed": true,
      "last_author": "Jhon Doe",
      "last_content": "Hi, I need help configuring with my product.",
      "social_network": "facebook",
      "title": null,
      "updated_time": "2016-12-21T13:17:29.283"
    }
  ]
}

En esta respuesta hay 3 estructuras de datos anidados: Lista de Tickets, que contiene varios Ticket y el Ejecutivo de Atención asignado, contenido en cada Ticket. Explicadas arriba.

Tickets filtrados por estado

/v2/tickets/state/{state} - GET Probar servicio

Retorna los tickets que están en cierto estado. Los estados soportados por el momento en la plataforma son open, closed, ignored, inProgress.

Los tickets de su establecimiento estarán en alguno de estos estados, este servicio entrega los tickets que se encuentren en el estado especificado.

El endpoint retorna una lista de ids de tickets, si necesita ver el detalle utilice el servicio /v2/ticket/{ticket_id}/ .

Un ejemplo de respuesta exitosa es la siguiente

{
  "tickets": [
    "5cd4afa1071543013a2428de",
    "5cd4a3fa0715435bc47578fd",
    "5cd49e150715435bc47578fa",
    "5cd48e710715435bc47578f7",
    "5cd48cdb0715435bc47578f4",
    "5cd48cb30715435bc47578f1",
    "5cd48a450715435bc47578ee",
    "5cd4881e0715435bc47578eb",
    "5cd4881d0715435bc47578e8",
    "5cd4881d0715435bc47578e5",
    "5cd47a3c0715435bc47578e2",
    "5cd46b520715435bc47578df",
    "5cd467530715435bc47578dc",
    "5cd4585f0715435bc47578d9",
    ...
  ],
  "status": 200
}

En caso que el estado espacificado sea distinto de los mencionados o que su establecimiento no tenga este estado, se entregará la siguiente respuesta

{
  "message": "Non-existent status", 
  "status": 404
}

Tickets filtrados por canal y rango de fechas (Paginado | 100)

/v2/tickets/paginated/{social_network}/?from={from_date}&to={to_date}&next={next_page} - GET

Probar servicio

Este servicio entrega los tickets asociados a cierto canal, en un rango de fechas especificado. Los tickets entregados aparecen de más reciente a más antiguo, según fecha de creación.

Si necesita saber cuales son los canales asociados a los tickets de su establecimiento puede utilizar el endpoint /v2/accounts/all/ .

El rango de fechas se entrega a través de los parámetros from y to que representan los límites de fechas inferior y superior respectivamente, siendo from inclusivo y to exclusivo.

Las fechas deben ser especificadas en el formato DD-MM-AAAA [hh:mm:ss]. Por ejemplo, serían válidas 12-10-2018, 09-08-2017 12:22:25, pero NO otros formatos como 12/12/2012, 12-12-12, 10-12, 03-16-2014, 12-10-2018 10:23.

Este servicio es Paginado, por lo que los tickets se retornan en páginas de 100 (excepto quizás la última que podría entregar menos de 100). Para avanzar en las páginas, cada respuesta entrega el atributo next_page, que corresponde a un identificador que debe ser utilizado en el parámetro next de la siguiente consulta.

Un ejemplo de uso del servicio es el siguiente v2/tickets/twitter/from=18-04-2019&to=18-04-2019%2021%3A41%3A00 (%20 --> " ", %3A --> ":")

{
  "tickets": [
    {
      "status": "Abierto",
      "updated_datetime": "18-04-2019 22:30:21",
      "created_datetime": "18-04-2019 21:40:59",
      "social_network": "twitter",
      "identifier": 322,
      "id": "5cb8eeeb0715437c9126715e"
    },
    ...
    {
      "status": "Abierto",
      "updated_datetime": "19-04-2019 08:38:52",
      "created_datetime": "18-04-2019 10:38:52",
      "social_network": "email",
      "identifier": 223,
      "id": "5cb8ee6c0715437c91266f71"
    }
  ],
  "status": 200,
  "number_of_tickets": 100,
  "next_page": "5cb8fa940715430c9c8824f3"
}

En esta respuesta se entregan los 100 primeros tickets, lo que se indica en el atributo number_of_tickets. Además se entrega en next_page el identificador que se debe utilizar para obtener la siguiente página.

Al pedir la paǵina 2 ,v2/tickets/twitter/from=18-04-2019&to=18-04-2019%2021%3A41%3A00&next=5cb8fa940715430c9c8824f3 obtenemos

{
  "tickets": [
    {
      "status": "Abierto",
      "updated_datetime": "19-04-2019 08:35:52",
      "created_datetime": "18-04-2019 12:24:24",
      "social_network": "email",
      "identifier": 222,
      "id": "5cb8ee660715437c91266e27"
    },
    {
      "status": "Abierto",
      "updated_datetime": "19-04-2019 08:21:10",
      "created_datetime": "18-04-2019 08:22:15",
      "social_network": "email",
      "identifier": 221,
      "id": "5cb8ee660715437c91266e22"
    }
  ],
  "status": 200,
  "number_of_tickets": 2,
  "next_page": null
}

Que retorna los 2 tickets faltantes, además el atributo next_page tiene el valor null que indica que no hay más páginas en la consulta.

Los elementos retornados por cada ticket corresponden a un resumen del mismo. Si necesita más información de un ticket utilice el servicio /v2/ticket/{ticket_id}/ para obtener un ticket en particular.

TicketSummaryResponse

Corresponde al resumen de un ticket de atención.

Campo Descripción Tipo
id Código de identificación para el ticket string
identifier Código de identificación de cara al ejecutivo int
created_datetime  Fecha de creación del ticket string
updated_datetime Fecha de actualización del ticket string
status Estado del ticket (Abierto, Cerrado, Ignorado, En Progreso) string
social_network Canal vinculado al ticket string