如何使用Google Sheet与Dialogflow保存LINE聊天机器人接收的用户输入消息
LINE+Dialogflow聊天机器人用户消息存储至Google Sheet实现方案
1. 完成LINE与Dialogflow的基础绑定
首先确认LINE Channel已和Dialogflow完成对接:进入Dialogflow控制台的「Integrations」板块,找到LINE入口,填入LINE Developer后台对应Channel的Secret、Access Token完成绑定,绑定成功后用户发送给LINE机器人的所有消息都会默认转发到Dialogflow处理。
2. 开启Dialogflow Fulfillment Webhook
要实现自定义数据存储,需要通过Webhook中转处理用户数据:
- 在Dialogflow控制台开启「Fulfillment」功能,选择Webhook模式,后续填入云函数的调用地址即可
- 所有意图都需要开启「Fulfillment调用」,包括默认回退意图(Default Fallback Intent),确保所有用户输入都会触发Webhook请求,不会遗漏消息
3. 配置Google Sheet权限与API
- 新建空白Google Sheet,设置表头为
用户ID、消息时间、消息内容三个核心字段 - 进入Google Cloud Console,搜索并启用Google Sheets API,创建服务账号,将生成的服务账号邮箱添加到Google Sheet的共享列表,授予编辑权限
4. 编写Webhook逻辑
可直接使用Google Cloud Functions编写无服务函数,核心逻辑示例(Node.js环境):
const {google} = require('googleapis'); const sheets = google.sheets('v4'); // 服务账号鉴权初始化 const auth = new google.auth.GoogleAuth({ keyFile: '服务账号密钥文件路径', scopes: ['https://www.googleapis.com/auth/spreadsheets'], }); exports.saveLineMessage = async (req, res) => { // 从Dialogflow请求中提取所需信息 const userId = req.body.originalDetectIntentRequest.payload.data.source.userId; const sendTime = new Date().toLocaleString(); const userContent = req.body.queryResult.queryText; const authClient = await auth.getClient(); // 写入数据到Google Sheet await sheets.spreadsheets.values.append({ spreadsheetId: '你的Google Sheet ID', range: 'Sheet1!A:C', valueInputOption: 'RAW', insertDataOption: 'INSERT_ROWS', resource: { values: [[userId, sendTime, userContent]] }, auth: authClient }); // 返回给用户的回复内容 res.json({ fulfillmentText: "疫情信息已收到,感谢你的反馈。" }); };
5. 功能验证
将云函数的调用地址填入Dialogflow Fulfillment的Webhook地址栏,保存后给LINE机器人发送测试消息,检查Google Sheet是否正常生成对应记录即可。
内容的提问来源于stack exchange,提问作者Pj_8543
相关产品推荐
相关产品推荐

