Chatbot Integratie
Intro
Bedrijven zoals Slack, Microsoft, en Facebook hebben veel stof doen opwaaien rondom het concept "chatbots". Tot in hoeverre AI chatbots zullen voldoen aan de beloftes blijft afwachten. De verwachtingen variëren van persoonlijke assistenten tot klanten service agenten - of onderdrukkers van de mensheid.
De interesse van Userlike ligt bij klanten service. En we zijn er redelijk zeker van dat AI systemen niet binnenkort de kwaliteit van mens-tot-mens contact kunnen evenaren. Toch zien we wel een rol voor service bots. Daarom willen we laten zien hoe gemakkelijk u uw eigen service bots kunt creëren en integreren met uw Userlike account.
Topic | Beschrijving |
---|---|
Chatbot integratie | Hoe uw chatbot in onze infrastructuur te integreren |
Chatbot HTTP API | Details van chatbot HTTP API protocol |
Chat commands | Chat commands die uw chatbot kan gebruiken |
Chatbot chat overzicht | Monitor uw chatbot's chat activiteit |
Chatbot Projecten | Ideeën voor uw eerste chatbot project |
Chatbot integratie
We gaan ervan uit dat u al een lopend chatbot (framework) heeft die u nu wilt verbinden met de Userlike chat infrastructuur. We nemen ook aan dat uw chatbot (framework) bereikbaar is via HTTP. Nu moet u alleen een "proxy" bot Operator in ons Dashboard aanmaken: beschouw deze als uw chatbot's afgevaardigde of ambassadeur in de Userlike chat infrastructuur.
Het opzetten van een bot Operator is net zo eenvoudig als het opzetten van een normale Operator. In uw Dashboard, ga naar "Config" en klik op "Operators". U ziet dan een tabel met al uw bestaande menselijke Operators. Daaronder, onder "Bots", is er een (nog lege) tabel voor al uw bot Operators. Klik op "Add Bot" om uw eerste chatbot te creëren:

Nu kunt u uw nieuwe bot Operator configureren:

De voornaam, achternaam en Operator Groep instellingen zijn identiek aan die van een normale, menselijke Operator. De chat eindpunten en bot gedragsmodi worden hieronder uitgelegd.
HTTP chat endpoints
Uw chatbot (framework) kan tot drie HTTP endpoints leveren voor de Userlike chat server om te callen. Zolang de "Chat Message" endpoint vereist is, kunt u de "Chat start" en "Chat end" eindpunten leveren als ze helpen met uw specifieke setup.
HTTP Endpoint | Beschrijving |
---|---|
Chat start endpoint | Wordt gecalld door de Userlike chat server als een Webbezoeker een nieuwe chat start met uw bot. Uw antwoord wordt gestuurd naar de Webbezoeker. |
Chat bericht eindpunt | Wordt gecalld door de Userlike chat server voor elk bericht dat de Webbezoeker naar uw bot stuurt. Uw antwoord wordt verstuurd naar de Webbezoeker. |
Chat end endpoint | Wordt gecalld door de Userlike chat server als de chat sessie met uw bot eindigt. Geen antwoord wordt verwacht. |
We leggen de HTTP API (het verwachte request/response protocool) van deze eindpunten in detail verder beneden uit.
Bot gedrag modi
U kunt uw chatbot in vier verschillende behavior modes instellen. Deze modes dicteren in welke situaties uw Webbezoekers verbonden worden met de chatbot, of dat de menselijke collega's de voorkeur krijgen.
Bot gedragsmodus | Beschrijving |
---|---|
Service Tijd | De bot is alleen online buiten de Service Tijd gedefinieerd voor de Widget. Tijdens Service Tijd worden alle chats naar uw menselijke Operators geleid. |
Failover | De bot is altijd online, maar neemt alleen chats aan als er geen andere operators beschikbaar zijn. |
Menselijk | De bot is altijd online en neemt chats aan precies zoals een normale menselijke operator. |
Firewall | De bot is altijd online en neemt alle chats aan (b.v. om te pre-categoriseren en door te sturen). |
Nadat u uw nieuwe chatbot heeft geconfigureerd en opgeslagen, verschijnt deze in het bot overzicht, net onder uw tabel met menselijke Operators.

Vanaf hier kunt u aanpassingen aanbrengen zoals elke andere Operator.

Als u een bestaande chatbot aanpast, kunt u ook zijn profielfoto veranderen en definiëren hoeveel gelijktijdige chat slots uw bot moet kunnen verwerken.
Chatbot HTTP API
Eerst geven we u een overzicht van request/response waarden voor uw drie HTTP eindpunten. Verder beneden beschrijven we het JSON exchange formaat in meer detail en leggen uit hoe uw chatbot (framework) het moet gebruiken om de state de behouden voor elke chat met uw Webbezoekers.
Met een uitzondering, moeten alle verzoeken naar en antwoorden van uw chatbot (framework) gebruik maken van de HTTP POST methode - alleen het eerste verzoek naar het "chat start endpoint" wordt gedaan door middel van de HTTP GET methode (zonder parameters). Waarschijnlijk gebruiken we in de toekomst de POST methode ook voor het eerste verzoek, dus het is het beste als uw eindpunt beide methodes accepteert.
HTTP Endpoint | Beschrijving |
---|---|
Chat start endpoint | Wordt gecalld door de Userlike chat server als een Webbezoeker een nieuwe chat start met uw bot. Uw antwoord wordt gestuurd naar de Webbezoeker. |
Request formaat | GET - zonder parameters |
Response format | POST - met body bevattende "answers" en "context" JSON formats:{ "answers": ["Each item", "appears as separate chat bubble"], "context": {"context_item": "..."} } |
Chat bericht eindpunt | Wordt gecalld door de Userlike chat server voor elk bericht dat de Webbezoeker of chat server naar uw bot stuurt. Uw antwoord wordt naar de Webbezoeker gestuurd. |
Request formaat | POST - met body bevattende "input" en "context" JSON formats:{ "input": "Message sent by Webvisitor", "context": {"context_item": "..."} } |
Response format | POST - met body bevattende "answers" en "context" JSON formats:{ "answers": ["Each item", "appears as separate chat bubble"], "context": {"other_item": "..."} } |
Chat end endpoint | Wordt gecalld met een POST request door de Userlike chat server als de chat sessie met uw bot eindigt. Er wordt geen antwoord verwacht. |
Request formaat | POST - met body bevattende de "context" JSON format:{ "context": {"other_item": "..."} } |
Response format | Geen antwoord verwacht |
JSON exchange format
De body van elke POST request/response moet een JSON object bevatten. Er zijn drie verschillende JSON formats waaruit dit object kan bestaan:"input", "answers" and "context". Waar "input" en "answers" mutually exclusief zijn, moet het "context" object altijd geleverd worden.
JSON format | Beschrijving |
---|---|
answers | Verstuurd van uw chatbots, "antwoorden" kunnen of een enkele string, of een reeks strings of objecten zijn. Als het een reeks betreft, verschijnt elk item in een afgezonderde chat bubbel in uw Webbezoeker's chat. Voorbeeld:"answers": ["First message sent to Webvisitor", "Second message"] "answers": "Only one message sent to Webvisitor" "answers": [ "The next message is a command", {"command": "push", "value": "/about"} ] |
input | Verstuurd naar uw chatbot, "input" bevat uw Webbezoeker's chat bericht als een enkele string. Voorbeeld:"input": "Incoming message from Webvisitor" |
context | Verstuurd van uw chatbot en herhaald in de respons van uw chat server, "context" kan elk geldig JSON object zijn dat u nodig heeft. Voorbeeld:"context": { "state": "askname", "session_info": { "id": "abcdef" } } |
Maintaining state
We hebben gezien dat de JSON body van elk POST request/response een "context" object moet bevatten. Begonnen door de eerste respons van uw chatbot (framework), echoën alle verdere requests van onze chat server naar uw chatbot altijd het laatste "context" object die uw bot heeft geleverd.
U kunt dit geëchoede "context" object gebruiken om het overzicht te behouden over de chat state in uw chatbot (framework). Een kort voorbeeld:
Request/Response | JSON body |
---|---|
Eerste verzoek door onze chat server als een nieuwe chat start | - |
Eerste chatbot respons zet status in context | { "answers": ["What is your name?"], "context": { "state": "askname" } } |
Volgende chat server request echoes initiële status in context | { "input": "John Doe", "context": { "state": "askname" } } |
Volgende chatbot respons updatet status in context | { "answers": ["And your email address?."], "context": { "state": "askemail" } } |
Volgende chat server request levert geüpdatete status in context | { "input": "john.doe@userlike.com", "context": { "state": "askemail" } } |
Dus, met elke verzoek naar uw chatbot (framework) 'herinnert' onze chat server in welke status de huidige chat sessie is. Let erop dat dit slechts een voorbeeld is en dat u verschillende properties kunt instellen op de "context" object: alles dat u erop instelt, wordt geëchoed door ons volgende request.
Chat Commands
Zodra uw bot is geïntegreerd in de Userlike chat infrastructuur, kan deze communiceren met uw Webbezoekers. Nog beter, het heeft toegang tot de Userlike chat commands, en daarmee volledige controle over de geïnitieerde chat sessie. Dus uw chatbot kan data van uw web bezoeker verzamelen en opslaan, en de bezoeker doorsturen naar specifieke delen van uw website of de huidige chat sessie doorsturen naar een menselijke collega.
U kunt een Userlike chat command als een normaal bericht sturen. U kunt er ook voor kiezen om commands als JSON objecten te versturen. Het moet een member "command" bevatten met de naam van de command, zonder de leidende "$". Als de command een argument vereist, moet het geleverd worden in de member "value", tenzij anders aangegeven.
{ "answers": [ { "command": "screenshot" }, { "command": "push", "value": "/about" } ] }
De volgende commands zijn momenteel beschikbaar om krachtige automatisering op mee te opzetten:
Command | Beschrijving |
---|---|
$screenshot | Neem screenshot van Webbezoeker's browser |
$forward | Verstuur chat door naar een andere operator |
$forward.json | Verwijs chat door naar andere Operator (met JSON response) |
$group | Verwijs chat door naar een andere operator groep |
$group.json | Verwijs chat door naar andere Operator Groep (met JSON response) |
$any | Verwijs chat door naar de volgende beschikbare operator |
$any.json | Verwijs chat door naar de volgende beschikbare Operator (met JSON response) |
$name | Stel de naam van de Webbezoeker in |
$additional01 | Stel extra waarde 1 in |
$additional02 | Stel extra waarde 2 in |
$additional03 | Stel extra waarde 3 in |
$email | Stel de email van de Webbezoeker in |
$locale | Locale instellen voor de chat sessie |
$note | Voeg een privé notitie toe aan het chat transcript |
$send | Verstuur Chat Transcript via email naar de Webbezoeker zodra de chat sessie is beëindigd |
$dispatch | Verstuur huidig Chat Transcript naar gespecificeerd email adres |
$push | Verstuur Webbezoeker naar locale URL |
$download | Bied Webbezoeker gegeven download |
$block | Blokkeer web bezoeker van de chat |
$image | Verstuur een afbeelding naar de Webbezoeker. Details U moet een URL leveren naar het bestand als eerste argument. $image https://example.com/image.png U kunt optioneel een URL naar een thumbnail afbeelding leveren. $image https://example.com/image.png https://example.com/thumbnail.png U kunt een optionele titel leveren, welke ingesloten moet zijn in dubbele quotes. $image https://example.com/image.png "This is an example image" U kunt ook zowel een thumbnail afbeelding en een titel leveren. $image https://example.com/image.png https://example.com/thumbnail.png "This is an example image" In plaats van de command te coderen als een string, kunt u een JSON object sturen:
De members "thumbnail_url" en "title" zijn optioneel. |
$video | Verstuur een video naar de Webbezoeker. Details U moet een URL leveren naar de video als eerste argument. $video https://example.com/video.mp4 U kunt optioneel een URL naar een thumbnail afbeelding leveren. $video https://example.com/video.mp4 https://example.com/thumbnail.jpg U kunt ook een optionele titel leveren, welke ingesloten moet zijn in dubbele quotes. $image https://example.com/video.mp4 "This is an example video" U kunt ook zowel een thumbnail afbeelding en een titel leveren. $image https://example.com/video.mp4 https://example.com/thumbnail.jpg "This is an example video" In plaats van de command te coderen als een string, kunt u een JSON object sturen:
De members "thumbnail_url" en "title" zijn optioneel. Notitie: U moet ervoor zorgen dat de video gecodeerd is in een formaat dat wordt ondersteund door alle web browsers. |
$chips | Verstuur een lijst van voorgedefinieerde antwoorden. Details U moet de lijst van opties leveren, gesepareerd door een semicolon. $chips Yes;No;Maybe later U kunt ook een aparte label voor elk antwoord aanleveren. $chips Yes:Yes please!;No:No thanks!;Maybe later U kunt een optionele titel leveren, welke ingesloten moet zijn in dubbele quotes.$chips Yes;No;Maybe later "Would you like to buy this product?" Notitie: als uw opties de speciale karakters ";", ":" of "\" bevatten, moet u ze escapen met een "\". $chips Yes:Yes please!;No:No thanks!;Maybe later:My answer is\: maybe In plaats van de command te coderen als een string, kunt u een JSON object sturen:
Als u de command verstuurt als JSON object, is special escaping niet nodig. |
$links | Verstuur een lijst van links met een beetje tekst. Details De lijst van links moet u leveren gescheiden door een semicolon. De URL en titel van elke link moet gescheiden zijn door een colon. $links https\://google.com:Google;https\://duckduckgo.com:DuckDuckGo Notitie: u moet de speciale karakters escapen met ";", ":" of "\" met een "\". In plaats van de command te coderen als een string, kunt u een JSON object sturen:
Als u de command verstuurt als JSON object, is special escaping niet nodig. |
$quit | Chat beëindigen |
![macroname] | Verstuur text macro |
Als u succes en error feedback terug wilt ontvangen voor regulaire chat commands (b.v. "$any") in uw bot interface, dan moet u deze optie inschakelen in de bot Operator config, anders worden deze berichten niet teruggeleid in de bot interface.
Als er een JSON command geleverd was, heeft het corresponderende respons object het volgende formaat:
{
type: "info|error",
status: "OperatorStatsError|OK|OperatorNameNotFound|OperatorNotFound|SelfForwardError|OperatorBusy|OperatorNotAvailable|GroupNotFound|GroupNameNotFound|AllOperatorsBusy",
message: "...",
data: {...},
}
Chatbot chat overzicht
We verwelkomen automatisering voor vele taken, maar we willen nog wel de activiteiten van onze chatbot kunnen bekijken. Gelukkig is al uw chatbot activiteit beschikbaar via transcripten in uw Userlike Dashboard, net als met een menselijke Operator.
Verder gaand met het simpele voorbeeld van hierboven, is hier een interactie van een web bezoeker met uw chatbot...

... toont als elk andere chat transcript in het Userlike Dashboard:

U kunt gemakkelijk al uw chatbot interacties filteren voor regulaire audits en checken dat de taken goed worden uitgevoerd. Gefilterde resultaten bevatten ook interacties die alleen geïnitieerd werden door uw chatbot en daarna geswitcht naar een menselijke Operator, zodat u een vol overzicht heeft.

Chatbot Ideeën
We hebben wat ideeën verzameld voor nuttige klanten service chatbot projecten die u kunt integreren met de Userlike chat infrastructuur.
Een simpele service chatbot
Een service chatbot staat altijd klaar. Hij wacht op Webbezoekers, begroet ze, en verzamelt data die nodig is voor goede klantenservice. Zodra hij z'n taak heeft gedaan, stuurt hij de Webbezoeker door naar zijn menselijke collega's.
We bieden een ingebouwde service chatbot Chat Butler, maar u kunt ook uw eigen versie bouwen met geavanceerdere features die beter bij uw use case passen.
Dingen die een service chatbot voor u kan doen | |
---|---|
Spreek uw Webbezoekers aan met uw voorgedefinieerde chat macros | { "answers": ["!hi", "!welcome"], "context": {...} } |
Stel uw Webbezoeker's email adres | { "answers": ["$email %s" % email_from_input], "context": {...} } |
Stel uw Webbezoeker's naam in | { "answers": ["$name %s" % name_from_input], "context": {...} } |
Stuur Webbezoekers door naar welke beschikbare menselijke Operator dan ook | { "answers": ["$any"], "context": {...} } |
Een "deal" bot
De deal bot biedt uw klanten een check voor speciale deals.
Dingen die een bot voor je kan doen | |
---|---|
Vraag uw web bezoekers proactief of ze geïnteresseerd zijn in speciale deals | { "answers": ["Want me to check for special deals?"], "context": {...} } |
Herleid shop API resultaten naar web bezoeker | { "answers": [ "Best deal: http://deal-url", { "command": "chips", "title": "Interested?" "options": ["Yes", "No"] } ], "context": {...} } |
Evalueer web bezoeker's antwoord en verstuur naar product URL | { "answers": ["Here you go!", "$push http://deal-url"], "context": {...} } |
Een route bot
De route bot biedt uw Webbezoekers realtime informatie over hoe uw bedrijf of event te bereiken via openbaar vervoer. Gebaseerd op een locatie geleverd door uw Webbezoeker, vraagt de bot 3rd party diensten op (zoalsBerlin + Brandenburg openbaar vervoer service (VBB) en voorziet ze van de reisroute van het dichtstbijzijnde station naar uw winkel, inclusief dienstregelingen.
Dingen die een route bot voor u kunt doen | |
---|---|
Verzoek uw Webbezoeker's locatie | { "answers": ["Where are you right now?"], "context": {...} } |
3rd party API resultaten terugleiden naar Webbezoeker | { "answers": ["Take line %s at station %s." % (line, station)], "context": {...} } |
Kaart weergeven naar het volgende station en versturen naar de web bezoeker | { "answers": [ "$image %s \"Route to the next station\"" % map_image_url, "Here is also a link to Google Maps: %s" % google_map_url], "context": {...} } |
Bent u geïnteresseerd? We zijn benieuwd wat voor chatbot service u van plan bent te integreren met Userlike! Laat een comment achter, of neem contact op via Facebook, Twitter, of Live Chat.