API.ai / Dialogflow 基本文本请求不起作用

API.ai / Dialogflow basic text request not working

const API_AI_TOKEN = 'my token here';
const apiAiClient = require('apiai')(API_AI_TOKEN);

const apiaiSession = apiAiClient.textRequest('hi', {sessionId: 'test'});
apiaiSession.on('response', (response) => {
const result = response.result.fulfillment.speech;
console.log(result);
});
apiaiSession.on('error', error => console.log(error));

我在 Dialogflow small talk 中进行了配置并进行了测试,我应该会收到 "Hey",但我收到 nothing.. 我尝试了客户端和开发令牌

问题是我必须用 apiaiSession.end()

结束会话

Problem is i'm obligated to end session with apiaiSession.end()

您没有义务结束会话。你在做什么,它不是一个会话,它是一个请求。

没有 .end() 请求永远不会完全发送,因此您永远不会得到回复。

I tried both client and dev token

您必须使用开发令牌。


代码应该是这样的:

const API_AI_TOKEN = 'my token here'; // You need dev token
const apiAiClient = require('apiai')(API_AI_TOKEN);

const request = apiAiClient.textRequest('hi', {sessionId: 'test'});

request.on('response', (response) => {
    const result = response.result.fulfillment.speech;
    console.log(result);
});

request.on('error', error => console.log(error));

request.end(); // This.

会话由 Dialogflow 管理,因此只要您为每次用户交互发送相同的 sessionId,就没问题。

来自docs

User entities and sessions last 30 minutes.