May 30, 2017
In diesem Artikel habe ich erklärt, wie man seinen eigenen Chatbot in API.AI erstellt und ihn in Salesforce Lightning verwendet.
Bots sind großartig, ich dachte daran, meinen eigenen persönlichen Assistenten in Salesforce zu haben, der die meisten gängigen Aufgaben für mich erledigen könnte, basierend auf meinen Eingaben auf meine eigene Art und Weise. Dies könnte Millionen von Möglichkeiten eröffnen, um die meisten Aufgaben zu automatisieren, und das Beste daran ist, dass ich mit meinem Bot chatten kann, genauso wie ich mit meinem menschlichen Assistenten chatte (falls ich einen habe :)).
In diesem Artikel habe ich erklärt, wie man seinen eigenen Chatbot erstellt. API.AI und verwenden Sie es in Salesforce Lightning. Ich habe dies erstellt, um mich zu begrüßen, einige grundlegende Fragen zu beantworten und den Bildschirm basierend auf meinem Befehl zu öffnen. Sie können die Demo unten sehen und dieGitHubLink zum Kurs.
API.AI — NLP-System
Node.js - Router
Salesforce Lightning - Benutzeroberfläche und die Regel-Engine, um auf die Antwort zu reagieren.
Sie können sich anmelden / einloggen für API.AI hierund schau dir das anBitte geben Sie den Text ein, den Sie übersetzt haben möchten.Um mehr zu verstehen.
Zuerst musst du einen Agenten erstellen, der der Name des Bots ist. Ich habe meinen Bot "LazyBoy" genannt, du kannst eine Beschreibung, Sprache und andere Eigenschaften hinzufügen.
Sobald der Bot erstellt ist, gibt es 3 Hauptbereiche, auf die Sie sich konzentrieren müssen.
1. Absichten — Das ist der Ort, an dem du die möglichen Benutzerausdrücke eingeben wirst.
2. Entitäten — Objekte, die in den Intents verwendet werden.
3. Training — Hier trainieren Sie den Bot mit Benutzerausdrücken, die Sie/Ihr Bot nicht vorhergesehen haben. Sie können sie analysieren und den Intents hinzufügen.
Absichten selbst werden verschiedene Abschnitte haben, über die ich in diesem Demo sprechen werde.
1. Kontexte - Ich habe die Kontexte für diese Demo ignoriert, aber du kannst mehr erfahren.hierBitte geben Sie einen Text ein, den ich übersetzen soll.
2. Benutzer sagt- Hier finden Sie Beispielausdrücke von Benutzern wie "Können Sie den Lead-Bildschirm öffnen?", "Zeigen Sie mir die Opportunities?" usw.
3. Aktion- Ich habe hier eine Konstante definiert, die für diesen Zweck relevant ist. Zum Beispiel habe ich "OPEN_SCREEN" erwähnt, die ich in der Client-Anwendung verwenden werde, um zu entscheiden, welche Aktion ausgeführt werden soll.
4. Antwort- Verschiedene mögliche Antworten auf Benutzerausdruck.
Entitäten:Hier können Sie verschiedene Entitäten definieren und deren Synonyme angeben. Ein Beispiel für die Entität "Möglichkeit" wären Synonyme wie "Möglichkeiten", "Gelegenheit" usw.
Sobald die Intents, Entities und Aktionen definiert sind, können Sie es mit verschiedenen Benutzerausdrücken ausprobieren, um das Ergebnis zu sehen. Sie können auch die JSON-Antwort sehen, die auf der Client-Seite verwendet wird, um Aktionen auszuführen.
Wichtige Eigenschaften in JSON-Antwort sind:
Aktion Bitte geben Sie einen Text ein, den ich für Sie übersetzen soll.Dies wird im Client verwendet, um zu entscheiden, welche Aktion durchgeführt werden soll.
Please provide the text that you would like me to translate into German. Dies ist ein Flag, um zu überprüfen, ob der Benutzer-Ausdruck vollständig ist oder nicht. Wenn es eine obligatorische Entität gibt, die der Benutzer im Ausdruck nicht erwähnt hat, wird das Flag auf "true" gesetzt.
Parameter - Dies wird die vollständige Parameterliste für diesen Intent haben
Eine sehr einfache Node.js-App, um die Anfrage an die Route weiterzuleiten. API.AI und senden Sie die Antwort zurück an Salesforce. Integration Tab im API.AI Die Konsole verfügt über alle möglichen Integration-SDKs. Für diese Demo habe ich das Node.js-SDK verwendet. BeispielcodehierBitte geben Sie einen Text ein, den ich für Sie übersetzen soll.
Warum ein Middleware? API.AI Kommt mit einem Satz von SDKs, die leider nicht direkt in Lightning/Apex-Klassen verwendet werden können und daher die Node.js-App.
Sie benötigen die folgenden 2 Schlüssel, um den Aufruf zu tätigen. api.ai von der Node.js-App,
1. Client-Zugriffstoken — Du findest dies unter Einstellungen in der Konsole.
2. Sitzungs-ID Dies ist eine eindeutige ID für eine Sitzung. Sie können sie im Node.js-Programm fest codieren (zum Testen) oder vom Salesforce-Client übergeben.
Ich habe eine sehr einfache Komponente erstellt, die eine aura:iteration enthält, um die Chatliste zu durchlaufen, und eine inputText-Steuerung/Komponente.
Und Client-Controller-Code,
({
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);
}
})
und die Apex-Klasse, um den Node.js-Service aufzurufen,
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();
}
}
Schritte zur Erstellung einer Utility-Bar-Komponente:
Gehe zu Einstellungen -> Apps -> App-Manager
Bearbeiten Sie die Verkaufs-App, die die Bearbeitungsseite der App öffnen wird.
Klicken Sie auf die Symbolleiste "Utility Bar" und dann auf "Hinzufügen" von Utility Bar-Elementen.
Wählen Sie das ChatBot-Komponente und fertig.
Dein Chatbot ist bereit. Du findest den gesamten Code hier.hierHoffentlich hilft das!