我正在使用 Oracle 聊天机器人和 Google Home,并且我正在构建一个在 Google 上的应用程序,其数据由 Oracle 机器人处理。但我发现两者之间的沟通存在问题。他们通过 webhook 进行通信,我有一个应用程序接收用户输入并将其发送到聊天机器人,但聊天机器人以异步方式发回回复,我无法在 POST 请求中获取回复数据并显示它给用户,所以我必须向用户发送一个媒体响应来等待机器人的回复,然后调用另一个动作来检查回复是否准备好。
我想同步获得回复,或者至少不必发送媒体响应来等待机器人回复。可能吗?
我必须使用 Oracle 聊天机器人和 Google Home。
这个问题包含我的代码: How to make asynchronous call from external services to actions on google?
编辑:
/text
端点将用户输入发送到我的聊天机器人
app.intent('actions.intent.MAIN', conv => {
console.log('entra en main');
conv.ask('Hi, how is it going?');
});
app.intent('actions.intent.TEXT', (conv, input) => {
var userId = conv.body.user.userId;
console.log(userId);
if(userId && input){
return textFound(conv, input, userId);
}else{
textnotFound(conv);
}
});
express_app.post('/text', app);
聊天机器人将回复发送到另一个端点:
express_app.post('/webhook', bodyParser.json(), (req, res)=>{
message = req.body;
const userId = req.body.userId;
if (!userId) {
return res.status(400).send('Missing User ID');
}
if (webhook.verifyMessageFromBot(req.get('X-Hub-Signature'), req.body, metadata.channelSecretKey)) {
console.log("todo bien");
res.sendStatus(200);
} else {
console.log("Todo mal");
res.sendStatus(403);
}
});
从这里我无法将数据从回复发送到 Google 上的操作,我必须将数据保存在队列中,然后再次调用 TEXT 操作以检查队列。如果可能的话,我想在初始请求的回调中得到回复,或者获得另一种解决方法来解决这个问题。