Я создаю чат-бота с Dialogflow, для которого мне нужно связать Google Таблицы, которые будут действовать как бэкэнд для извлечения данных из листов и отображения в чат-боте при срабатывании намерения. Как мне сделать это, любое руководство или документация, которые могут помочь?
Как связать Google Таблицы с Google Dialogflow для извлечения данных из таблиц?
Ответы (2)
Если вы используете NodeJS в качестве веб-перехватчика,
Вы можете использовать электронную таблицу Google для хранения и получения данных,
const GoogleSpreadsheet = require('google-spreadsheet');
const sheets = new GoogleSpreadsheet(process.env.sheetid);
// sheetid can be found from sheet URL
const config = {
client_email: process.env.client_email,
private_key: process.env.private_key
}
// config detail you need to get from your service account
// share your client_email in your sheet with read and write permission
sheets.useServiceAccountAuth(config, () => {
sheets.getInfo(async (err, info) => {
sheet = info.worksheets
// same way you will be getting your sheet data in sheet variable
await addRows(sheet, 0, rowData)
// rowData => your data
})
});
function addRows(sheet, index, data) { // index is your sheet tab index
return new Promise((resolve, reject) => {
sheet[index].addRow(data, (err, row) => {
if (err) return reject(err)
resolve(row)
})
})
}
Я делаю это с помощью Vodo Drive, хотя на данный момент только для действий.
Убедитесь, что вы понимаете, как использовать Google OAuth, чтобы получить от пользователя разрешение на доступ к своим таблицам с помощью API Таблиц. Это первое, что вам нужно понять, прежде чем вы сможете сделать это с помощью Dialogflow.
Самая большая проблема, с которой вы столкнетесь при использовании Dialogflow для общей интеграции ботов, - это возможность узнать, какую учетную запись Google они используют (и что у вас есть токены OAuth). Если вы создаете для действий, у вас есть возможность использовать привязку учетных записей. Другие интеграции также могут передавать информацию о пользователе, но это не гарантируется.