如何实现Google Home调用API获取点数并通过DialogFlow播报?
嘿,我刚好折腾过类似的需求,给你拆解下具体怎么做——你已经用上DialogFlow的webhook了,其实核心就是在你的服务器代码里对接那个点数API,然后把结果包装成DialogFlow要的格式返回就行~
实现Google Home播报API点数的完整步骤
1. 先把DialogFlow的意图配置到位
- 首先确认你创建的查询意图(比如叫“查询我的点数”)已经开启了webhook调用:在意图的「Fulfillment」板块,勾选“Enable webhook for intent”。这样用户触发这个意图时,DialogFlow才会给你的服务器发POST请求。
- 别忘了给意图加些自然的训练短语,比如“我的点数有多少?”“帮我查下当前点数”“看看我现在有几点”,让Google Home能准确识别用户的提问。
2. 在你的服务器里处理webhook请求
DialogFlow发过来的POST请求体里有一堆字段,但你不用管太多,只需要做这两件事:
- 向你的点数API发起GET请求,拿到返回的数字;
- 把数字转换成口语化的文本,塞进
fulfillmentText字段返回给DialogFlow。
给你两个常用语言的示例:
Node.js(Express框架)
const express = require('express'); const axios = require('axios'); const app = express(); app.use(express.json()); // 处理DialogFlow的webhook请求 app.post('/webhook', async (req, res) => { try { // 调用你的点数API,替换成实际地址 const pointsRes = await axios.get('https://你的点数API地址'); const points = pointsRes.data; // 构造返回给DialogFlow的响应,文本尽量口语化 res.json({ fulfillmentText: `你的当前点数是${points}点哦` }); } catch (err) { // 处理API调用失败的情况,返回友好提示 res.json({ fulfillmentText: '抱歉呀,暂时查不到你的点数,稍后再试试吧' }); } }); app.listen(3000, () => console.log('Webhook服务器跑在3000端口啦'));
Python(Flask框架)
from flask import Flask, request, jsonify import requests app = Flask(__name__) @app.route('/webhook', methods=['POST']) def handle_webhook(): req_data = request.get_json() try: # 调用点数API,替换成实际地址 api_res = requests.get('https://你的点数API地址') points = api_res.text.strip() # 返回符合要求的响应 return jsonify({ 'fulfillmentText': f'你的当前点数是{points}点哦' }) except Exception as e: print(f'出错了:{e}') return jsonify({ 'fulfillmentText': '抱歉呀,暂时查不到你的点数,稍后再试试吧' }) if __name__ == '__main__': app.run(port=5000, debug=True)
3. 测试调试小技巧
- 先用DialogFlow的「测试模拟器」输入问题,看看能不能返回正确的播报文本,这一步能快速排查webhook是否正常工作。
- 如果是本地开发服务器,记得用
ngrok之类的工具把本地端口暴露到公网,不然DialogFlow没法调用你的webhook(比如ngrok http 3000,然后把生成的https地址填到DialogFlow的webhook配置里)。 - 要是点数API有认证或者跨域问题,记得在你的服务器代码里处理好,比如加请求头、代理请求之类的。
4. 关联到Google Home设备
等DialogFlow这边调试没问题后,去Actions on Console导入你的DialogFlow项目,完成基础配置(比如设置技能名称、语音交互的欢迎语),然后就能用自己的Google Home设备测试了——对着它说你设置的训练短语,就能听到点数播报啦!
内容的提问来源于stack exchange,提问作者DataPools
相关产品推荐
相关产品推荐

