Nlp 迟延答复

Nlp 迟延答复,nlp,dialogflow-es,actions-on-google,Nlp,Dialogflow Es,Actions On Google,我想在通信中实现一个简单的计时器 我的场景是一个小的数学培训师,在5分钟的正常交互之后,我想通知用户时间到了。我不想等到用户完成下一个输入/回答(如果当前没有输入,则可选) 有没有办法“推送”基于时间的应答?对话API不支持推送模式。当您收到用户的响应时,您可以检查计时器并做出适当的响应。遗憾的是,他们似乎对添加任何延迟功能都不感兴趣: 但这就是为什么在部署集成(例如Facebook messenger)和API.ai之间构建服务器端解决方案非常有用的原因之一——它让您可以自定义实现,包括发送

我想在通信中实现一个简单的计时器

我的场景是一个小的数学培训师,在5分钟的正常交互之后,我想通知用户时间到了。我不想等到用户完成下一个输入/回答(如果当前没有输入,则可选)


有没有办法“推送”基于时间的应答?

对话API不支持推送模式。当您收到用户的响应时,您可以检查计时器并做出适当的响应。

遗憾的是,他们似乎对添加任何延迟功能都不感兴趣:

但这就是为什么在部署集成(例如Facebook messenger)和API.ai之间构建服务器端解决方案非常有用的原因之一——它让您可以自定义实现,包括发送由您自己在API.ai解决方案之上构建的自定义逻辑触发的实现

因此,在FB messenger的情况下,作为一个简单的示例,您可以执行以下操作,只需构建您想要调用sendTextMessage的任何逻辑:

函数sendTextMessage(接收方ID,文本){
sendTypingOff(接收方ID)
var messageData={
收件人:{
id:recipientId
},
信息:{
文本:文本
}
}
callSendAPI(messageData);
}
//调用FB messenger API。如果成功,则返回消息ID作为响应
函数callSendAPI(messageData){
请求({
uri:'https://graph.facebook.com/v2.6/me/messages',
qs:{
访问\u令牌:config.FB\u页面\u令牌
},
方法:“POST”,
json:messageData
},函数(错误、响应、正文){
如果(!error&&response.statusCode==200){
var recipientId=body.recipientId\u id;
var messageId=body.message\u id;
if(messageId){
console.log(“已成功将id为%s的邮件发送给收件人%s”,
messageId,recipientId);
}否则{
console.log(“已成功调用收件人%s的发送API”,
接受者ID);
}
}否则{
console.error(“调用发送API失败”,response.statusCode,response.statusMessage,body.error);
}
});

}
到目前为止,这可能与您无关,但我正在为可能访问这里的人写一个答案

您可以通过Dialogflow(以前的API.ai)中的
事件
来实现这一点。看见

您根据一个名为“时间到了”的事件定义意图,并在五分钟后有一个计时器触发此事件。

谢谢您的正式回答。这样的推送消息选项是计划好的吗?我不能对未来计划的功能发表评论,但我们非常有兴趣从开发者那里得到这样的反馈。推送模型似乎非常适合我。例如,如果你想要一个应用程序,提醒用户在预测的雨天带伞。DannySullivan说,这将是非常危险的,很难实现功能,我认为谷歌选择将这种推送通知限制在一些高优先级的事情上(航班变更等),而不是让用户说:“我今天必须带伞吗?”用户100%希望看到的是一个非常明智的选择。这个问题更多的是关于“在同一次对话中,我想在一段时间后提醒用户”。@LeonNichols在我的一个用例中,我需要在后端运行一些更复杂的东西,这可能需要几分钟,因此我想先回答“正在处理”,然后一分钟后回答实际的响应。显然,如果用户退出对话,他就再也听不到了。有没有一种方法可以通过实现触发事件,但在意图处理程序之外?