0

I am trying to create a very simple chatbot using dialogflow that I can ask a question and get a fulfillment message back. I was able to use python's dialogflow library to get this working, but when I tried to change it to a regular request it did not work. Here is the working code:

import os
import dialogflow
from google.api_core.exceptions import InvalidArgument

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = PATH_TO_JSON

DIALOGFLOW_PROJECT_ID = PROJECT_ID
DIALOGFLOW_LANGUAGE_CODE = 'en'
SESSION_ID = 'me'

text_to_be_analyzed = "How are my stocks"

session_client = dialogflow.SessionsClient()
session = session_client.session_path(DIALOGFLOW_PROJECT_ID, SESSION_ID)
text_input = dialogflow.types.TextInput(text=text_to_be_analyzed, language_code=DIALOGFLOW_LANGUAGE_CODE)
query_input = dialogflow.types.QueryInput(text=text_input)
try:
    response = session_client.detect_intent(session=session, query_input=query_input)
except InvalidArgument:
    raise

#print(response)
print("Response:", response.query_result.fulfillment_text)

and it prints

your stocks are good

Using the request library I tried a similar setup and wrote this:

my_key = CLIENT_ACCESS_TOKEN

url = "https://api.dialogflow.com/v1/query?v=20170712"
headers = {
  'Authorization': 'Bearer ' + my_key ,
  'Content-Type' : 'application/json'
}
body = {
    "lang": "en",
    "query": "how are my stocks",
    "sessionId": "me",
}
r.post(url,headers=headers,data=body).text

and I get an error:

{
  "status": {
    "code": 400,
    "errorType": "bad_request",
    "errorDetails": "Cannot parse json. Please validate your json. Code: 400"
  }
}

I am getting my example from this url for the query post request. The reason I want this to work as an http request is because I would like to be able to use it in other applications and want to have a consistent way of accessing my intents. Thanks for the help!

Sairaj Sawant
  • 1,842
  • 1
  • 12
  • 16
mradey
  • 202
  • 1
  • 12

1 Answers1

0

Upon more research I found the error at this link. So the question was less about integration with dialogflow and more about making a request in python.

mradey
  • 202
  • 1
  • 12