Skip to main content
Búsqueda

Enlaces de contexto

Abre herramientas externas desde la barra lateral de la conversación con los datos del contacto ya incluidos.

Los enlaces de contexto son botones de la barra lateral de una conversación que abren URL externas con los datos del contacto y de la conversación ya incluidos. Los agentes pueden usarlos para ir a un CRM, un sistema de facturación o un panel interno sin copiar y pegar identificadores.

Variables de la plantilla de URL

Estos marcadores se sustituyen por los datos del contacto actual cuando un agente hace clic en el enlace.

  • {{email}} - correo electrónico del contacto
  • {{phone}} - número de teléfono del contacto
  • {{phone_country_code}} - código de país del teléfono del contacto
  • {{external_user_id}} - ID de usuario externo del contacto
  • {{contact_id}} - ID interno del contacto en libredesk
  • {{first_name}} - nombre del contacto
  • {{last_name}} - apellido del contacto
  • {{conversation_uuid}} - UUID de la conversación actual
  • {{token}} - token cifrado que contiene todos los campos y requiere un secreto compartido

Todos los valores, salvo {{contact_id}} y {{conversation_uuid}}, se codifican automáticamente para usarlos en una URL.

Ejemplos

Búsqueda sencilla por correo electrónico:

https://crm.example.com/contacts?email={{email}}

Varios parámetros:

https://billing.example.com/customer?ext_id={{external_user_id}}&email={{email}}

Panel interno con el contexto de la conversación:

https://dashboard.internal/lookup?contact={{contact_id}}&conv={{conversation_uuid}}

Token cifrado:

https://api.example.com/auth/libredesk?token={{token}}

El token cifrado

Cuando usas {{token}}, libredesk genera un token cifrado con AES-256-GCM y de duración limitada. Contiene todos los campos anteriores, además de agent_id, agent_email, iat y exp. El sistema receptor lo descifra con el secreto compartido, por lo que esos datos no quedan expuestos en la URL.

import base64, json, time
from cryptography.hazmat.primitives.ciphers.aead import AESGCM

def decrypt_context_token(token, secret):
    raw = base64.b64decode(token)
    nonce = raw[:12]
    ciphertext = raw[12:]

    aesgcm = AESGCM(secret.encode('utf-8'))
    plaintext = aesgcm.decrypt(nonce, ciphertext, None)
    return json.loads(plaintext)

secret = "your-32-character-shared-secret!"  # exactly 32 characters
payload = decrypt_context_token(token_from_url, secret)

if payload["exp"] < time.time():
    raise ValueError("Token has expired")

print(payload["email"], payload["conversation_uuid"])
Was this article helpful?