Предоставить ответ от сервиса к интерфейсу через 5 секунд через api.ai
Мой сервис отправляет обратно асинхронный ответ обратно на api.ai после запроса, который отображается в пользовательском интерфейсе (Slack, Skype и т. Д.).
Но я не могу отправить ответ на интерфейс после того, как запрошенная операция завершена (через 5 секунд).
const apiai = require('apiai');
module.exports = (server, config) => {
const app = apiai('<Client access token>');
server.post('/', (req, resp) => {
let body = '';
req.on('data', function(data) {
body += data;
});
req.on('end', function() {
body = JSON.parse(body);
resp.send({
speech: 'Please wait...',
});
const sessionId = body.sessionId;
setTimeout(() => {
const evt = app.eventRequest({
name: 'testevent', data: { },
}, { sessionId });
evt.on('response', resp2 => {
debugger;
});
evt.on('error', err => {
debugger;
});
evt.end();
}, 10 * 1000);
});
});
};
В объекте resp2
Я вижу result.fulfillment.speech
имеет текст ответа, который должен был быть отправлен на интерфейс. Но это не так.
Есть ли способ добиться этого?
1 ответ
Код в вашем вопросе использует API Api.ai, который предназначен для встраивания вашего агента Api.ai в ваше собственное приложение. Цель этого заключается в том, чтобы вы внедрили / использовали свою собственную систему чата / обмена сообщениями, а затем отправили события и текст из беседы с вашими пользователями в Api.ai через этот API, который предоставит вам ответы (как вы видели) и затем вы можете использовать эти ответы из API и отвечать вашим пользователям в своей собственной системе чата / обмена сообщениями: https://docs.api.ai/docs/query
Похоже, вы заинтересованы в интеграции вашего агента Api.ai с чат-платформами, такими как Slack и Skype напрямую. В этом случае вам следует обратиться к документации по интеграции Api.ai: https://docs.api.ai/docs/integrations