Saltar al contenido principal

Artículo actualizado: 27 de mayo de 2022

API de agente virtual de Sparkcentral

Los agentes virtuales Sparkcentral permiten a las empresas agregar bots a la plataforma como si fueran agentes reales. Pueden responder a mensajes entrantes, resolver conversaciones, aplicar temas y establecer atributos de contacto. En lugar de limitar las plataformas de bot que se pueden integrar, se proporciona una API genérica que puede usar para integrarse con cualquier plataforma.

Para integrar su plataforma de bot favorita con Sparkcentral, deberá proporcionar un punto final HTTPS. Sparkcentral llama a este punto final cada vez que se asigna una conversación a su agente virtual y cada vez que el contacto envía un mensaje nuevo. Si está utilizando una plataforma de bot síncrona, puede responder inmediatamente a esta solicitud con la respuesta. Si está utilizando una plataforma de bot asincrónica, también puede enviar una solicitud POST a Sparkcentral para enviar una respuesta a una conversación.

Dos tipos de agentes virtuales

Comienzo

Un agente virtual de inicio recoge automáticamente las conversaciones privadas que se inician en los canales a los que tiene acceso. Si un agente virtual inicial necesita un agente humano, colocará la conversación en la cola Nueva para que cualquier agente pueda responder. El agente virtual de inicio también puede resolver una conversación si no se requiere asistencia humana.

Debido a que un agente virtual de inicio recoge automáticamente las conversaciones en el canal al que tiene acceso, no puede crear varios agentes virtuales de inicio que tengan acceso al mismo canal.

Delegación

Un agente virtual de delegación no recogerá automáticamente las conversaciones. En cambio, un agente humano puede dar una conversación a un agente virtual de delegación en cualquier momento de la conversación. El agente virtual de delegación asumirá el control en este punto. La regla de transferencia determina qué debe suceder si un agente virtual de delegación necesita un agente humano. Si se selecciona "Nueva cola", la conversación se mueve a la Nueva cola para que la tome cualquier agente. Si se selecciona "agente anterior", el agente virtual de delegación asigna la conversación al agente humano anterior.

Varios agentes virtuales de delegación pueden tener acceso al mismo canal. Un agente humano debe seleccionar específicamente al agente virtual para que se haga cargo de la conversación.

Agregar un agente virtual

Para agregar un agente virtual:

  1. Ve a Configuración de administrador, expande Agentes virtuales, selecciona Agentes virtuales personalizados y, a continuación, selecciona Añadir agente virtual personalizado.
  2. Ingrese un nombre para el agente virtual. Este nombre aparecerá en Sparkcentral como " {Name} VA".
  3. Especifique si desea que su agente virtual se active como agente de inicio o agente de delegación.
  4. Se debe proporcionar la URL del Webhook para enviar correctamente la información de la conversación a su agente virtual (consulte la sección Webhooks para obtener más información).
  5. Complete los campos restantes como desee, incluidas las reglas de transferencia que desee agregar.
  6. Seleccione Guardar .
  7. Desplácese hacia abajo hasta la sección Acceso al canal y use los conmutadores para seleccionar un canal o canales donde se pueda acceder a este agente virtual.

Agente virtual de tiempo de espera

Puede configurar dos tipos de reglas de contacto para agentes virtuales:

  • Tiempo de espera del agente virtual: determina cuándo se producirá un traspaso si el agente virtual deja de responder por cualquier motivo. El máximo es de 60 minutos.
  • Contacto de tiempo de espera: determina cuándo se producirá una transferencia si el contacto (usuario) deja de responder. El máximo es de 60 minutos.

Manejo de errores

Si se agota el tiempo de espera de la conexión del agente virtual, se produce un error o si se agota el tiempo de espera del contacto, puede hacer lo siguiente:

  • Marcar la conversación como nueva o resuelta
  • Aplicar un tema automáticamente
  • Si la conversación está marcada como resuelta, envíe automáticamente una respuesta estándar al cliente

Editar o eliminar un agente virtual

Para editar un agente virtual, en la página Agentes virtuales personalizados , seleccione el icono Editar. Para eliminar un agente virtual, seleccione el icono Papelera.

Ver el secreto de un agente virtual

En la página del Agente virtual personalizado , seleccione el icono Editar junto al agente virtual. Puede ver o copiar el secreto compartido generado para este agente virtual en la página Editar agente virtual personalizado . Consulte la sección Protección de webhooks para obtener más información.

Webhooks

Cuando se asigna una conversación al agente virtual que registró en la sección anterior, Sparkcentral le envía un evento a través de la URL que configuró.

Se envían tres eventos importantes:

  • CONVERSACIÓN INICIADA
  • CONVERSATION_DELEGATED
  • INBOUND_MESSAGE_RECEIVED

Campos comunes

Todos los eventos tienen ciertos campos comunes:

  • tipo : una cadena que define qué tipo de evento ocurrió (actualmente CONVERSATION_STARTED o INBOUND_MESSAGE_RECEIVED). Se pueden agregar nuevos eventos en el futuro. Evite responder con un error a valores desconocidos; en su lugar, ignórelos. Dependiendo de este tipo, la estructura de los datos será diferente.
  • versión : Un número que designa la versión del tipo de solicitud. Actualmente, la versión es siempre 1. Las versiones se utilizarán en el futuro para introducir cambios no compatibles con versiones anteriores.
  • idempotencyKey : una cadena que identifica de forma única cada evento. Cuando se agota el tiempo de espera al enviarle el evento (o recibimos una respuesta de error), volveremos a intentar el evento. Esta clave puede ayudarlo a asegurarse de que una solicitud se procese solo una vez.
  • timestamp : la marca de tiempo cuando enviamos la solicitud. Esto se usa para contrarrestar posibles ataques de repetición.
  • datos : un objeto que contiene datos estructurados para el tipo específico. Por ejemplo, un evento de tipo INBOUND_MESSAGE_RECEIVED tiene campos como conversionId y message . Es posible que se agreguen campos en el futuro.

CONVERSACIÓN INICIADA

El evento CONVERSATION_STARTED se envía cuando se asigna una conversación a su agente virtual Inception. Solo recibirá mensajes y solo podrá responder a mensajes siempre que la conversación esté asignada al agente virtual Inception.

Como parte de este evento, recibe información adicional sobre el perfil de contacto que intenta contactarse con usted, el canal a través del cual se está contactando con usted y los atributos del contacto. Los atributos de contacto incluyen información específica del medio, información agregada manualmente antes e información proveniente de búsquedas anteriores de CRM. Tenga en cuenta que el Agente virtual de Inception recibirá el evento CONVERSATION_STARTED antes de que se realice cualquier búsqueda de CRM configurada y, por lo tanto, el evento no incluirá ninguna información nueva del CRM.

Después del evento CONVERSATION_STARTED, recibirá un evento INBOUND_MESSAGE_RECEIVED por cada mensaje que envíe el contacto, comenzando desde el comienzo de la conversación.

Dupdo
{
"idempotencyKey": "933d877e-a13f-4958-93a4-d5d4941bf624",
"versión 1,
"tipo": "CONVERSATION_STARTED",
"marca de tiempo": "2019-01-17T16: 46: 51.908736Z",
"datos": {
"conversionId": "0-01d90bc1b13-000-9a9ca0d8",
"medio": { "id": "fb" } ,
"canal": {
"id": "0-019a0b43ad3-000-471aa28a",
"name": "Sparkcentral support channel"
} ,
"contactProfile": {
"id": "0-01835f0fec3-000-0a6c390a",
"mediumContactProfileId": "975734236828364800",
"primaryIdentifier": "jan_spark",
"secondaryIdentifier": "Jan Spark",
"pictureUrl": "http://image.com/sticky/default_profile_images/default_profile_normal.png"
} ,
"contactAttributes": [
{ "attribute": "company", "value": "Sparkcentral", "source": "AGENT" } ,
{
"attribute": "fb-profile-image",
"value": "https://image.com/sticky/default_profile_images/default_profile_normal.png",
"source": "MEDIUM"
} ,
{
"attribute": "fb-verified",
"value": "Not Verified",
"source": "MEDIUM"
} ,
{
"attribute": "fb-account-created",
"value": "March 19, 2018",
"source": "MEDIUM"
} ,
{
"attribute": "fb-handle-name",
"value": "jan_spark",
"source": "MEDIUM"
} ,
{ "attribute": "fb-name", "value": "Jan Spark", "source": "MEDIUM" } ,
{
"attribute": "spark-url",
"value": "http://www.sparkcentral.com",
"source": "AGENT"
}
]
}
}

CONVERSATION_DELEGATED

El evento CONVERSATION_DELEGATED se envía cuando se asigna una conversación a su agente virtual de Delegación. Al igual que el evento CONVERSATION_STARTED, este contiene información adicional sobre el perfil de contacto que intenta contactarse contigo, el canal a través del cual te están contactando y los atributos del contacto.

Después del evento CONVERSATION_DELEGATED, recibirá un evento INBOUND_MESSAGE_RECEIVED por cada mensaje que envíe el contacto, comenzando desde el momento en que la conversación se asigna al agente virtual. A diferencia del evento CONVERSATION_STARTED, el evento CONVERSATION_DELEGATED no suele ser seguido inmediatamente por un INBOUND_MESSAGE_RECEIVED. En cambio, se espera que el agente virtual le haga la primera pregunta al contacto. Una vez que haya recibido un evento CONVERSATION_DELEGATED, tiene 2 minutos para hacer esta primera pregunta. Consulte los requisitos para obtener más detalles.

Dupdo
{
"marca de tiempo": "2019-03-28T14: 29: 56.727041Z",
"idempotencyKey": "8fa424c3-a88b-4f02-bd38-4e292a27597b",
"versión 1,
"tipo": "CONVERSATION_DELEGATED",
"datos": {
"conversionId": "0-01f20ec5e10-000-860d4dde",
"medio": { "id": "fb" } ,
"canal": {
"id": "0-01e25845518-000-19087686",
"name": "JansDevFbChannel4"
} ,
"contactProfile": {
"id": "0-01f116a7f9c-000-b5d375aa",
"mediumContactProfileId": "cd067e88519aa063b15e9944",
"primaryIdentifier": "Anonymous",
"secondaryIdentifier": "Young Parrot",
"pictureUrl": null
} ,
"contactAttributes": [
{
"attribute": "fb-page-title",
"value": "In-Web Messaging Demo",
"source": "MEDIUM"
} ,
{
"attribute": "fb-page-url",
"value": "https://messenger-demoapp-dev/#JansDevSmoochChannel4",
"source": "MEDIUM"
} ,
{
"attribute": "fb-browser-language",
"value": "en-US",
"source": "MEDIUM"
} ,
{
"attribute": "fb-domain",
"value": "messenger-demoapp-dev",
"source": "MEDIUM"
} ,
{
"attribute": "fb-sdk-version",
"value": "1.14.2",
"source": "MEDIUM"
}
]
}
}

INBOUND_MESSAGE_RECEIVED

Una vez asignada la conversación al agente virtual y después de recibir un evento CONVERSATION_STARTED o CONVERSATION_DELEGATED, comenzará a recibir eventos INBOUND_MESSAGE_RECEIVED. Estos eventos ocurren cada vez que el contacto envía un mensaje. Tenga en cuenta que enviamos los temas de conversación con cada evento INBOUND_MESSAGE_RECEIVED.

Dupdo

{
"Clave de impotencia ID":" cc75552a-1a78-11e9-855e-6d1e71016abf",
"versión ": 1,
"tipo":" INBOUND_MESSAGE_RECEIVED",
"sello de tiempo":" 2019-01-17T 16:56:16 .108626Z",
"data ": {
"ID de conversación":"" 0-01d90bc1b13-000-9a9ca0d8,
"message":{
"messageId": "cc75552a-1a78-11e9-855e-6d1e71016abf",
"text": "Hello",
"payload":"payload"
},
"Temas de conversación": [
"Tema 1",
"Tema 2"
],
"canal": {
"id": "0-019a0b43ad3-000-471aa28a",
"name": "Sparkcentral support channel"
},
"ContactProfile":{
"id": "0-01835f0fec3-000-0a6c390a",
"mediumContactProfileId": "975734236828364800",
"primaryIdentifier": "jan_spark",
"secondaryIdentifier": "Jan Spark",
"pictureUrl": "http://image.com/sticky/default_profile_images/default_profile_normal.png"
},
"medio": {
"id": "facebook"
}
}
}

RESPUESTA

Su respuesta al webhook debería ser 200 OK. En el cuerpo, puede devolver la respuesta que desea enviar al contacto:

Dupdo
{
"sendMessage":{ "text": "Hi! How can I help you?", "attachment": "funny_cat.gif" },
"Aplicar temas": [" Reserva de hotel"],
"Aplicar Etiquetas": ["Contento"],
"Establecer atributos de contacto":{ "account_number": "19758293529351" },
"completar":" HANDOVER"
"Aplicar notas de conversación": [{"text": "A note"}]
}
  • sendMessage : (opcional) el mensaje que desea enviar al contacto. Puede enviar solo texto, solo un archivo adjunto o ambos al mismo tiempo. Si desea enviar un archivo adjunto, primero debe cargarlo, por lo que recomendamos utilizar el flujo asincrónico.
  • applyTopics : (Opcional) La lista de temas que desea aplicar a la conversación (la intención o acción que coincidió con su Agente virtual). Se ignorarán los temas que no existen en Sparkcentral.
  • applyTags : la lista de etiquetas que desea aplicar al mensaje del contacto. Se ignorarán las etiquetas que no existen en Sparkcentral. Solo es posible usar applyTags en respuesta a un INBOUND_MESSAGE_RECEIVED. También es posible etiquetar un mensaje específico especificando el messageId . En ese caso, puede responder usando "applyTags": [ {"messageId": "cc75552a-1a78-11e9-855e-6d1e71016abf", "tag": "Happy"} ].
  • setContactAttributes : los atributos que desea establecer en un contacto. El objeto es un mapa entre el alias de la definición de atributo y el valor a establecer.
  • completa . (Opcional) Puede ser TRANSFERENCIA si desea ceder la conversación a otro agente o RESUELTO si desea resolver la conversación. Cuando aprueba TRANSFERENCIA, la regla de transferencia que configuró en la configuración determina lo que sucederá a continuación. Si la regla de transferencia es "Nadie", la conversación se coloca en la nueva cola sin un propietario. Cualquier agente humano puede retomar la conversación. Si la regla se ha establecido en "Agente anterior", la conversación se asignará de nuevo al agente humano anterior. Si no había ningún agente anterior, la conversación se coloca en la cola Nuevo sin propietario.
  • applyConversationNotes: (Opcional): Notas que deben agregarse a la conversación en los registros de auditoría.

Si se está integrando con una plataforma de bot asincrónica, simplemente puede devolver un cuerpo JSON vacío {} y enviar este mensaje mediante una solicitud POST. También recomendamos utilizar la API REST cuando desee enviar un archivo adjunto. Puede responder con {}, cargar un archivo adjunto mediante una solicitud PUT y luego enviar el archivo adjunto mediante una solicitud POST.

Asegurar webhooks

Al configurar un agente virtual, recibió una clave secreta que puede usar para verificar si una solicitud de webhook entrante realmente proviene de Sparkcentral sin alteraciones. En los encabezados de solicitud de cada llamada de webhook se encuentra X-Sparkcentral-Signature. Contiene una firma HMAC-SHA256 basada en el cuerpo de la solicitud. Tanto la clave secreta que recibió como la firma están codificadas como cadenas hexadecimales. La mayoría de los idiomas vienen con bibliotecas listas para usar para verificar esta firma. Aquí hay un código de muestra para verificarlo en Node.js:

Dupdo
const sparkcentralSecret = "..."; //¡no compartas!
const formerSignature = request.headers ["X-Sparkcentral-Signature"];
const actualSignature = cripto
.createHmac ("sha256", Buffer.from (sparkcentralSecret, "hex"))
.update (request.body, "utf-8")
.digest ("hexadecimal");
if (actualSignature! == esperabaSignature) {
throw new createError.Unauthorized("X-Sparkcentral-Signature wrong");
}
Nota: asegúrese de calcular la firma del cuerpo tal como está, antes de deserializarlo de JSON. Durante el cálculo de la firma, todos los espacios en blanco se consideran significativos.
Como parte del cuerpo de la solicitud, encontrará una marca de tiempo. Esta es la hora a la que se envió la solicitud. Para evitar ataques de repetición, recomendamos verificar que esta marca de tiempo no tenga más de 5 minutos:
Dupdo
si (
momento (JSON.parse (request.body) .timestamp) .isBefore (
momento (). restar (5, "minutos")
)
) {
throw new createError.Unauthorized("Request too old");
}

Requisitos

Para proporcionar una buena experiencia al cliente, se imponen algunos requisitos no funcionales en el webhook. Cuando se envía un webhook, tiene 10 segundos para responder con 200 OK. Si se agota el tiempo de espera, volveremos a intentarlo 3 veces con un retroceso exponencial (hasta 2 segundos). Si las fallas persistieron durante los reintentos, la conversación asignada se entregará a un agente humano colocándola en la cola Nueva.

Cuando el contacto envía un mensaje a través de Sparkcentral, de forma predeterminada, esperamos que el agente virtual responda a ese mensaje en 5 minutos (utilizando la respuesta a la llamada del webhook o la API REST). Puede configurar el tiempo de espera en la pantalla de configuración para su agente virtual (Timeout Virtual Agent). Si el agente virtual no responde al contacto, de forma predeterminada, la conversación se coloca en la cola Nueva para que la atienda un agente humano. Esto también se puede configurar en Configuración . Si lo prefiere, puede resolver automáticamente la conversación y enviar un mensaje al contacto (como "Inténtelo de nuevo en un momento"). El agente virtual también podría decidir devolver el control inmediatamente enviando RESUELTO o ENTREGA en el campo completo.

De manera similar, después de un evento CONVERSATION_DELEGATED, su agente virtual tiene 5 minutos para plantear una pregunta al contacto de forma predeterminada. Si el agente virtual no hace esto, la conversación se devuelve al propietario anterior de la conversación o se coloca en la cola Nuevo, según la regla de transferencia.

Autorización

Si desea enviar las respuestas de forma asincrónica o manipular la conversación en su código de cumplimiento, deberá llamar a la API REST del Agente virtual. La API del agente virtual utiliza el flujo de concesión de credenciales de cliente de la especificación Oauth 2.0 para la autenticación y autorización del cliente.

Los clientes reciben un client_id y client_secret para autenticarse con el servidor de autorización de Sparkcentral y un access_token para usar en la autorización de solicitudes de API. El access_token debe usarse en un encabezado de autorización, pero opcionalmente se puede pasar como un parámetro de cadena de consulta (consulte los detalles de solicitud / respuesta en las siguientes secciones). Cuando expira el access_token , la API devuelve un 401 no autorizado. El cliente puede automatizar esto generando un nuevo token de acceso y reproduciendo la solicitud fallida con el token de acceso nuevo como se documenta en la siguiente sección. Este es el mismo client_id y client_secret que podría haber recibido para la API de mensajería proactiva o la API de informes en tiempo real.

Los usuarios de Sparkcentral con derechos de administrador pueden generar claves de API en Configuración al expandir Integración y API y seleccionar Resto de claves de API .

Concesión de credenciales de cliente

Recupere un access_token para realizar solicitudes de API autorizadas. Cuando expire el access_token , use este punto final para generar un nuevo token.

SOLICITUD

Dupdo
$ curl -X POST https://public-api.sparkcentral.com/oauth2/token -H 'content-type: application / x-www-form-urlencoded' -d 'grant_type = client_credentials & client_id = YOUR_CLIENT_ID_HERE & client_secret = YOUR_CLIENT_SECRET_HERE & scope -leer'

o

Dupdo
$ curl -X POST https://public-api-eu.sparkcentral.com/oauth2/token -H 'content-type: application / x-www-form-urlencoded' -d 'grant_type = client_credentials & client_id = YOUR_CLIENT_ID_HERE & client_secret = YOUR_CLIENT_SECRET_HERE = cliente-leído '
  
Parámetros de API
Parámetro Estado Descripción
grant_type requerido Debe establecerse en client_credentials
Identificación del cliente requerido Identificador de cliente proporcionado por Sparkcentral
client_secret requerido Sparkcentral proporcionó el secreto del cliente
alcance requerido Debe establecerse en lectura de cliente

RESPUESTA

{ “token_type”: “bearer”, “access_token”: “a1b2c3d4e5f6”, “expires_in”: 43200 }

Parámetros de respuesta y descripciones
Parámetro Descripción
token_type El tipo de token que se utilizará en el encabezado de autorización. Este será siempre al portador de la concesión de las credenciales del cliente.
access_token El token utilizado para autorizar solicitudes. Esto debe agregarse a las solicitudes como un encabezado de autorización: Autorización: Portador a1b2c3d4e5f6 . La API también aceptará access_token como un parámetro de cadena de consulta, sin embargo, usar el encabezado de autorización es el método preferido.
expira en La cantidad de segundos hasta que caduque el token (12 horas)

La mayoría de las plataformas tienen soporte listo para usar para OAuth2. Por ejemplo, en Node.js usando axios-oauth-client , puede hacer lo siguiente:

Dupdo
const axios = require ('axios');
const oauth = require ('axios-oauth-client');
const tokenProvider = require ('axios-token-interceptor');
const restClient = axios.create ( { baseURL: 'https://public-api.sparkcentral.com' } ); // o public-api-eu.sparkcentral.com en la UE
const getClientCredentials = oauth.client (axios, {
url: 'https://public-api.sparkcentral.com/oauth2/token',
grant_type: 'client_credentials',
client_id: process.env.SPARKCENTRAL_CLIENT_ID,
client_secret: process.env.SPARKCENTRAL_CLIENT_SECRET,
scope: 'client-read'
} );
restClient.interceptors.request.use (oauth.interceptor (tokenProvider, getClientCredentials));

API de agente virtual

Conversaciones

POST / agente-virtual / conversaciones / {conversationId}

Esto le permite manipular la conversación de la misma manera que lo haría al responder a una solicitud de webhook. Puede enviar una respuesta, agregar un tema y / o pasar la conversación. Cada propiedad del cuerpo es opcional. Si solo desea enviar un mensaje, puede enviar {"sendMessage": {"text": "¡Hola!"}} . Si desea aplicar un tema y completar, pero no enviar un mensaje, puede, por ejemplo, enviar {"applyTopics":["Spam"], "complete": "RESOLVED"} .

Tenga en cuenta que solo se aplicarán a la conversación los temas que coincidan exactamente con un tema de la plataforma (no distingue entre mayúsculas y minúsculas). Se ignoran los temas que no existen. Por el momento, no se producirán coincidencias difusas y los errores tipográficos darán como resultado un tema inexistente.

Lo mismo se aplica a las etiquetas. Solo las etiquetas que coincidan exactamente con una etiqueta en la plataforma se aplicarán a un mensaje específico (no distingue entre mayúsculas y minúsculas). Las etiquetas no existentes se ignoran. Tenga en cuenta que es obligatorio especificar el messageId cuando se utiliza la API REST. El messageId es parte de cada evento INBOUND_MESSAGE_RECEIVED.

Si desea enviar un archivo adjunto, primero deberá cargar el archivo adjunto en una llamada separada ( PUT / virtual-agent / conversations / {conversationId} / attachments / {filename} ) y luego usar el nombre del archivo al enviar el mensaje ( {"sendMessage": {"adjunto": ""}} ).

Si el contacto ya tiene un valor guardado para la definición de atributo con un alias en particular, la actualización se ignorará. Si alguna de las definiciones de atributo está configurada como valores de búsqueda de CRM, se realiza una búsqueda de CRM después de que se establezcan los atributos. Para obtener el mejor rendimiento, recomendamos configurar los atributos de contacto junto con la respuesta para indicar que la conversación se completó. Tenga en cuenta que el agente virtual no recibirá los nuevos atributos de la respuesta de CRM hasta que se reciba el próximo evento CONVERSATION_STARTED o CONVERSATION_DELEGATED para una conversación con un contacto.

URI de ejemplo

POST / agente-virtual / conversaciones / conversionId

Archivos adjuntos

PUT /virtual-agent/conversations/ {conversationId} /attachments/ {filename}

Esto le permite cargar un archivo adjunto que puede enviar en una conversación. Primero debe cargar el archivo adjunto y luego puede enviar un mensaje con texto y un archivo adjunto. Por ejemplo, si subes un archivo adjunto a /virtual-agent/conversations//attachments/cat.jpg, puedes enviar ese archivo adjunto enviando {"sendMessage": {"text": "¡Este es un gato!", "archivo adjunto": "cat.jpg"}} a / agente-virtual / conversaciones /. El nombre del archivo debe ser único dentro de una conversación y debe ser visible para el contacto si descarga su archivo adjunto.

El encabezado Content-Type debe contener el tipo de mime correcto del archivo adjunto (como 'image / jpeg'). El encabezado Content-Length debe contener el tamaño del archivo adjunto en bytes. Los archivos adjuntos deben tener menos de 10 megabytes para evitar errores.

 

URI de ejemplo

PUT / agente-virtual / conversaciones / conversaciónId / archivos adjuntos / nombre de archivo

 

¿No encuentras lo que buscas? Estamos aquí para ayudar