0

首先,我是 Google Assistant 的新手,所以我对自己在做什么一无所知。我正在尝试使用以下代码在网络服务器上的外部 js 文件中发出 webhook 请求:

// Project Requirements
const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

// Constructor
const app = conversation();

// Search Function
app.handle('contacctSearch', async conv => {

// Get Intent Parameters
const query = $session.params.contactName.original;
const pageType = $session.params.pageType.original;
if (pageType.toUpperCase() == 'WHITE PAGES') {
    const res = await fetch(`https://www.findyello.com/barbados/white-pages/?search=${query}`);
    console.log(res);
    // Parse res into text
    const text = res;
    conv.add(`Here is your first result. ${text}`);
} 

else if (pageType.toUpperCase() =='YELLOW PAGES') {
    const res = await fetch(`https://www.findyello.com/barbados/?search=${query}`);
    console.log(res);
    // Parse res into text
    const text = res;
    conv.add(`Here is your first result. ${text}`);
} 

else if (pageType.toUpperCase() =='GOVERNMENT PAGES') {
    const res = await fetch(`https://www.findyello.com/barbados/government/?search=${query}`);
    console.log(res);
    // Parse res into text
    const text = res;
    conv.add(`Here is your first result. ${text}`);
}
});

但是,我收到一个错误:来自 webhook 的无效响应:无法将 JSON 转换为 ExecuteHttpResponse..

{
"responseJson": "// console.log('Working!');\r\n\r\n// Project Requirements\r\nconst { conversation } 
= require('@assistant/conversation');\r\nconst functions = require('firebase-functions');\r\n\r\n// 
Constructor\r\nconst app = conversation();\r\n\r\n// Search Function\r\napp.handle('contacctSearch', 
async conv => {\r\n\r\n    // Get Intent Parameters\r\n    const query = 
$session.params.contactName.original;\r\n    const pageType = $session.params.pageType.original;\r\n    
if (pageType.toUpperCase() == 'WHITE PAGES') {\r\n        const res = await 
fetch(`https://www.findyello.com/barbados/white-pages/?search=${query}`);\r\n        
console.log(res);\r\n        // Parse res into text\r\n        const text = res;\r\n        
conv.add(`Here is your first result. ${text}`);\r\n    } \r\n    \r\n    else if 
(pageType.toUpperCase() =='YELLOW PAGES') {\r\n        const res = await 
fetch(`https://www.findyello.com/barbados/?search=${query}`);\r\n        console.log(res);\r\n        
// Parse res into text\r\n        const text = res;\r\n        conv.add(`Here is your first result. 
${text}`);\r\n    } \r\n    \r\n    else if (pageType.toUpperCase() =='GOVERNMENT PAGES') {\r\n        
const res = await fetch(`https://www.findyello.com/barbados/government/?search=${query}`);\r\n        
console.log(res);\r\n        // Parse res into text\r\n        const text = res;\r\n        
conv.add(`Here is your first result. ${text}`);\r\n    }\r\n    });\r\n"
}

任何帮助都会很棒!

4

1 回答 1

0

在我看来,您的文件并未被理解为代码,而是纯文本文件。有几件事要改变:

  1. 请务必在文件底部声明一个 Firebase 函数:
app.handle('contacctSearch', async conv => {
  // ...
})

exports.fulfillment = app
  1. 似乎您将 webhook 指向您的文本文件,而不是确保它可以作为可执行文件使用。您应该确保部署您正在使用 Firebase 函数的函数,然后使用 Firebase 为您提供的 webhook URL:
firebase deploy --only functions

它将是格式中的一个函数,带有您的项目 ID:

https://us-central1-MY_PROJECT_ID.cloudfunctions.net/fulfillment
于 2021-02-02T17:15:34.190 回答