Configuración del chat en la aplicación: soporte dentro de tu aplicación, sin SDK
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.
Una URL, tres detalles opcionales
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.
Tres formas de abrirlo
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.
iOS - WKWebView
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!))
}
}Android - WebView
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())
}
}React Native - react-native-webview
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.
Demuestra que son realmente ellos
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.
- El secreto reside en tu servidor y lo lee el nuestro. Nunca debe estar en el binario de tu app, donde cualquiera podría extraerlo.
- Obtén la firma desde tu propio punto de enlace autenticado cuando el usuario abra la ayuda y, a continuación, construye la URL.
- Activa la verificación antes de publicar, si vas a usarla. Añadirla después de que tus usuarios ya estén chateando implica volver a emitir cada token.
Las respuestas les llegan por correo electrónico
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.
- La conversación permanece en el dispositivo y sigue un
token_idsi se cambia a otro nuevo. - Todo lo que ve el visitante es el chat integrado: respuestas con IA, tus artículos de ayuda y tus horarios de atención.
- Las notificaciones push integradas en la aplicación están en desarrollo - las respuestas llegan por correo electrónico mientras la aplicación está cerrada.
- Se trata de una página alojada en un WebView, de forma deliberada - no hay ningún SDK.
Listo en cuatro pasos
Activa el chat en vivo
Ajustes → Widget de ayuda. Si el widget de tu sitio web ya permite chatear, has terminado este paso.
Copia la URL de tu chat
El bloque “Usuarios con sesión iniciada (app y sitio web)” lo incluye, con un botón para copiar. Reclama primero una dirección de centro de ayuda si quieres una con tu propia marca.
Abrirlo en una WebView
Pega una de las plantillas anteriores en tu pantalla de atención. Activa JavaScript y el almacenamiento DOM.
Añade identidad, si quieres
Pasa un token, correo y nombre, y activa la verificación con la firma cuando estés listo.
El resto del buzón.
El chat en la aplicación es una puerta de entrada a las funciones de inrelay; estas son en las que se apoya.
El mismo chat
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 CONOCIMIENTOSRespuestas integradas
Tus 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ÓVILTu lado
La aplicación complementaria de inrelay para iOS y Android, para responder lejos del escritorio.
Ver la aplicación móvil →Tu aplicación, con atención integrada.
Empieza gratis con tu propio buzón - todas las funciones, sin tarjeta, nunca por usuario.
Preguntas y respuestas.
¿Tengo que añadir una dependencia a mi aplicación?
¿Qué ocurre si no paso ningún parámetro?
¿Alguien puede leer una conversación si adivina un token?
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.