[英]Dialogflow: Forcing certain intents to be invalid given context
我想使用對話流制作敲門笑話,但我發現我可以從另一個上下文中觸發一個敲門笑話。 例如,我有以下意圖:
如果機器人用 annie 響應,我可以用 orange who 響應,並得到這個笑話的橙色妙語。 我怎樣才能防止這種情況發生? 我只希望能夠在其意圖的響應為橙色時調用橙色妙語。
我認為您需要研究如何通過 fulfillment/webhook 發送響應以及上下文如何工作。 在您的 whosthere 意圖中,您可以通過履行發送響應並適當地設置上下文。 例如:如果您回答“annie”,請設置 annie 特定上下文(例如,punchline-annie-context)並將punchline-annie-context 設置為punchline-annie 意圖的輸入上下文。 這樣,您可以確保只有 whosthere 的響應是“annie”時才能激活妙語安妮。
謝謝@andreas030241 提供的信息。 通過學習如何使用履行,我弄清楚了如何讓邏輯發揮作用。 我在內聯編輯器中設置了 knockknock-whosethere 意圖的響應,並創建了一個關聯的上下文名稱,然后我將其用作我想要有效的任何妙語意圖的輸入上下文。 示例代碼如下。 非常感謝!
function punchline(agent) {
var names = [`Annie`,`Orange`,`Lena`,`Quiche`,`Wa`,`A little old lady`];
var context_names = ['annie-punchline','orange-punchline','lena-punchline','quiche-punchline','wa-punchline','alittleoldlady-punchline'];
var number = Math.floor(Math.random() * names.length);
agent.add(names[number]);
agent.setContext({
name: context_names[number],
lifespan: 1,
});
}
let intentMap = new Map();
intentMap.set('knockknock-whosethere', punchline);
agent.handleRequest(intentMap);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.