我的服务在请求之后向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具有响应文本,该文本应该已经发送到接口。但事实并非如此。
有没有办法做到这一点?
发布于 2017-06-27 02:37:07
你的问题中的代码使用了Api.ai的API,该API用于将Api.ai代理嵌入到您自己的应用程序中。这背后的意图是让您实现/使用您自己的聊天/消息传递系统,然后通过此接口将与用户对话中的事件和文本发送到Api.ai,它将为您提供响应(如您所见),然后您可以使用来自API的响应并在您自己的聊天/消息传递系统中响应您的用户:https://docs.api.ai/docs/query
听起来您有兴趣让您的Api.ai代理直接与Slack和Skype等聊天平台集成。如果是这样的话,你应该看看Api.ai的集成文档:https://docs.api.ai/docs/integrations
https://stackoverflow.com/questions/44673208
复制相似问题