簡體   English   中英

Dialogflow:在給定的上下文中強制某些意圖無效

[英]Dialogflow: Forcing certain intents to be invalid given context

我想使用對話流制作敲門笑話,但我發現我可以從另一個上下文中觸發一個敲門笑話。 例如,我有以下意圖:

  • knockknock:訓練短語(敲敲笑話),響應(敲敲)
    • whothere:訓練短語(who dat),響應(annie,orange)
      • Punkline-annie:訓練短語(annie who),響應(annie thing you can do I can do better)
      • 妙語-橙色:訓練短語(橙色誰),響應(橙色你高興...)

如果機器人用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM