Я создаю чат-бота (Line), интегрируем диалог Google Dialogflow, используя node.js.
Я могу создать чат-бота линии из пользовательского ввода текста и выводить только некоторый текст.
И я могу создать код из пользовательской команды отправки, отправляемой в Google Dialogflow, и диалогового потока, используя текст технического ответа NLU для пользователя.
Но мне нужно, чтобы пользователь ввел текст, отправленный в диалоговый поток, и ответил текстом (A), затем отправьте текст (A) (после кода добавьте некоторый код кнопки шаблона) в Line bot create покажите пользователю некоторую кнопку шаблона.
Как можно интегрировать код из двух частей, чтобы получить вводимый пользователем текст и через результат диалогового потока, используя результат отправки на сервер линейного бота?
ввод пользователя -> dialogflow -> mycode (добавить строку вызова кнопки шаблона) -> linbot -> кнопку шаблона показа бота пользователю
Спасибо.
// ----------------------------------
Код моего диалогового потока:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(
bodyParser.urlencoded({
extended: true
})
)
app.use(
bodyParser.json()
)
app.post("/webhook", function(req,res){
console.log(JSON.stringify(req.body, null, 2))
var intent = req.body.queryResult.intent.displayName;
var entityCity = req.body.queryResult.parameters["geo-city"];
if(intent === 'myIntent')
{
// here I need call bot.on method, but I don't known how to do.
// return res.json({
fulfillmentText: `I known your mean.`
});
}
else
{
return res.json({
fulfillmentText: `i am not sure your mean`
});
}
})
app.listen(process.env.PORT || 5566, function(){
console.log('server start ...');
})
// ----------------------------------
Код чата My Line:
var linebot = require('linebot');
var express = require('express');
var app = express();
const bot = linebot({
channelId: 'mychannelId',
channelSecret: 'mychannelSecret',
channelAccessToken: 'mychannelAccessToken'
});
bot.on('message',function(event) {
console.log('bot');
console.log(event);
var msg = event.message.text;
// here can add some template button code and reply to user.
});
const linebotParser = bot.parser();
app.post('/webhook', linebotParser);
var server = app.listen(process.env.PORT || 8080, function() {
var port = server.address().port;
});
// --------------------
Код чата My Line другая версия:
const line = require('@line/bot-sdk');
const express = require('express');
const lineConfig = {
channelAccessToken: process.env.HEROKU_LINE_CHANNEL_ACCESS_TOKEN,
channelSecret: process.env.HEROKU_LINE_CHANNEL_SECRET
};
const client = new line.Client(lineConfig);
const app = express();
app.post('/webhook', line.middleware(lineConfig), function(req, res) {
Promise
.all(req.body.events.map(handleEvent))
.then(function(result) {
res.json(result);
});
});
function handleEvent(event) {
switch (event.type) {
case 'join':
case 'follow':
return client.replyMessage(event.replyToken, {
type: 'text',
text: 'hello~'
});
case 'message':
switch (event.message.type) {
case 'text':
return client.replyMessage(event.replyToken, {
type: 'text',
text: (event.message.text+'~yu')
});
}
}
}
app.listen(process.env.PORT || 3000, function(){
console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
});