Skip to content

Commit 2a8e7f9

Browse files
Contextualistalfredfrancis
authored andcommitted
trigger API when conversation is complete (alfredfrancis#38)
* trigger API when conversation is complete * fix overriding parameter prompt when conversation is incomplete
1 parent ec30b09 commit 2a8e7f9

File tree

1 file changed

+28
-66
lines changed

1 file changed

+28
-66
lines changed

app/endpoint/controllers.py

Lines changed: 28 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -132,43 +132,9 @@ def api():
132132
resultJson["speechResponse"] = currentNode["prompt"]
133133
else:
134134
resultJson["complete"] = True
135-
136135
context["parameters"] = extractedParameters
137-
138-
try:
139-
if story.apiTrigger:
140-
isJson = False
141-
parameters = extractedParameters
142-
143-
urlTemplate = Template(
144-
story.apiDetails.url, undefined=SilentUndefined)
145-
renderedUrl = urlTemplate.render(**context)
146-
if story.apiDetails.isJson:
147-
isJson = True
148-
requestTemplate = Template(
149-
story.apiDetails.jsonData, undefined=SilentUndefined)
150-
parameters = requestTemplate.render(**context)
151-
152-
result = callApi(renderedUrl,
153-
story.apiDetails.requestType,
154-
parameters, isJson)
155-
156-
else:
157-
result = {}
158-
159-
context["result"] = result
160-
resultTemplate = Template(
161-
story.speechResponse, undefined=SilentUndefined)
162-
resultJson["speechResponse"] = resultTemplate.render(
163-
**context)
164-
except Exception as e:
165-
print(e)
166-
resultJson["speechResponse"] = "Service is not available."
167136
else:
168137
resultJson["complete"] = True
169-
resultTemplate = Template(
170-
story.speechResponse, undefined=SilentUndefined)
171-
resultJson["speechResponse"] = resultTemplate.render(**context)
172138

173139
elif (requestJson.get("complete") is False):
174140
if "cancel" not in story.intentName:
@@ -185,35 +151,6 @@ def api():
185151
context = {}
186152
context["parameters"] = resultJson["extractedParameters"]
187153
context["context"] = requestJson["context"]
188-
try:
189-
if story.apiTrigger:
190-
isJson = False
191-
parameters = resultJson["extractedParameters"]
192-
193-
urlTemplate = Template(
194-
story.apiDetails.url, undefined=SilentUndefined)
195-
renderedUrl = urlTemplate.render(**context)
196-
if story.apiDetails.isJson:
197-
isJson = True
198-
requestTemplate = Template(
199-
story.apiDetails.jsonData, undefined=SilentUndefined)
200-
parameters = requestTemplate.render(**context)
201-
202-
result = callApi(renderedUrl,
203-
story.apiDetails.requestType,
204-
parameters, isJson)
205-
print(result)
206-
else:
207-
result = {}
208-
context["result"] = result
209-
210-
template = Template(
211-
story.speechResponse, undefined=SilentUndefined)
212-
resultJson["speechResponse"] = template.render(
213-
**context)
214-
except Exception as e:
215-
print(e)
216-
resultJson["speechResponse"] = "Service is not available. "
217154
else:
218155
missingParameter = resultJson["missingParameters"][0]
219156
resultJson["complete"] = False
@@ -227,9 +164,34 @@ def api():
227164
resultJson["parameters"] = {}
228165
resultJson["intent"] = {}
229166
resultJson["complete"] = True
230-
template = Template(
231-
story.speechResponse,
232-
undefined=SilentUndefined)
167+
168+
if resultJson["complete"]:
169+
if story.apiTrigger:
170+
isJson = False
171+
parameters = resultJson["extractedParameters"]
172+
173+
urlTemplate = Template(story.apiDetails.url, undefined=SilentUndefined)
174+
renderedUrl = urlTemplate.render(**context)
175+
if story.apiDetails.isJson:
176+
isJson = True
177+
requestTemplate = Template(story.apiDetails.jsonData, undefined=SilentUndefined)
178+
parameters = requestTemplate.render(**context)
179+
180+
try:
181+
result = callApi(renderedUrl,
182+
story.apiDetails.requestType,
183+
parameters,isJson)
184+
except Exception as e:
185+
print(e)
186+
resultJson["speechResponse"] = "Service is not available. "
187+
else:
188+
print(result)
189+
context["result"] = result
190+
template = Template(story.speechResponse, undefined=SilentUndefined)
191+
resultJson["speechResponse"] = template.render(**context)
192+
else:
193+
context["result"] = {}
194+
template = Template(story.speechResponse, undefined=SilentUndefined)
233195
resultJson["speechResponse"] = template.render(**context)
234196
logger.info(requestJson.get("input"), extra=resultJson)
235197
return buildResponse.buildJson(resultJson)

0 commit comments

Comments
 (0)