Я работаю с чат-ботами Oracle и Google Home, и я создаю приложение в действиях в Google, данные которого обрабатываются ботом Oracle. Но я обнаружил проблему со связью между ними. Они общаются через веб-перехватчик, у меня есть приложение, которое принимает вводимые пользователем данные и отправляет их чат-боту, но чат-бот отправляет ответ асинхронным способом, и я не могу взять данные ответа в запросе POST и показать его. пользователю, поэтому я должен отправить медиа-ответ пользователю, чтобы дождаться ответа от бота, и после вызова другого действия, чтобы проверить, готов ли ответ.
Я хотел бы получать ответ синхронно или, по крайней мере, не отправлять медиа-ответ, чтобы ждать ответа бота. Является ли это возможным?
Мне нужно использовать чат-ботов Oracle и Google Home.
Этот вопрос содержит мой код: Как выполнять асинхронные вызовы внешних служб для действий в 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, мне нужно сохранить данные в очереди и после вызова действия ТЕКСТ еще раз, чтобы проверить очередь. Я хотел бы получить ответ в ответ на первоначальный запрос, если это возможно, или найти другой способ решения этой проблемы.