Chatbot Integratie

Deze tutorial verwijst naar Userlike's live chat product. Voor Userlike's Unified Messaging tutorials, klik hier.

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.

TopicBeschrijving
Chatbot integratieHoe uw chatbot in onze infrastructuur te integreren
Chatbot HTTP APIDetails van chatbot HTTP API protocol
Chat commandsChat commands die uw chatbot kan gebruiken
Chatbot chat overzichtMonitor uw chatbot's chat activiteit
Chatbot ProjectenIdeeë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 EndpointBeschrijving
Chat start endpointWordt 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 eindpuntWordt 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 endpointWordt 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 gedragsmodusBeschrijving
Service TijdDe bot is alleen online buiten de Service Tijd gedefinieerd voor de Widget. Tijdens Service Tijd worden alle chats naar uw menselijke Operators geleid.
FailoverDe bot is altijd online, maar neemt alleen chats aan als er geen andere operators beschikbaar zijn.
MenselijkDe bot is altijd online en neemt chats aan precies zoals een normale menselijke operator.
FirewallDe 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 EndpointBeschrijving
Chat start endpointWordt gecalld door de Userlike chat server als een Webbezoeker een nieuwe chat start met uw bot. Uw antwoord wordt gestuurd naar de Webbezoeker.
Request formaatGET - zonder parameters
Response formatPOST - met body bevattende "answers" en "context" JSON formats:
{
    "answers": ["Each item", "appears as separate chat bubble"],
    "context": {"context_item": "..."}
}
Chat bericht eindpuntWordt 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 formaatPOST - met body bevattende "input" en "context" JSON formats:
{
    "input": "Message sent by Webvisitor",
    "context": {"context_item": "..."}
}
Response formatPOST - met body bevattende "answers" en "context" JSON formats:
{
    "answers": ["Each item", "appears as separate chat bubble"],
    "context": {"other_item": "..."}
}
Chat end endpointWordt gecalld met een POST request door de Userlike chat server als de chat sessie met uw bot eindigt. Er wordt geen antwoord verwacht.
Request formaatPOST - met body bevattende de "context" JSON format:
{
    "context": {"other_item": "..."}
}
Response formatGeen 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 formatBeschrijving
answersVerstuurd 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"}
]
inputVerstuurd naar uw chatbot, "input" bevat uw Webbezoeker's chat bericht als een enkele string. Voorbeeld:
"input": "Incoming message from Webvisitor"
contextVerstuurd 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/ResponseJSON 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:

CommandBeschrijving
$screenshotNeem screenshot van Webbezoeker's browser
$forwardVerstuur chat door naar een andere operator
$forward.jsonVerwijs chat door naar andere Operator (met JSON response)
$groupVerwijs chat door naar een andere operator groep
$group.jsonVerwijs chat door naar andere Operator Groep (met JSON response)
$anyVerwijs chat door naar de volgende beschikbare operator
$any.jsonVerwijs chat door naar de volgende beschikbare Operator (met JSON response)
$nameStel de naam van de Webbezoeker in
$additional01Stel extra waarde 1 in
$additional02Stel extra waarde 2 in
$additional03Stel extra waarde 3 in
$emailStel de email van de Webbezoeker in
$localeLocale instellen voor de chat sessie
$noteVoeg een privé notitie toe aan het chat transcript
$sendVerstuur Chat Transcript via email naar de Webbezoeker zodra de chat sessie is beëindigd
$dispatchVerstuur huidig Chat Transcript naar gespecificeerd email adres
$pushVerstuur Webbezoeker naar locale URL
$downloadBied Webbezoeker gegeven download
$blockBlokkeer web bezoeker van de chat
$imageVerstuur een afbeelding naar de Webbezoeker.

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:
{
    "answers": [
        {
            "command": "image",
            "url": "https://example.com/image.png",
            "thumbnail_url": "https://example.com/thumbnail.png",
            "title": "This is an example image"
        }
    ]
}

De members "thumbnail_url" en "title" zijn optioneel.
$videoVerstuur een video naar de Webbezoeker.

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:
{
    "answers": [
        {
            "command": "video",
            "url": "https://example.com/video.mp4",
            "thumbnail_url": "https://example.com/thumbnail.jpg",
            "title": "This is an example video"
        }
    ]
}

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.
$chipsVerstuur een lijst van voorgedefinieerde antwoorden.

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:
{
    "answers": [
        {
            "command": "chips",
            "choices": [
                {"title": "Yes"},
                {"title": "No"},
                {"title": "Maybe later", "message": "My answer is: maybe"}
            ],
            "title": "Would you like to buy this product?"
        }
    ]
}

Als u de command verstuurt als JSON object, is special escaping niet nodig.
$linksVerstuur een lijst van links met een beetje tekst.
$quitChat 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.