在 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具有应该发送到接口的响应文本。但事实并非如此。

有没有办法实现这一目标?

您问题中的代码使用 Api.ai 的 API,该 API 旨在用于将 Api.ai 代理嵌入到您自己的应用程序中。 这背后的意图是让您实现/使用自己的聊天/消息传递系统,然后通过此 API 将与用户对话中的事件和文本发送到 Api.ai,该 API 将为您提供响应(如您所见(,然后您可以使用来自 API 的这些响应并在您自己的聊天/消息传递系统中响应您的用户: https://docs.api.ai/docs/query

听起来你有兴趣让你的 Api.ai 代理直接与Slack和Skype等聊天平台集成。如果是这种情况,您应该查看 Api.ai 的集成文档:https://docs.api.ai/docs/integrations

相关内容

  • 没有找到相关文章

最新更新