Dialogflow ES curl to specific custom environments

Dialogflow ES curl to specific custom environments

Problem Description:

I have Dialogflow ES angent with a version.
With "Draft" version in Dialogflow, I can call curl command and get response like below.

curl 
-H "Content-Type: application/json; charset=utf-8"  
-H "Authorization: Bearer <token>"  
-d "{"queryInput":{"text":{"text":"バージョン","languageCode":"ja"}},"queryParams":{"source":"DIALOGFLOW_CONSOLE","timeZone":"Asia/Tokyo","sentimentAnalysisRequestConfig":{"analyzeQueryTextSentiment":true}}}" 
"https://dialogflow.googleapis.com/v2/projects/<project_name>/agent/sessions/<session_id>:detectIntent"

When I tried to access custom version, I got 404 in response text like below.

curl 
-H "Content-Type: application/json; charset=utf-8"  
-H "Authorization: Bearer <token>"  
-d "{"queryInput":{"text":{"text":"バージョン","languageCode":"ja"}},"queryParams":{"source":"DIALOGFLOW_CONSOLE","timeZone":"Asia/Tokyo","sentimentAnalysisRequestConfig":{"analyzeQueryTextSentiment":true}}}" 
"https://dialogflow.googleapis.com/v2/projects/<project_name>/agent/environments/DEV/sessions/<session_id>:detectIntent"
<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 404 (Not Found)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
  </style>
  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
  <p><b>404.</b> <ins>That’s an error.</ins>
  <p>The requested URL <code>/v2/projects/%3Cproject_name%3E/agent/environments/DEV/sessions/%3Csession_id%3E:detectIntent</code> was not found on this server.  <ins>That’s all we know.</ins>

I followed the guid in Dialogflow ES Documentation.

I made the active environments Dialogflow console.

Environments tab

The active status

Does anybody know how to curl to custome environment?

Solution – 1

For testing your agent in a custom environment alter the endpoint URL to

https://dialogflow.googleapis.com/v2/projects/my-project-id/agent/environments/<env-name>/users/-/sessions/123456789:detectIntent

curl command:

curl -X POST 
    -H "Authorization: Bearer $(gcloud auth print-access-token)" 
    -H "x-goog-user-project: PROJECT_ID" 
    -H "Content-Type: application/json; charset=utf-8" 
    -d @request.json 
    "https://dialogflow.googleapis.com/v2/projects/my-project-id/agent/environments/<env-name>/users/-/sessions/123456789:detectIntent"

Solution – 2

Like @SakshiGat mentioned, the curl URL was invalid.

Invalid URL:
"https://dialogflow.googleapis.com/v2/projects/<project_name>/agent/environments/DEV/sessions/<session_id>:detectIntent"

Valid URL:
"https://dialogflow.googleapis.com/v2/projects/<project_id>/agent/environments/DEV/users/-/sessions/<session_id>:detectIntent"

Rate this post
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept
Reject