2017-07-17 81 views
3

選擇的選項,我在API.AI和谷歌的行動相當新。我有一個由履行產生的物品清單。我想獲取用戶選擇的選項。我試過閱讀文檔,但我似乎無法理解它。網絡掛接生成的列表獲取由用戶

https://developers.google.com/actions/assistant/responses#handling_a_selected_item

我也嘗試設置跟進的意圖,但它不會工作。它總是最終提供回退響應。

我試圖尋找一個產品或東西,它的結果使用列表選擇的格式顯示。我想獲取我選擇的選項。這是一個search_product意圖和我有一個跟進的意圖choose_product

enter image description here

enter image description here

enter image description here

+0

您可以添加一些您遇到問題的意圖截圖嗎?特別是,顯示你認爲你在處理列表結果的意圖。 – Prisoner

+0

請檢查我添加的截圖和解釋。謝謝 – lemonade

+0

對不起,我不清楚。你可以顯示search_product意圖和fetch_product意圖的api.ai屏幕截圖嗎? – Prisoner

回答

2

你有兩個選擇,以獲得在谷歌目錄/轉盤選擇事件在操作信息API.AI:

  1. 使用API​​。AI的actions_intent_OPTION事件

由於囚犯已經提到的,您可以創建actions_intent_OPTION意圖。此意圖將匹配包含列表/輪播選擇as documented here的查詢。

  • 使用一個網絡掛接
  • API.AI將通過列表/轉盤選擇您的網絡掛接其可通過任一被檢索:)

    甲使用Google's Action on Google Node.js client library using the app.getContextArgument() method

    B)在請求的主體中使用originalRequest JSON屬性向webhook檢索列表/輪播選擇事件。列表/轉盤選擇事件網絡掛接請求的結構看起來是這樣的:當從列表中選擇一個項目

    { 
        "originalRequest": { 
        "data": { 
         "inputs": [ 
         { 
          "rawInputs": [ 
          { 
           "query": "Today's Word", 
           "inputType": "VOICE" 
          } 
          ], 
          "arguments": [ 
          { 
           "textValue": "Today's Word", 
           "name": "OPTION" 
          } 
          ], 
          "intent": "actions.intent.OPTION" 
         } 
         ], 
        ... 
    
    +0

    根據你的觀點(2),使用webhook本身並不能解決問題,因爲API.AI仍然必須首先將其與Intent匹配。您可以將回退意圖設置爲使用webhook,但需要處理邏輯並確定它是否從列表中進入(如果是,則列出哪個列表)。 – Prisoner

    1

    這是一個側身回答你的問題 - 但如果你是新來操作,然後這可能是因爲你並沒有真正理解設計自己行爲的最佳方法。

    而不是專注於更高級的響應類型(如列表),而是專注於對話您想要與您的用戶。不要試圖限制他們的迴應 - 擴展你認爲你能接受的東西。專注於基本的對話元素和基本的對話反應。

    一旦實現了一個很好的交談,那麼你就可以回去,並添加其幫助的談話內容。該名單應該是一個什麼樣的建議,用戶可以,而不是他們必須做什麼限制。

    隨着會話接口,我們必須考慮的對話框之外。

    +1

    實際上,該列表非常重要,因爲它顯示的結果與用戶正在搜索的內容相匹配。關於基本的回答,我沒有任何問題。我只想知道如何獲取從列表/輪播選擇器中選擇的選項。 – lemonade

    -1

    我認爲這個問題是由點擊列表上(而不是被口語)與actions_intent_OPTION事件結束了,所以API.AI需要你做產生的響應兩件事情之一:

    1. 無論是創建一個Intent這一事件(和其他情況下,如果你想,以幫助確定哪個列表被處理)是這樣的:

    enter image description here

  • 或者用你想要的特定上下文創建回退意向(即 - 不是你的默認回退意向)。
  • 後者似乎是最好的方法,因爲它也將涵蓋語音響應。

    (或者兩者都做,我猜。)

    1

    包括在你試圖觸發意圖的情況下,部分「actions_intent_OPTION」 /旋轉木馬(兩種工作)。 然後可使用此功能的代碼,你會在你的網絡掛接,而不是getContextArguments()或getItemSelected()觸發:

    const param = assistant.getArgument('OPTION'); 
    

    OR app.getArgument( '選項');

    取決於你命名你的ApiAiApp(即):

    let Assistant = require('actions-on-google').ApiAiAssistant; 
    
    const assistant = new Assistant({request: req, response: response}); 
    

    然後,繼續它是如何在這個例子中的其餘部分做了列表/旋轉木馬助手的文件中。我不知道爲什麼這會起作用,但是這種方法明顯從JSON請求中檢索actions_intent_OPTION參數。

    +0

    這只是*一行*作爲答案扔進去。沒有像樣的格式,沒有解釋。您能否詳細說明如何以及爲何解決這個問題? –

    +0

    我嘗試了所有其他方法,例如使用getContextArgument()或getItemSelected(),但它們並不像我在文檔中所說的那樣工作。我使用其他方法訪問參數,嘗試'assistant.getArgument('OPTION')',同時將事件'actions_intent_OPTION'添加到從列表或輪播中選擇項目時將觸發的意圖的事件部分。它適用於我,但我不明白爲什麼這種方式有效,這與文檔中所說的不同。 – gnuhc