我的服务在请求后将异步响应发送回 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