Configuração do chat no aplicativo: suporte dentro do seu aplicativo, sem SDK
Uma URL em uma WebView. Nenhum pacote para instalar, nenhuma compilação para quebrar, e cada conversa chega à mesma caixa de entrada do restante do seu suporte.
O chat no aplicativo do inrelay é uma página de chat hospedada no seu próprio endereço da central de ajuda. Aponte uma WebView para /chat e seu aplicativo iOS, Android ou React Native terá chat ao vivo, respostas da IA e seus artigos de ajuda integrados - sem SDK, sem dependência e sem precisar lançar uma nova versão na loja de aplicativos para alterar nada.
A página é o mesmo chat que os visitantes do seu site usam, exibida em tela cheia em vez de um balão. Isso significa que ela herda tudo o que você já configurou: sua marca e cor de destaque, seu horário de atendimento, o chatbot de IA e seu conhecimento, o formulário de leads e a caixa de entrada em que sua equipe já trabalha. Ativá-la não é um grande projeto - o endereço passa a existir assim que o chat ao vivo for ativado.
Está incluído em todos os planos. Não há complemento para dispositivos móveis, não há taxa por conversa e não há nada para comprar antes de testar.
Uma URL, três detalhes opcionais
Sua página de chat fica em /chat no seu endereço da central
de ajuda - o domínio personalizado, se tiver conectado um, ou o endereço
.inrelay.support que você resgatou. Você encontrará a
URL exata, pronta para copiar, em Configurações → Widget de ajuda → No seu
aplicativo móvel.
https://support.yourbrand.com/chatEssa URL por si só é uma integração completa: o visitante pode conversar de forma anônima, e a conversa o acompanha ao abrir o aplicativo naquele dispositivo. Se o seu aplicativo sabe quem é o usuário, você pode informar isso com três parâmetros de consulta - todos opcionais, todos seguros para omitir:
token_id- seu próprio identificador aleatório e opaco para este usuário. É ele que restaura a conversa em um novo dispositivo ou após uma reinstalação.email- para que uma resposta chegue até eles quando o aplicativo estiver fechado.name- para que sua equipe saiba quem está atendendo.
https://support.yourbrand.com/chat?token_id=8f2c…&email=ada%40example.com&name=Ada%20LovelaceCodifique os valores para URL. A menos que ative a identidade verificada (abaixo), trate
token_id como um segredo: quem o possuir poderá retomar essa
conversa. Portanto, gere valores aleatórios longos - nunca um endereço de e-mail, um
nome de usuário ou um ID sequencial.
Três maneiras de abrir
Cada uma destas opções é a integração completa. As duas configurações que importam em todas as plataformas são JavaScript e DOM storage - o DOM storage é o que mantém a conversa do visitante ao abrir o aplicativo novamente.
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>
)
}Dê à WebView a tela inteira e deixe que ela gerencie a própria rolagem - a página já tem o tamanho ajustado para celular, incluindo a área de segurança na parte inferior.
Restrinja a lista de permissões ao seu próprio endereço, com a barra no final. Um padrão
como https://* permite que qualquer site seja renderizado dentro da sua tela
de suporte, e um sem a barra -
https://support.yourbrand.com* - também é compatível com
support.yourbrand.com.example.net. Se você também verificar a URL
por conta própria, compare a origem analisada em vez de testar um prefixo.
Prove que são realmente eles
Opcional, desativado por padrão, e um botão de alternância em vez de uma migração: cada espaço de trabalho já possui um segredo de assinatura aguardando em Configurações → Widget de ajuda.

Com a verificação ativada, os detalhes passados pelo seu aplicativo devem chegar com uma assinatura gerada pelo seu servidor. Qualquer item não assinado - ou assinado para um usuário diferente - é ignorado: o chat ainda abre, mas de forma anônima. Ele nunca falha completamente, pois uma tela de suporte que não carrega é pior do que uma que não sabe seu nome.
Assine exatamente esta string, unindo os três valores com quebras de linha e usando uma string vazia para qualquer item omitido:
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')Anexe como &signature=…. Assine os valores exatamente como
você os coloca na URL - sem remover espaços, sem converter para minúsculas - e assine todos
os três: uma assinatura que cobre apenas o token não validará uma solicitação cujo
e-mail seja diferente. Valores contendo quebras de linha são recusados.
- O segredo fica no seu servidor e é lido pelo nosso. Ele nunca deve estar no binário do aplicativo, onde qualquer pessoa poderia extraí-lo.
- Busque a assinatura no seu próprio endpoint autenticado quando o usuário abrir o suporte e, em seguida, monte a URL.
- Ative a verificação antes de lançar, se pretender usá-la. Adaptá-la depois que seus usuários já estiverem conversando significa reemitir todos os tokens.
As respostas chegam por e-mail
Alguém faz uma pergunta, fecha o aplicativo e sua equipe responde dez minutos depois. A resposta é enviada por e-mail para o endereço da conversa - a partir dos parâmetros de identidade do aplicativo, ou do e-mail solicitado pelo chat - e, quando o suporte for aberto novamente, todo o histórico continuará lá.
Sendo diretos sobre como funciona: não há notificações push no aplicativo nesta versão. Não há SDK para registrar um token de dispositivo, portanto uma resposta não pode atualizar o selo do seu aplicativo. O e-mail é a via de entrega, e um cliente que deixou um endereço sempre recebe uma resposta.
- A conversa permanece no dispositivo e segue um
token_idpara um novo dispositivo. - Tudo o que o visitante vê é o chat fornecido: respostas da IA, seus artigos de ajuda, seu horário de atendimento.
- As notificações push no aplicativo estão em desenvolvimento - as respostas chegam por e-mail enquanto o aplicativo estiver fechado.
- Esta é uma página hospedada em uma WebView, de forma deliberada - não há SDK.
No ar em quatro etapas
Ative o chat ao vivo
Configurações → Widget de ajuda. Se o widget do seu site já realiza conversas, esta etapa está concluída.
Copie a URL do seu chat
O bloco “Signed-in users (app e site)” traz essa opção, com um botão de cópia. Reserve um endereço da central de ajuda primeiro se quiser um personalizado.
Abra em uma WebView
Cole uma das receitas acima na sua tela de suporte. Ative o JavaScript e o armazenamento DOM.
Adicione identificação, se desejar
Passe um token, e-mail e nome - e ative a verificação com assinatura quando estiver tudo pronto.
O restante da caixa de entrada.
O chat no aplicativo é uma porta de entrada para a família de recursos do inrelay - estes são os principais em que ele se apoia.
O mesmo chat
O widget do seu site e o seu aplicativo abrem as mesmas conversas, na mesma caixa de entrada.
Ver chat ao vivo → BASE DE CONHECIMENTORespostas integradas
Seus artigos de ajuda podem ser pesquisados dentro do aplicativo e servem de base para as respostas da IA.
Ver a base de conhecimento → APLICATIVO MÓVELO seu lado
O aplicativo auxiliar do inrelay para iOS e Android, para responder de onde estiver.
Ver o aplicativo móvel →Seu aplicativo, com suporte integrado.
Gratuito para começar com sua própria caixa de entrada - todos os recursos, sem cartão, nunca por usuário.
Perguntas respondidas.
Preciso adicionar uma dependência ao meu aplicativo?
O que acontece se eu não passar nenhum parâmetro?
Outra pessoa pode ler uma conversa se adivinhar um token?
token_id válido pode retomar a conversa - é por isso que os tokens devem ser longos e aleatórios, e por isso existe a opção de verificação. Com ela ativada, um token sem assinatura é totalmente ignorado.