In-app chatinstelling: ondersteuning in je app, geen SDK
Eén URL in een WebView. Geen pakket om te installeren, geen build die kan breken, en elk gesprek komt in dezelfde inbox terecht als de rest van je support.
In-app chat in inrelay is een gehoste chatpagina op het adres van je eigen helpcentrum. Richt een WebView op /chat en je iOS-, Android- of React Native-app bevat livechat, AI-antwoorden en je kennisbankartikelen - zonder SDK, zonder afhankelijkheden en zonder dat er een app-store-release nodig is om iets te wijzigen.
De pagina is dezelfde chat die je websitebezoekers gebruiken, maar dan schermvullend getoond in plaats van in een bubbel. Dat betekent dat het alles overneemt wat je al hebt ingesteld: je merkstijl en accentkleur, je openingstijden, de AI-chatbot en de kennis daarvan, het leadformulier en de inbox waarin je team al werkt. Het inschakelen is geen project - het adres bestaat zodra livechat aan staat.
Het is inbegrepen in elk pakket. Er is geen mobiele add-on, geen kosten per gesprek en niets wat je moet kopen voordat je het kunt proberen.
Eén URL, drie optionele details
Je chatpagina staat op /chat op het adres van je helpcentrum - het aangepaste domein als je er een hebt gekoppeld, anders het .inrelay.support-adres dat je hebt geclaimd. Je vindt de exacte URL, klaar om te kopiëren, in Instellingen → Helpwidget → In je mobiele app.
https://support.yourbrand.com/chatDie URL op zich is een volledige integratie: een bezoeker kan anoniem chatten, en het gesprek volgt hen wanneer de app opnieuw wordt geopend op dat apparaat. Als je app weet wie de gebruiker is, kun je dat doorgeven met drie queryparameters - allemaal optioneel, allemaal veilig om weg te laten:
token_id- je eigen ondoorzichtige, willekeurige id voor deze gebruiker. Dit is wat hun gesprek herstelt op een nieuw apparaat of na opnieuw installeren.email- zodat een antwoord hen kan bereiken wanneer de app gesloten is.name- zodat je team weet wie ze helpen.
https://support.yourbrand.com/chat?token_id=8f2c…&email=ada%40example.com&name=Ada%20LovelaceCodeer de waarden voor de URL. Tenzij je geverifieerde identiteit inschakelt (hieronder), moet je token_id als een geheim behandelen: wie er een heeft, kan dat gesprek hervatten. Genereer dus lange willekeurige waarden - nooit een e-mailadres, gebruikersnaam of opeenvolgend ID.
Drie manieren om het te openen
Elk hiervan is de volledige integratie. De twee instellingen die op elk platform van belang zijn, zijn JavaScript en DOM-opslag - DOM-opslag zorgt ervoor dat het gesprek van een bezoeker bewaard blijft wanneer de app opnieuw wordt geopend.
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>
)
}Geef de WebView het volledige scherm en laat deze het scrollen zelf afhandelen - de pagina is al op formaat gemaakt voor een telefoon, inclusief de safe area aan de onderkant.
Koppel de allowlist aan je eigen adres, met de schuine streep aan het einde. Een patroon zoals https://* zorgt ervoor dat elke site in je supportscherm kan worden weergegeven, en een patroon zonder schuine streep - https://support.yourbrand.com* - komt ook overeen met support.yourbrand.com.example.net. Als je de URL zelf ook controleert, vergelijk dan de geparste herkomst in plaats van een voorvoegsel te testen.
Bewijs dat ze het echt zelf zijn
Optioneel, standaard uitgeschakeld, en een schakelaar in plaats van een migratie: elke werkruimte heeft al een ondertekeningsgeheim klaarstaan in Instellingen → Helpwidget.

Met verificatie ingeschakeld moeten de gegevens die je app doorgeeft aankomen met een handtekening die door jouw server is gegenereerd. Alles wat niet ondertekend is - of ondertekend voor een andere gebruiker - wordt genegeerd: de chat opent nog steeds, maar is simpelweg anoniem. Het crasht nooit hard, want een supportscherm dat niet laadt, is erger dan een scherm dat je naam niet kent.
Onderteken exact deze tekenreeks, waarbij je de drie waarden samenvoegt met regeleinden en een lege tekenreeks gebruikt voor alles wat je weglaat:
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')Voeg het toe als &signature=…. Onderteken de waarden precies zoals je ze in de URL zet - geen spaties verwijderen, geen kleine letters van maken - en onderteken alle drie: een handtekening die alleen het token dekt, valideert geen verzoek waarvan het e-mailadres verschilt. Waarden met regeleinden worden geweigerd.
- Het geheim staat op jouw server en wordt door de onze gelezen. Het hoort nooit thuis in de binary van je app, waar iedereen het kan achterhalen.
- Haal de handtekening op van je eigen geauthenticeerde eindpunt wanneer de gebruiker support opent, en bouw daarna de URL op.
- Schakel verificatie in voordat je lanceert, als je dat van plan bent. Het achteraf toevoegen als je gebruikers al chatten betekent dat elk token opnieuw moet worden uitgegeven.
Antwoorden bereiken hen via e-mail
Iemand stelt een vraag, sluit je app, en je team antwoordt tien minuten later. Het antwoord wordt gemaild naar het adres van het gesprek - vanuit de identiteitsparameters van de app, of vanuit het e-mailadres dat in de chat is gevraagd - en wanneer ze support opnieuw openen, staat het hele gesprek er nog.
Laten we eerlijk zijn over de vorm: er zijn geen in-app pushmeldingen in deze versie. Er is geen SDK om een apparaattoken bij te registreren, dus een antwoord kan de badge van je app niet laten oplichten. E-mail is de bezorgroute, en een klant die een adres heeft achtergelaten hoort altijd iets terug.
- Het gesprek blijft bewaard op het apparaat en volgt een
token_idnaar een nieuw apparaat. - Alles wat de bezoeker ziet, is de geleverde chat: AI-antwoorden, je kennisbankartikelen, je openingstijden.
- In-app pushmeldingen zijn in ontwikkeling - antwoorden komen binnen via e-mail terwijl de app gesloten is.
- Dit is bewust een gehoste pagina in een WebView - er is geen SDK.
Live in vier stappen
Schakel livechat in
Instellingen → Helpwidget. Als je websitewidget al chat, ben je klaar met deze stap.
Kopieer je chat-URL
Het blok “Ingelogde gebruikers (app en website)” bevat dit, met een kopieerknop. Claim eerst een helpcentrum-adres als je een eigen merknaam wilt.
Open het in een WebView
Plak een van de bovenstaande recepten in je supportscherm. Schakel JavaScript en DOM-storage in.
Identiteit toevoegen, als je dat wilt
Geef een token, e-mailadres en naam mee - en schakel verificatie met de handtekening in wanneer je er klaar voor bent.
De rest van de inbox.
In-app chat is één toegangspoort tot de functionaliteiten van inrelay - dit zijn de functies waar het op leunt.
Dezelfde chat
Je websitewidget en je app openen dezelfde gesprekken, in dezelfde inbox.
Bekijk live chat → KENNISBANKIngebouwde antwoorden
Je helpartikelen zijn doorzoekbaar in de app en vormen de basis voor de antwoorden van de AI.
Bekijk de kennisbank → MOBIELE APPJouw kant van de zaak
De mobiele inrelay-app voor iOS en Android, om te antwoorden als je niet achter je bureau zit.
Bekijk de mobiele app →Jouw app, met support erin.
Gratis te starten met je eigen inbox - alle functies, geen creditcard nodig, nooit per gebruiker.
Vragen, beantwoord.
Moet ik een dependency toevoegen aan mijn app?
Wat gebeurt er als ik helemaal geen parameters meegeef?
Kan iemand anders een gesprek lezen als diegene een token raadt?
token_id dat gesprek hervatten - daarom moeten tokens lang en willekeurig zijn, en daarom bestaat de verificatieschakelaar. Als deze aan staat, wordt een niet-ondertekend token volledig genegeerd.