Skip to content

Commit

Permalink
feat: add Webhook samples (#259)
Browse files Browse the repository at this point in the history
* add webhook-configure-session-parameter-enable-agent-response sample and test

Change-Id: Ia8593160ed33060eb497a15723b21c1221ce55c9

* add webhook-configure-session-parameter-trigger-transition sample and test

Change-Id: I118abb59182879b6969018da97d04eea0b8daeb0

* add webhook-configure-optional-or-required-form-parameters sample and test

Change-Id: I7cbfeb11cece7ccf873dbc7a6dd7cff9ae264ffe

* add configure-session-parameters sample and test

Change-Id: Ib9f1a110473751508b50259c4696593580c64a91

* fix form parameter path

Change-Id: I6411000a7d0240d7552d725c2fd1049be781a9ab

* add webhook-validate-form-parameter sample and test

Change-Id: I82097be3fc3f91651c88b99c7431ebb602c42c66

* add cx to region tag

Change-Id: I6640604512c27a341ab8e26238bf8c3fbd1e77ef

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* fix test

Change-Id: Icc70e18b40d8684c7909e8383b4c226fa94a162b

* fix region tag

Change-Id: I0fe3849c0eaf12eaf247088993898cbb47dace44

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
  • Loading branch information
aribray and gcf-owl-bot[bot] authored Apr 29, 2022
1 parent 7b8af69 commit 7a82ee6
Show file tree
Hide file tree
Showing 10 changed files with 747 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

// Copyright 2021 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

const {assert} = require('chai');
const {describe, it} = require('mocha');
const webhook = require('../webhook-configure-optional-or-required-form-parameters');
const number = 100;

describe('configure optional or required form parameter', () => {
it('should test that webhook sets parameter as required', async () => {
const request = {
body: {
fulfillmentInfo: {
tag: 'required',
},
pageInfo: {
formInfo: {
parameterInfo: [
{
displayName: 'number',
value: number,
},
],
},
},
},
};
const temp = JSON.stringify(request);
let response = '';

const res = {
send: function (s) {
response = JSON.stringify(s);
},
};

webhook.configureOptionalFormParam(JSON.parse(temp), res);
assert.include(response, 'This parameter is required.');
});

it('should test that webhook sets parameter as optional', async () => {
const request = {
body: {
fulfillmentInfo: {
tag: 'optional',
},
pageInfo: {
formInfo: {
parameterInfo: [
{
displayName: 'number',
value: number,
},
],
},
},
},
};
const temp = JSON.stringify(request);
let response = '';

const res = {
send: function (s) {
response = JSON.stringify(s);
},
};

webhook.configureOptionalFormParam(JSON.parse(temp), res);
assert.include(response, 'This parameter is optional.');
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

// Copyright 2021 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

const {assert} = require('chai');
const {describe, it} = require('mocha');
const webhook = require('../webhook-configure-session-parameters-enable-agent-response');
const number = 100;

describe('enable agent response', () => {
it('should test webhook increases value of session parameter', async () => {
const request = {
body: {
fulfillmentInfo: {
tag: 'increase number',
},
sessionInfo: {
parameters: {
number: number,
},
},
},
};
const temp = JSON.stringify(request);
let response = '';

const res = {
send: function (s) {
response = JSON.stringify(s);
},
};

webhook.enableAgentResponse(JSON.parse(temp), res);
assert.include(response, 'increased value');
});

it('should test webhook decreases value of session parameter', async () => {
const request = {
body: {
fulfillmentInfo: {
tag: 'decrease number',
},
sessionInfo: {
parameters: {
number: number,
},
},
},
};
const temp = JSON.stringify(request);
let response = '';

const res = {
send: function (s) {
response = JSON.stringify(s);
},
};

webhook.enableAgentResponse(JSON.parse(temp), res);
assert.include(response, 'decreased value');
});
});
79 changes: 79 additions & 0 deletions dialogflow-cx/test/webhook-configure-session-parameters-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

// Copyright 2021 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

const {assert} = require('chai');
const {describe, it} = require('mocha');
const webhook = require('../webhook-configure-session-parameters');

describe('configure session parameters', () => {
it('should test that webhook adds new session parameter', async () => {
const request = {
body: {
fulfillmentInfo: {
tag: 'month',
},
},
};
const temp = JSON.stringify(request);
let response = '';

const res = {
send: function (s) {
response = JSON.stringify(s);
},
};

webhook.configureSessionParams(JSON.parse(temp), res);
assert.include(response, 'January');
});

it('should test that webhook configures session parameter', async () => {
const request = {
body: {
fulfillmentInfo: {
tag: 'year',
},
},
};
const temp = JSON.stringify(request);
let response = '';

const res = {
send: function (s) {
response = JSON.stringify(s);
},
};

webhook.configureSessionParams(JSON.parse(temp), res);
assert.include(response, '1999');
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

const {assert} = require('chai');
const {describe, it} = require('mocha');
const uuid = require('uuid');
const webhook = require('../webhook-configure-session-parameters-trigger-transition.js');

// variables to construct path to target page
const location = 'global';
const projectId = process.env.GCLOUD_PROJECT;
const flowId = '00000000-0000-0000-0000-000000000000';
const pageId = `temp_page_${uuid.v4()}`;
const agentId = '4e2cb784-012c-48b2-9d8c-a877d3be3437';
const targetPage = `projects/${projectId}/locations/${location}/agents/${agentId}/flows/${flowId}/pages/${pageId}`;

const number = 100;

const request = {
body: {
targetPage: targetPage,
fulfillmentInfo: {
tag: 'configure-session-parameter-trigger-transition',
},
sessionInfo: {
parameters: {
number: number,
},
},
},
};

describe('trigger transition', () => {
it('should test that webhook response contains target page', async () => {
const temp = JSON.stringify(request);
let response = '';

const res = {
send: function (s) {
response = JSON.stringify(s);
},
};

webhook.triggerTransition(JSON.parse(temp), res);
assert.include(response, pageId);
});
});
Loading

0 comments on commit 7a82ee6

Please sign in to comment.