Last active
November 5, 2018 23:00
-
-
Save priscillaparodi/627bf1431125b4d0d49cf0434c92f2fb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express'); | |
var request = require('request'); | |
var bodyParser = require('body-parser'); | |
var watson = require('watson-developer-cloud'); | |
var app = express(); | |
var contexid = ""; | |
app.use(bodyParser.urlencoded({ extended: false })) | |
app.use(bodyParser.json()) | |
var conversation_id = ""; | |
var w_conversation = watson.conversation({ | |
url: 'https://gateway.watsonplatform.net/conversation/api', | |
username: process.env.CONVERSATION_USERNAME || 'paste conversation api username here', | |
password: process.env.CONVERSATION_PASSWORD || 'paste conversation api password here', | |
version: 'v1', | |
version_date: '2016-07-11' | |
}); | |
var workspace = process.env.WORKSPACE_ID || 'workspaceId'; | |
app.get('/webhook/', function (req, res) { | |
if (req.query['hub.verify_token'] === 'paste FB token here') { | |
res.send(req.query['hub.challenge']); | |
} | |
res.send('Erro de validação no token.'); | |
}); | |
app.post('/webhook/', function (req, res) { | |
var text = null; | |
messaging_events = req.body.entry[0].messaging; | |
for (i = 0; i < messaging_events.length; i++) { | |
event = req.body.entry[0].messaging[i]; | |
sender = event.sender.id; | |
if (event.message && event.message.text) { | |
text = event.message.text; | |
}else if (event.postback && !text) { | |
text = event.postback.payload; | |
}else{ | |
break; | |
} | |
var params = { | |
input: text, | |
// context: {"conversation_id": conversation_id} | |
context:contexid | |
} | |
var payload = { | |
workspace_id: "paste workspace ID here" | |
}; | |
if (params) { | |
if (params.input) { | |
params.input = params.input.replace("\n",""); | |
payload.input = { "text": params.input }; | |
} | |
if (params.context) { | |
payload.context = params.context; | |
} | |
} | |
callWatson(payload, sender); | |
} | |
res.sendStatus(200); | |
}); | |
function callWatson(payload, sender) { | |
w_conversation.message(payload, function (err, convResults) { | |
console.log(convResults); | |
contexid = convResults.context; | |
if (err) { | |
return responseToRequest.send("Erro."); | |
} | |
if(convResults.context != null) | |
conversation_id = convResults.context.conversation_id; | |
if(convResults != null && convResults.output != null){ | |
var i = 0; | |
while(i < convResults.output.text.length){ | |
sendMessage(sender, convResults.output.text[i++]); | |
} | |
} | |
}); | |
} | |
function sendMessage(sender, text_) { | |
text_ = text_.substring(0, 319); | |
messageData = { text: text_ }; | |
request({ | |
url: 'https://graph.facebook.com/v2.6/me/messages', | |
qs: { access_token: token }, | |
method: 'POST', | |
json: { | |
recipient: { id: sender }, | |
message: messageData, | |
} | |
}, function (error, response, body) { | |
if (error) { | |
console.log('Error sending message: ', error); | |
} else if (response.body.error) { | |
console.log('Error: ', response.body.error); | |
} | |
}); | |
}; | |
var token = "paste FB token here"; | |
var host = (process.env.VCAP_APP_HOST || 'localhost'); | |
var port = (process.env.VCAP_APP_PORT || 3000); | |
app.listen(port, host); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, I'm having some trubble implementing it, i've followed this tutorial, but when I send a message on FB, to the bot, my watson application chashes, could some one help-me?