2016-09-24 80 views
2

使用情況下,我想實現如下對話流位置:沃森對話:如何保持額外的用戶輸入

  1. 用戶請求一個網頁的一部分進行朗讀, (Watson STT)
  2. 將STT請求傳遞給對話(通過應用服務器)並進行解釋;例如,「讀取指令」,「讀取背景」,「播放註釋」等。響應表明部分類型(離開了現在的提示,如果部分類型是不正確的)
  3. 應用服務器通過播放所要求部分
  4. 用戶請求暫停,停止的音頻(沃森TTS)響應用戶,繼續或重播所選片段(STT)

這是第4步,我遇到了問題。如果請求暫停,停止或繼續,那麼可能會由單獨的#intent處理這些請求,並且應用服務器會相應地將命令傳遞給控制檯。但是,如果請求重播,那麼我需要知道最初請求的是哪一部分類型。我有一種感覺,應用程序服務器需要設置上下文才能使這項工作,但我不清楚閱讀文檔如何做到這一點。任何例子或文件非常讚賞。

回答

1

每個JSON響應都是對話的路線圖。因此,如果您從響應中獲取相關的System + Context對象,則可以將它反饋回來以獲取較早的響應。

這是接近它的一種方法。

要捕獲上下文變量中的意圖/實體,您可以在輸出節點(高級)中執行以下操作。

{ 
    "output": {}, 
    "context": { 
    "lastIntent": "<? intents[0].intent ?>", 
    "lastConfidence": "<? intents[0].confidence ?>", 
    "lastEntity": "<? entities[0].value ?>" 
    } 
} 

在當前時間,它只會在您將其保存爲文本值時才起作用。所以你不能做到以下幾點:

"confidence": <? intents[0].confidence ?>, 

在你的條件節點,可以這樣做:

intents[0].intent == context.lastIntent 
+0

謝謝,西蒙。到目前爲止,我一直試圖使用api工具來開發對話框,但有限的額外編碼,但是當我開發服務器端時,我將添加更多信息,例如您建議的。看到我的答案,我可以提出一個替代方法。我不確定這是最好的還是最終的最終流程,但現在確實可行。 – LWK69

1

我會嘗試當我到編碼的應用服務器西蒙的建議,但現在我發現了一種使用API​​工具來做我想做的事情的方法。下面是相關的對話流的圖像:

enter image description here

用戶說「閱讀成分」,這觸發#play_element + @recipeElement條件。然後,如果他們說「暫停」,Watson意識到它引用了@recipeElement條件。說「繼續」或「重放」也是指同一個元素。 「停止」,但是結束循環。現在,我只需要弄清楚如何處理說停頓,繼續或重播後他們說停止 - 目前它回到#play_element條件,因爲任何其他條件似乎不工作。