Technologie & KIEinblickeÜber unsKarriere Gespräch buchen

Blog-Artikel

Salesforce-Chatbot mit API.AI in 60 Minuten erstellen

Salesforce-Chatbot erstellen: API.AI, Node.js und Lightning verbinden und in weniger als 60 Minuten einen persönlichen Assistenten entwickeln.

Autor

Incresco Team

Incresco Team

Incresco Redaktion

Bots sind faszinierend. Deshalb wollte ich einen eigenen persönlichen Assistenten in Salesforce entwickeln, der häufige Aufgaben anhand meiner Eingaben so erledigt, wie ich es brauche. Daraus ergeben sich unzählige Möglichkeiten, wiederkehrende Abläufe zu automatisieren.

Das Beste daran: Ich kann mit dem Bot so kommunizieren wie mit einem menschlichen Assistenten – falls ich einen hätte. In diesem Artikel zeige ich, wie Sie mit API.AI einen eigenen Chatbot erstellen und ihn in Salesforce Lightning integrieren. Mein Bot begrüßt mich, beantwortet einfache Fragen und öffnet auf Befehl den passenden Bildschirm. Die folgende Animation zeigt die Demo; den vollständigen Quellcode finden Sie auf GitHub.

Demo eines Salesforce-Lightning-Chatbots mit API.AI

Bausteine zum Erstellen eines Salesforce-Chatbots

  1. API.AI – System zur Verarbeitung natürlicher Sprache

  2. Node.js – Router

  3. Salesforce Lightning – Benutzeroberfläche und Regel-Engine zur Verarbeitung der Antwort

API.AI-Agent für den Salesforce-Chatbot einrichten

Sie können sich bei API.AI registrieren oder anmelden. Dieses Video vermittelt weitere Grundlagen.

Erstellen Sie zunächst einen Agenten. Sein Name ist zugleich der Name des Bots. Ich habe meinen Bot „LazyBoy“ genannt. Zusätzlich können Sie eine Beschreibung, die Sprache und weitere Eigenschaften festlegen.

Konfiguration des API.AI-Agenten LazyBoy für den Salesforce-Chatbot

Nach dem Erstellen des Bots sind drei zentrale Bereiche wichtig:

  1. Intents: Hier hinterlegen Sie mögliche Formulierungen der Nutzer.

  2. Entitäten: Diese Objekte werden innerhalb der Intents verwendet.

  3. Training: Hier trainieren Sie den Bot mit Formulierungen, die weder Sie noch der Bot zuvor berücksichtigt haben. Sie können diese analysieren und anschließend den passenden Intents hinzufügen.

Intents konfigurieren

Intents umfassen mehrere Bereiche. Für diese Demo habe ich die folgenden verwendet:

  1. Contexts: Kontexte habe ich in dieser Demo nicht berücksichtigt. Weitere Informationen finden Sie in der Dokumentation.

  2. User says: Hier erfassen Sie beispielhafte Formulierungen wie „Kannst du die Lead-Ansicht öffnen?“ oder „Zeige mir Opportunities“.

  3. Action: Hier habe ich für jeden Intent eine feste, passende Aktion definiert. Im Beispiel verwende ich OPEN_SCREEN. Die Client-Anwendung entscheidet anhand dieses Werts, welche Aktion ausgeführt werden soll.

  4. Response: Dieser Bereich enthält verschiedene mögliche Antworten auf die Nutzereingabe.

Entitäten und Synonyme definieren

Für eine Entität lassen sich verschiedene Synonyme festlegen. Zur Entität „Opportunity“ könnten beispielsweise „Opps“, „Opp“ und „Opportunities“ gehören.

Sobald Intents, Entitäten und Aktionen definiert sind, können Sie unterschiedliche Nutzereingaben testen und das Ergebnis prüfen. Zusätzlich sehen Sie die JSON-Antwort, anhand derer die Client-Anwendung eine Aktion ausführt.

Die wichtigsten Eigenschaften der JSON-Antwort sind:

  • action: Anhand dieses Werts entscheidet der Client, welche Aktion ausgeführt wird.

  • actionIncomplete: Dieses Flag zeigt an, ob eine Nutzereingabe vollständig ist. Fehlt eine erforderliche Entität, die der Nutzer in seiner Formulierung nicht genannt hat, erhält das Flag den Wert true.

  • parameters: Enthält die vollständige Parameterliste für den jeweiligen Intent.

Node.js-Middleware mit API.AI verbinden

Eine einfache Node.js-Anwendung leitet die Anfrage an API.AI weiter und sendet die Antwort zurück an Salesforce. Auf der Registerkarte „Integration“ in der API.AI-Konsole finden Sie die verfügbaren Integrations-SDKs. Für diese Demo habe ich das Node.js-SDK verwendet. Beispielcode ist im zugehörigen npm-Paket verfügbar.

Warum ist eine Middleware erforderlich? API.AI stellt mehrere SDKs bereit. Diese lassen sich jedoch nicht direkt in Salesforce Lightning oder einer Apex-Klasse verwenden. Deshalb übernimmt die Node.js-Anwendung die Vermittlung.

Um API.AI aus der Node.js-Anwendung aufzurufen, benötigen Sie zwei Schlüssel:

  1. Client access token: Diesen finden Sie in den Einstellungen der Konsole.

  2. SessionId: Diese ID identifiziert eine Sitzung eindeutig. Für Tests können Sie sie fest in der Node.js-Anwendung hinterlegen oder vom Salesforce-Client übergeben.

Salesforce-Lightning-Komponente für den Chatbot erstellen

Ich habe eine einfache Komponente erstellt. Sie enthält eine aura:iteration, die durch die Chatliste iteriert, sowie eine inputText-Komponente.

Der Code des Client-Controllers sieht so aus:

({
    postUserChat: function(component, event, helper) {
        if (event.getParams().keyCode !== 13) {
            return;
        }
        var chatList = component.get("v.chatList");
        var action = component.get("c.postChatText");
        chatList.push({"chatText": component.get("v.userChat"), "userName": 'Me: '});
        action.setParams({"chatText": component.get("v.userChat")});
        component.set("v.userChat", "");
        action.setCallback(this, function(response) {
            var data = JSON.parse(response.getReturnValue());
            chatList.push({"chatText": data.result.fulfillment.speech, "userName": 'Personal Assistant: '});
            component.set("v.chatList", chatList);
            var navigateUrl = "";
            if (!data.result.actionIncomplete && data.result.action === 'OPEN_SCREEN') {
                switch (data.result.parameters.SFObjectEntities) {
                    case 'Opportunity':
                        navigateUrl = "/006/o";
                        break;
                    case 'Lead':
                        navigateUrl = "/00Q/o";
                        break;
                    case 'Task':
                        navigateUrl = "00T/o";
                        break;
                    default:
                        navigateUrl = "";
                        break;
                }
                navigateUrl && $A.get("e.force:navigateToURL").setParams({
                    "url": navigateUrl,
                    "isredirect": false
                }).fire();
            }
        });
        $A.enqueueAction(action);
    }
})

Die folgende Apex-Klasse ruft den Node.js-Dienst auf:

public with sharing class HandlerChatBot {
    @AuraEnabled
    public static string postChatText(string chatText) {
        Http http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint('https://chatbotmiddleware.azurewebsites.net/chat/');
        request.setMethod('POST');
        request.setHeader('Content-Type', 'application/json;charset=UTF-8');
        request.setBody('{"chatText":"' + chatText + '"}');
        HttpResponse response = http.send(request);
        
        // Parse the JSON response
        if (response.getStatusCode() != 201) {
            System.debug('The status code returned was not expected: ' +
                        response.getStatusCode() + ' ' + response.getStatus());
        } else {
            System.debug(response.getBody());
        }
        
        return response.getBody();
    }
}

Chatbot zur Salesforce Utility Bar hinzufügen

Gehen Sie wie folgt vor, um die Komponente in der Utility Bar einzurichten:

  • Navigieren Sie zu Setup → Apps → App Manager.

  • Bearbeiten Sie die Sales App. Dadurch öffnet sich die Seite „Edit App“.

  • Wählen Sie Utility Bar und klicken Sie auf Add Utility Bar Items.

  • Wählen Sie die ChatBot-Komponente aus – fertig.

Ihr Salesforce-Chatbot ist jetzt einsatzbereit. Die vollständige Codebasis finden Sie auf GitHub. Ich hoffe, diese Anleitung hilft Ihnen weiter.

Bereit, das Experimentieren zu beenden und
in den produktiven Betrieb zu starten?