Una URL en una WebView. Sin paquetes que instalar, sin compilaciones que romper y con cada conversación en el mismo buzón que el resto de tu soporte.
El chat dentro de la app en inrelay es una página de chat alojada en la dirección de tu propio centro de ayuda. Apunta una WebView a /chat y tu app para iOS, Android o React Native tendrá chat en vivo, respuestas con IA y tus artículos de ayuda integrados — sin SDK, sin dependencias y sin tener que publicar actualizaciones en las tiendas de apps para cambiar nada.
La página es el mismo chat que usan los visitantes de tu sitio web, mostrado a pantalla completa en lugar de en una burbuja. Esto significa que hereda todo lo que ya has configurado: tu marca y color principal, tus horarios de atención, el chatbot de IA y su base de conocimientos, el formulario de clientes potenciales y el buzón en el que ya trabaja tu equipo. Activarlo no requiere un gran proyecto — la dirección existe tan pronto como se activa el chat en vivo.
Está incluido en todos los planes. No hay ningún complemento para móviles, ni tarifas por conversación, ni nada que comprar antes de poder probarlo.
Tu página de chat se encuentra en /chat en la dirección de tu centro de ayuda — el dominio personalizado si has conectado uno o, de lo contrario, la dirección .inrelay.support que reclamaste. Encontrarás la URL exacta, lista para copiar, en Ajustes → Widget de ayuda → En tu app móvil.
https://support.yourbrand.com/chatEsa URL por sí sola es una integración completa: un visitante puede chatear de forma anónima y la conversación le sigue entre inicios de la app en ese dispositivo. Si tu app sabe quién es el usuario, puedes indicarlo con tres parámetros de consulta — todos opcionales, todos prescindibles:
token_id — tu propio identificador opaco y aleatorio para este usuario. Es lo que restaura su conversación en un dispositivo nuevo o tras reinstalar.email — para que una respuesta pueda llegarles cuando la app esté cerrada.name — para que tu equipo sepa a quién está ayudando.https://support.yourbrand.com/chat?token_id=8f2c…&email=ada%40example.com&name=Ada%20LovelaceAplica codificación URL a los valores. A menos que actives la identidad verificada (a continuación), trata token_id como un secreto: cualquiera que tenga uno puede reanudar esa conversación, así que genera valores aleatorios largos — nunca una dirección de correo, un nombre de usuario o un id secuencial.
Cada una de estas opciones es la integración completa. Los dos ajustes que importan en cualquier plataforma son JavaScript y el almacenamiento DOM — el almacenamiento DOM es lo que conserva la conversación del visitante entre inicios de la app.
import UIKit
import WebKit
final class SupportViewController: UIViewController {
private let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())
override func viewDidLoad() {
super.viewDidLoad()
webView.frame = view.bounds
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
webView.scrollView.bounces = false
view.addSubview(webView)
var url = URLComponents(string: "https://support.yourbrand.com/chat")!
url.queryItems = [
URLQueryItem(name: "token_id", value: user.supportToken),
URLQueryItem(name: "email", value: user.email),
URLQueryItem(name: "name", value: user.fullName)
]
webView.load(URLRequest(url: url.url!))
}
}class SupportActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val webView = WebView(this)
setContentView(webView)
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true // keeps the conversation across launches
webView.webViewClient = WebViewClient() // keep navigation inside the WebView
val url = Uri.parse("https://support.yourbrand.com/chat")
.buildUpon()
.appendQueryParameter("token_id", user.supportToken)
.appendQueryParameter("email", user.email)
.appendQueryParameter("name", user.fullName)
.build()
webView.loadUrl(url.toString())
}
}import { SafeAreaView } from 'react-native'
import { WebView } from 'react-native-webview'
const params = new URLSearchParams({
token_id: user.supportToken,
email: user.email,
name: user.fullName
})
export function SupportScreen() {
return (
<SafeAreaView style={{ flex: 1 }}>
<WebView
source={{ uri: `https://support.yourbrand.com/chat?${params}` }}
javaScriptEnabled
domStorageEnabled
originWhitelist={['https://support.yourbrand.com/*']}
/>
</SafeAreaView>
)
}Dale a la WebView la pantalla completa y deja que gestione su propio desplazamiento — la página ya está adaptada para teléfonos, incluida el área segura inferior.
Restringe la lista de permitidos a tu propia dirección, incluyendo la barra final. Un patrón como https://* permite que cualquier sitio se muestre dentro de tu pantalla de soporte, y uno sin la barra — https://soporte.tumarca.com* — también coincide con soporte.tumarca.com.ejemplo.net. Si también compruebas la URL por tu cuenta, compara el origen analizado en lugar de probar con un prefijo.
Opcional, desactivado por defecto y con un conmutador en lugar de una migración: cada espacio de trabajo ya tiene un secreto de firma esperando en Ajustes → Widget de ayuda.

Con la verificación activada, los datos que pase tu app deben llegar con una firma generada por tu servidor. Todo lo que no esté firmado — o esté firmado para otro usuario — se ignorará: el chat se abrirá de todos modos, pero de forma anónima. Nunca falla de manera drástica, porque una pantalla de soporte que no carga es peor que una que no sabe tu nombre.
Firma esta cadena exacta, uniendo los tres valores con saltos de línea y utilizando una cadena vacía para todo lo que omitas:
token_id + "\n" + email + "\n" + name// on your server, never in the app binary
import { createHmac } from 'node:crypto'
const payload = [tokenId, email ?? '', name ?? ''].join('\n')
const signature = createHmac('sha256', INRELAY_EMBED_SECRET)
.update(payload)
.digest('hex')Añádelo como &signature=…. Firma los valores exactamente como los pones en la URL — sin recortar espacios ni convertir a minúsculas — y firma los tres: una firma que solo cubra el token no validará una solicitud cuyo correo difiera. Se rechazarán los valores que contengan saltos de línea.
Alguien hace una pregunta, cierra tu app y tu equipo responde diez minutos más tarde. La respuesta se envía por correo electrónico a la dirección asociada a la conversación — procedente de los parámetros de identidad de la app o del correo que solicitó el chat — y, cuando vuelva a abrir la ayuda, todo el hilo seguirá allí.
Para ser claros sobre esto: no hay notificaciones push en la app en esta versión. No hay ningún SDK con el que registrar un token de dispositivo, así que una respuesta no puede iluminar el globo de notificación de tu app. El correo electrónico es la vía de entrega, y un cliente que haya dejado su dirección siempre recibirá respuesta.
token_id si se cambia a otro nuevo.Ajustes → Widget de ayuda. Si el widget de tu sitio web ya permite chatear, has terminado este paso.
El bloque “En tu app móvil” la tiene, con un botón para copiar. Reclama primero una dirección del centro de ayuda si quieres una personalizada.
Pega una de las plantillas anteriores en tu pantalla de atención. Activa JavaScript y el almacenamiento DOM.
Pasa un token, correo y nombre, y activa la verificación con la firma cuando estés listo.
El chat en la aplicación es una puerta de entrada a las funciones de inrelay; estas son en las que se apoya.
El widget de tu sitio web y tu aplicación abren las mismas conversaciones, en el mismo buzón.
Ver el chat en vivo → BASE DE CONOCIMIENTOSTus artículos de ayuda se pueden buscar dentro de la aplicación y sirven de base para las respuestas de la IA.
Ver la base de conocimientos → APLICACIÓN MÓVILLa aplicación complementaria de inrelay para iOS y Android, para responder lejos del escritorio.
Ver la aplicación móvil →Empieza gratis con tu propio buzón — todas las funciones, sin tarjeta, nunca por usuario.
token_id válido puede reanudar esa conversación; por eso los tokens deben ser largos y aleatorios, y por eso existe el interruptor de verificación. Al activarla, un token sin firmar se ignora por completo.Ofrece a tus clientes respuestas más rápidas y devuelve a tu equipo sus tardes libres.
Escritorio y móvil. Gratis para uso individual.