除了Google Assistant应用之外,我所有的集成都使用静态默认响应而不是我托管在服务器上的自定义实现来响应。
我已经检查了来自dialogflow到我服务器的请求和响应json,它们很好...当我从skype发出请求时,我服务器的响应确实具有自定义实现消息,但是skype却显示了我编写的skype的静态响应我的意图是默认的短信标签。请让我知道我需要做什么。谢谢
通过(Skype)进行的预期对话
用户:一些英语单词
代理人(来自配送):英语,这是针对英语的答复
我正在进行的实际对话:
用户:一些英语单词
代理(来自dialogflow静态文本响应):您好..我是来自Skype的默认响应
请注意,这仅发生在facebook Messenger,skype(这些是我已启用的唯一集成)中,而不是在dialogflow模拟器和Google模拟器上的操作中发生。
我认为这个问题来自dialogflow端,因为facebook Messenger和skype都产生相同的行为
const express = require('express')
const bodyParser = require('body-parser')
const {dialogflow,
Permission,
Suggestions,
Carousel,
BrowseCarouselItem,
BrowseCarousel,
Image,}= require('actions-on-google')
const request = require('request')
const dialogflowapp = dialogflow()
const app = express()
app.use(bodyParser.json())
app.set('port', (process.env.PORT || 5000))
const LANGUAGE_INTENT = 'Languages';
const LANGUAGE_TYPE_ENTITY = 'LanguageType';
dialogflowapp.intent(LANGUAGE_INTENT, (conv) => {
const quote_type = conv.parameters[LANGUAGE_TYPE_ENTITY].toLowerCase();
if (quote_type === "telugu") {
conv.ask("Telugu, This response is for telugu");
} else if (quote_type === "english") {
conv.ask("English, this is response is for english");
} else if (quote_type === "hindi") {
conv.ask("Hindi, this response is for Hindi");
} else {
conv.ask("Cann't understand bro");
}
});
dialogflowapp.catch((conv, error) => {
console.error(error);
conv.ask('Something went wrong!');
});
app.post('/webhook',(req,res, next)=>{
console.log(req.body);
next();
}, dialogflowapp);
app.listen(app.get('port'), function () {
console.log('* Webhook service is listening on port:' + app.get('port'))
最佳答案
问题在于您使用的是Google动作库,该库只能创建在Google助手上有效的结果。
如果要发回对其他Dialogflow集成有效的答复,则需要使用dialogflow-fulfillment库。
关于node.js - Skype和Facebook Messenger集成没有响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54107434/