Предоставить ответ от сервиса к интерфейсу через 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

Другие вопросы по тегам