Skip to content

Commit b20018d

Browse files
authored
chore: Dialogflow cx v3 webhook validate form parameter (#410)
* chore: update region tag for webhook validate form parameter snippet * update snippet and test for consistency with NodeJS implementation * linting
1 parent ca90f59 commit b20018d

File tree

2 files changed

+13
-48
lines changed

2 files changed

+13
-48
lines changed

Dialogflow-CX/webhook_validate_form_parameter.py

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -14,58 +14,30 @@
1414

1515
""" DialogFlow CX: webhook to validate or invalidate form parameters snippet."""
1616

17-
# [START dialogflow_v3beta1_webhook_validate_form_parameter]
18-
19-
# TODO (developer): change entry point to validate_parameter in Cloud Function
2017

18+
# [START dialogflow_cx_v3_webhook_validate_form_parameter]
2119

2220
def validate_parameter(request):
23-
"""Webhook to validate or invalidate parameter based on conditions configured by the user."""
24-
25-
request_dict = request.get_json()
26-
param_to_validate = request_dict["pageInfo"]["formInfo"]["parameterInfo"][0][
27-
"value"
28-
]
29-
30-
if param_to_validate > 15:
31-
text = "That is too many! Please pick another number."
32-
param_state = "INVALID"
33-
else:
34-
text = "That is a number I can work with!"
35-
param_state = "VALID"
36-
37-
json_response = {
38-
"fulfillment_response": {
39-
"messages": [
40-
{
41-
"text": {
42-
"text": [
43-
text
44-
], # fulfillment text response to be sent to the agent
45-
},
46-
},
47-
],
48-
},
21+
"""Webhook will validate or invalidate parameter based on logic configured by the user."""
22+
return {
4923
"page_info": {
5024
"form_info": {
5125
"parameter_info": [
5226
{
53-
"displayName": "paramToValidate",
27+
"displayName": 'orderNumber',
5428
"required": True,
55-
"state": param_state,
29+
"state": 'INVALID',
30+
"value": 123,
5631
},
5732
],
5833
},
5934
},
6035
"sessionInfo": {
6136
"parameters": {
62-
# Set session parameter to null if your agent needs to reprompt the user
63-
"paramToValidate": None
37+
# Set session parameter to None if the form parameter is 'INVALID' and your agent needs to reprompt the user
38+
"orderNumber": None,
6439
},
6540
},
6641
}
6742

68-
return json_response
69-
70-
71-
# [END dialogflow_v3beta1_webhook_validate_form_parameter]
43+
# [END dialogflow_cx_v3_webhook_validate_form_parameter]

Dialogflow-CX/webhook_validate_form_parameter_test.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,14 @@ def fixture_app():
2525
return flask.Flask(__name__)
2626

2727

28-
@pytest.mark.parametrize(
29-
"value,expected_response",
30-
[
31-
(15, "That is a number I can work with!"),
32-
(16, "That is too many! Please pick another number."),
33-
],
34-
)
35-
def test_validate_parameter(value, expected_response, app):
28+
def test_validate_parameter(app):
3629
"""Parameterized test for validate form parameter webhook snippet."""
3730

38-
request = {"pageInfo": {"formInfo": {"parameterInfo": [{"value": value}]}}}
31+
request = {"pageInfo": {"formInfo": {"parameterInfo": [{"value": 123}]}}}
3932

4033
with app.test_request_context(json=request):
4134
res = validate_parameter(flask.request)
4235
assert (
43-
res["fulfillment_response"]["messages"][0]["text"]["text"][0]
44-
== expected_response
36+
res["page_info"]["form_info"]["parameter_info"][0]["state"]
37+
== 'INVALID'
4538
)

0 commit comments

Comments
 (0)