我想在通信中實現一個簡單的計時器。給定延遲後回覆
我的場景是一個小型的數學培訓師,在5分鐘的正常交互之後,我會通知用戶時間已到。我不想等到用戶完成他的下一個輸入/答案(可選,只是當前沒有輸入)。
有什麼辦法可以「推」一個答案時間爲基礎?
我想在通信中實現一個簡單的計時器。給定延遲後回覆
我的場景是一個小型的數學培訓師,在5分鐘的正常交互之後,我會通知用戶時間已到。我不想等到用戶完成他的下一個輸入/答案(可選,只是當前沒有輸入)。
有什麼辦法可以「推」一個答案時間爲基礎?
對話API不支持推送模式。獲得用戶響應時,您可以檢查計時器並進行適當的響應。
可悲的是,它看起來像他們沒有興趣加入任何形式的延時功能: https://discuss.api.ai/t/adding-a-delay-to-responses-so-it-feels-more-real/108
但是,這是一個原因,建設部署的集成(如Facebook的使者。)和API之間的服務器端解決方案.ai是非常有用的 - 它可以讓你自定義實現,包括髮送由API.ai解決方案之上構建的自定義邏輯觸發的實現。
所以在FB信使的情況下,作爲一個簡單的例子,你可以不喜歡的下方,只是建立任何邏輯要撥打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);
}
});
}
感謝你爲這個官方回答。是否計劃推送消息選項? – rekire
我無法評論未來計劃的功能,但我們非常有興趣從開發人員處獲得此類反饋。 –
推送模式似乎非常適用於我。例如,如果您想要有應用程序提醒用戶在預測的下雨天帶雨傘。而不是讓用戶說:「今天我必須帶傘嗎?」 –