2017-04-19 2 views
1

Je construis un bot météo en utilisant l'API de conversation de Watson.Comment passer la réponse de l'API externe à la boîte de dialogue dans la conversation watson?

Chaque fois qu'un utilisateur envoie «quel est le temps de». Je reçois une réponse avec des intentions et des entités. Maintenant, je fais un appel à une api météo et obtenir une réponse. Comment transmettre cette réponse météo à la boîte de dialogue watson pour qu'elle s'affiche?

Je pense que je dois envoyer la réponse via l'objet contexte, mais comment puis-je faire l'appel à la conversation api pour passer la réponse? J'utilise python api.

Répondre

3

Dans ce cas, le document API Referecence from IBM, montre un exemple d'envoi de message dans Watson Conversation Service.

Vérifiez cet exemple:

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)) 

Dans ce cas, pour envoyer le message d'un utilisateur, vous pouvez utiliser message_input, et d'envoyer un message comme Watson, vous pouvez utiliser output. Si votre paramètre est réglé sur response, par exemple, vous pouvez utiliser:

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

Voir un exemple de code officiel de 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) 

Utilisez cette option pour envoyer:

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

Didacticiel d'IBM Developer pour ce projet here.

Cet exemple va s'intégrer avec Slack, mais vous pouvez voir un bon exemple pour faire ce que vous voulez dans ce project.

Voir official documentation.