在给定的延迟后回复
Reply after a given delay
我想在通信中实现一个简单的计时器。
我的场景是一个小型数学训练器,你训练 5 分钟,在 5 分钟的正常交互之后,我想通知用户时间到了。我不想等到用户完成他的下一个 input/answer(如果当前没有输入则可选)。
有什么方法可以"push"基于回答时间吗?
Conversation API 不支持推送模型。当您收到用户响应时,您可以检查计时器并做出适当的响应。
遗憾的是,他们似乎对添加任何类型的延迟功能不感兴趣:
Dialogflow (API.AI) Forums :- Adding a delay to responses, so it feels more real
但这就是为什么在部署集成(例如 Facebook Messenger)和 API.ai 之间构建服务器端解决方案如此有用的原因之一 - 它让您可以自定义实现,包括发送由您自己触发的实现建立在 API.ai 解决方案之上的自定义逻辑。
因此,以 FB Messenger 为例,您可以执行如下操作,并构建您想要调用 sendTextMessage 的任何逻辑:
function sendTextMessage(recipientId, text) {
sendTypingOff(recipientId)
var messageData = {
recipient: {
id: recipientId
},
message: {
text: text
}
}
callSendAPI(messageData);
}
//Calls FB messenger API. If successful returns a message ID in response
function callSendAPI(messageData) {
request({
uri: 'https://graph.facebook.com/v2.6/me/messages',
qs: {
access_token: config.FB_PAGE_TOKEN
},
method: 'POST',
json: messageData
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
var recipientId = body.recipient_id;
var messageId = body.message_id;
if (messageId) {
console.log("Successfully sent message with id %s to recipient %s",
messageId, recipientId);
} else {
console.log("Successfully called Send API for recipient %s",
recipientId);
}
} else {
console.error("Failed calling Send API", response.statusCode, response.statusMessage, body.error);
}
});
}
目前这可能与您无关,但我正在为可能访问这里的人写一个答案。
您可以在 Dialogflow(以前的 API.ai)中使用 events
实现此功能。参见 here for documentation。
您根据名为 time-is-up
的事件定义一个意图,并在您的一端设置一个计时器,它会在五分钟后触发此事件。
我想在通信中实现一个简单的计时器。
我的场景是一个小型数学训练器,你训练 5 分钟,在 5 分钟的正常交互之后,我想通知用户时间到了。我不想等到用户完成他的下一个 input/answer(如果当前没有输入则可选)。
有什么方法可以"push"基于回答时间吗?
Conversation API 不支持推送模型。当您收到用户响应时,您可以检查计时器并做出适当的响应。
遗憾的是,他们似乎对添加任何类型的延迟功能不感兴趣: Dialogflow (API.AI) Forums :- Adding a delay to responses, so it feels more real
但这就是为什么在部署集成(例如 Facebook Messenger)和 API.ai 之间构建服务器端解决方案如此有用的原因之一 - 它让您可以自定义实现,包括发送由您自己触发的实现建立在 API.ai 解决方案之上的自定义逻辑。
因此,以 FB Messenger 为例,您可以执行如下操作,并构建您想要调用 sendTextMessage 的任何逻辑:
function sendTextMessage(recipientId, text) {
sendTypingOff(recipientId)
var messageData = {
recipient: {
id: recipientId
},
message: {
text: text
}
}
callSendAPI(messageData);
}
//Calls FB messenger API. If successful returns a message ID in response
function callSendAPI(messageData) {
request({
uri: 'https://graph.facebook.com/v2.6/me/messages',
qs: {
access_token: config.FB_PAGE_TOKEN
},
method: 'POST',
json: messageData
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
var recipientId = body.recipient_id;
var messageId = body.message_id;
if (messageId) {
console.log("Successfully sent message with id %s to recipient %s",
messageId, recipientId);
} else {
console.log("Successfully called Send API for recipient %s",
recipientId);
}
} else {
console.error("Failed calling Send API", response.statusCode, response.statusMessage, body.error);
}
});
}
目前这可能与您无关,但我正在为可能访问这里的人写一个答案。
您可以在 Dialogflow(以前的 API.ai)中使用 events
实现此功能。参见 here for documentation。
您根据名为 time-is-up
的事件定义一个意图,并在您的一端设置一个计时器,它会在五分钟后触发此事件。