2017-04-19 4 views
1

私はワトソンの会話APIを使用して天気ボットを構築しています。外部apiからの応答をワトソン対話のダイアログに渡すにはどうすればいいですか?

ユーザが「何の天気ですか」を送信するたびに。私はインテントとエンティティで応答を返します。今、私は天気予報を呼び出して応答を得る。この気象応答をワトソンのダイアログに戻して表示するにはどうすればいいですか?

私はコンテキストオブジェクトを通してレスポンスを送信する必要があると思いますが、レスポンスを渡すにはどのように会話APIを呼び出す必要がありますか?

私はpython apiを使用しています。

答えて

3

この場合、IBMの公式ドキュメントからのAPI Refererenceは、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から1公式のコード例を参照してください:

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を参照してください。

関連する問題