2017-04-19 97 views
1

我正在使用watson會話api構建天氣機器人。如何將外部API的響應傳遞給watson對話中的對話框?

每當用戶發送'什麼是天氣'。我收到意向和實體的迴應。現在我打電話給天氣api並獲得迴應。如何將這個天氣響應傳遞迴watson對話框來顯示?

我認爲我必須通過上下文對象發送響應,但是如何調用對話api來傳遞響應?

我正在使用python api。

回答

3

在這種情況下,來自IBM官方文檔的API Referece顯示瞭如何在Watson Conversation Service中發送消息的一個示例。

檢查這個例子:

import json 
from watson_developer_cloud import ConversationV1 

conversation = ConversationV1(
    username='{username}', 
    password='{password}', 
    version='2017-04-21' 
) 

# Replace with the context obtained from the initial request 
context = {} 

workspace_id = '25dfa8a0-0263-471b-8980-317e68c30488' 

response = conversation.message(
    workspace_id=workspace_id, 
    message_input={'text': 'Turn on the lights'}, 
    context=context 
) 

print(json.dumps(response, indent=2)) 

在這種情況下,從用戶發送信息,你可以使用message_input,並像沃森發送消息時,您可以使用output。 如果你的參數設置爲response,例如,你可以使用:

#Get response from Watson Conversation 
responseFromWatson = conversation.message(
    workspace_id=WORKSPACE_ID, 
    message_input={'text': command}, 
    context=context 
) 

IBM Developers見一個正式的示例代碼:

if intent == "schedule": 
      response = "Here are your upcoming events: " 
      attachments = calendarUsage(user, intent) 
     elif intent == "free_time": 
      response = calendarUsage(user, intent) 
     else: 
      response = responseFromWatson['output']['text'][0] //THIS SEND THE MESSAGE TO USER 

    slack_client.api_call("chat.postMessage", as_user=True, channel=channel, text=response, 
         attachments=attachments) 

使用此派:

response = responseFromWatson['output']['text'][0]; 
if intent == "timeWeather": 
     response = "The Weather today is: " +yourReturnWeather 

來自IBM Developer這個項目的教程here

該示例將與Slack集成,但您可以看到一個很好的示例,在project中完成了您想要的操作。

參見official documentation

相關問題