2016-07-26 31 views
0

meine Frage ist, in Bezug auf die Umsetzung dieses Snippet Javascript-Code in meine chatbot:Wo der Postbacks Aktionscode in einer Javascript chatbot implementieren

smooch.conversations.sendMessage('app_5790dca8cab9a256005c0148', { 
    text: 'Fabric', 
    role: 'appMaker', 
    actions: [ 
     { 
     type: 'postback', 
     text: 'fabric instructions', 
     payload: 'egg_fabric' 
     } 
    ] 
}).then(() => { 
    // async code 
}); 

Hier meine script.json-Datei, die auf dieses spezielle Postbacks entspricht :

"HOW CAN I REMOVE AN EGG STAIN?": "%[Fabric](postback:egg_fabric) %[Surface](postback:egg_surface)", 

der Grund, warum ich diese Frage bin gefragt ist, weil ich mehr „Oberfläche“ und „Stoff“ Tasten auf der ganze Chat, aber ich mag die Antwort die bot spuckt entspricht die Frage zuletzt gefragt haben will . Danke für Ihre Hilfe!

Antwort

0

Was Sie suchen, kann nicht mit script.json getan werden, müssen Sie Ihre eigenen Statusfunktionen in script.js und Ihre eigene Postback-Ereignisbehandlung definieren.

In this answer gibt es einige Vorschläge, wie Sie dies mit dem Projekt smooch-bot-example tun können (was ist, was estherbot gegabelte wurde).

Um Ihnen einen Kontext zu geben, ist script.js der Ort, an dem die eigentliche Bot-Logik lebt. Die script.json, die Sie betrachten, ist eine Verknüpfung, die mit estherbot eingeführt wurde, um die Definition von Keyword-basierten Bots zu erleichtern. Wenn dein Bot läuft, wird der JSON tatsächlich in Zustände kompiliert, als ob die in script.js definiert wären. Was Sie erstellen möchten, erfordert mehr als das statische Schlüsselwort -> Verhaltenszuordnung, auf die script.json beschränkt ist.

0

auf Andrew Antwort oben Nach oben:

prüfen smooch-bot-example Projekt, aber vielleicht durch einen Blick in die Webhook Implementierungsdatei für die Postbacks (Heroku/index.js) anstelle der Bot Logik/Flussdefinitionsdatei starten (script.js) Datei:

Innerhalb des Heroku-Ordners des Repos, überprüfen Sie die Datei index.js. Die Funktion handlePostback(req, res) (sollte in der Nähe von Zeile 109 sein) sollte Ihnen den Einstieg erleichtern. Z.B. ändern Sie es in etwa so:

Von:

function handlePostback(req, res) { 
    const postback = req.body.postbacks[0]; 
    if (!postback || !postback.action) { 
     res.end(); 
    } 
    createBot(req.body.appUser).say(`You said: ${postback.action.text} (payload was: ${postback.action.payload})`) 
    .then(() => res.end()); 
} 

Um so etwas wie:

function handlePostback(req, res) { 
    const postback = req.body.postbacks[0]; 
    if (!postback || !postback.action) { 
     res.end(); 
    } 

    const sAction = postback.action.text; 
    const sPayload = postback.action.payload; 

    switch (sAction) { 
    case "egg_fabric": 
     //something something 
     break; 
    case "egg_surface": 
     //something something 
     break;   
    default: 
     //something something 
    } 
} 

Hoffnung, das hilft.