projects/conversational-commerce-agent/conversational-agent-examples/assets/food-ui/static/helper.js (79 lines of code) (raw):

// Copyright 2024 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. /* eslint-disable */ // listen to df-response window.addEventListener('df-response-received', (event) => { event.preventDefault(); // Dialogflow Messenger won't handle the responses. // check if flow's responses is available let flowPayloads = extractFlowPayloads(event.detail.raw); // check if generative responses is available let genResponses = extractGenerativeResponses(event.detail.raw); if (genResponses) { try { const dfMessenger = document.querySelector('df-messenger'); for (const res of genResponses) { if (res.hasOwnProperty('agentUtterance')) { dfMessenger.renderCustomText(res.agentUtterance.text, true); } else if (res.hasOwnProperty('toolUse')) { let customPayload = extractCustomPayload(res.toolUse); if (customPayload) { dfMessenger.renderCustomCard(customPayload[0]); } } else if ( res && res.flowInvocation && res.flowInvocation.flowState == 'OUTPUT_STATE_OK') { for (const flowPayload of flowPayloads) { dfMessenger.renderCustomCard(flowPayload.payload.richContent[0]); } } } } catch (err) { console.log('error in generative response: ', err); } } if (flowPayloads) { try { const dfMessenger = document.querySelector('df-messenger'); for (const res of flowPayloads) { for (const flowPayload of flowPayloads) { dfMessenger.renderCustomCard(flowPayload.payload.richContent[0]); } } } catch (err) { console.log('error in generative response: ', err); } } }); function extractCustomPayload(dfTool) { try { if (dfTool.outputActionParameters && dfTool.outputActionParameters['200'] && dfTool.outputActionParameters['200'].payload && dfTool.outputActionParameters['200'].payload.richContent) { var richContent = dfTool.outputActionParameters['200'].payload.richContent; console.log(richContent); return richContent; } else { return false } } catch (err) { console.log('error in tool response: ', err); } } function extractGenerativeResponses(dfResponse) { try { let dfActions = dfResponse.queryResult.generativeInfo.actionTracingInfo.actions; let filteredActions = dfActions.filter(action => !action.hasOwnProperty('userUtterance')); if (filteredActions.length > 0) return filteredActions; return false; } catch (err) { return false; } } function extractFlowPayloads(dfResponse) { try { let flowResponses = dfResponse.queryResult.responseMessages; let flowPayloads = flowResponses.filter(response => response.hasOwnProperty('payload')); if (flowPayloads.length > 0) return flowPayloads; return false; } catch (err) { return false; } }