2017-08-17 47 views
1

在會話中有以下節點。我想提出行動並根據需要調用API。在成功的情況下,將顯示output.text [0]和誤差情況下從output.text [1]在watson會話中設置多個輸出文本值

{ 
    "output": { 
    "text": { 
     "values": [ 
     "I want to get this with success scenario", 
     "I want to get this with error scenario" 
     ], 
     "selection_policy": "sequential" 
    }, 
    "action": "MyAction" 
    } 
} 

但是,當我在訪問node.js的這次談話節點,它總會給第一個獲得價值,即'我想要得到這個成功的場景'它永遠不會給出像'我想得到這個錯誤情況'的輸出。

如何解決此問題?

回答

1

這真的很複雜,因爲取決於您在Chatbot中的業務角色。

但是,如果你想根據條件回答一個消息......

您可以在輸出中看到的selection_policysequential,在換句話說,首先會顯示1句話,只是如果條件再次由用戶訪問,將顯示第二條消息。 「

」返回數組中值的順序取決於屬性selection_policy。「

解決此問題的更好方法是在每個短語的Node流內創建兩個條件。

例如第一個條件流量:

if bot recognizes successScenario response "I want to get this with success scenario" 

在另一個第二個條件流量:

if bot recognizes errorScenario response "I want to get this with error scenario" 

並與您的NodeJS應用程序將獲得根據條件的值。

查看官方文檔關於這個here,搜索關於selection_policy

+1

謝謝你的回答和URL(它是2天前添加的)。該鏈接提供了適當的解決方案我贊成你的答案。 –

1

我已通過以下方式解決了該問題。

{ 
    "output": { 
    "text": { 
     "values": [ 
     { 
      "successMsg": "success Message", 
      "errorMsg": "error message" 
     } 
     ] 
    }, 
    "action": "MyAction" 
    } 
} 

原因不去新的節點,因爲這個動作,我需要創建API和基於API調用的成功和失敗,顯示這個信息給用戶。然後,它將有助於節省一次往返,因爲不需要將結果狀態再次發送給對話服務,它將基於該節點本身來識別要呈現給用戶的內容。