如何用Dialogflow为Google Home开发随机返回实体项的简易应用?
嘿,这个需求绝对可以实现!作为经常帮人解决Dialogflow问题的开发者,我给你整理了一套新手友好的步骤,一步步就能搭建出你想要的Google Home随机挑战应用~
第一步:基础准备与实体创建
首先得把基础的“素材”准备好——也就是你的名称列表:
- 登录Dialogflow控制台,创建一个新的Agent(跟着引导走就行,关联Google Cloud项目是必要步骤,新手选默认配置就OK)。
- 左侧菜单栏找到Entities,点击「Create Entity」,给实体起个清晰的名字比如
@challenge_participant,然后在「Entries」里一行一个输入你需要的名字(比如Alice、Bob、Charlie),最后保存这个实体。
第二步:配置核心意图(Intent)
这一步是实现指令触发和随机回复的关键:
- 左侧菜单选Intents,点击「Create Intent」,给意图命名为
GiveRandomChallenge(名字要准确,后面代码里要用到)。 - 在「Training phrases」里添加用户可能说的触发句子,比如:
- give us a challenge
- can we get a random challenge
- hook us up with a challenge
多写几种表述,能帮Dialogflow更精准识别用户指令。
- 接下来要实现随机组合名称和挑战动作,这需要用到Dialogflow的「Fulfillment」(也就是后端逻辑)。新手推荐用内置的Inline Editor:
- 左侧菜单打开Fulfillment,找到Inline Editor区域,开启它(选择Node.js环境)。
- 替换默认代码为下面这段(注释里写了每个部分的作用,你可以按需修改):
'use strict'; const functions = require('firebase-functions'); const {WebhookClient} = require('dialogflow-fulfillment'); process.env.DEBUG = 'dialogflow:debug'; exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => { const agent = new WebhookClient({ request, response }); // 处理随机挑战的函数 function generateRandomChallenge(agent) { // 这里可以替换成你自己的名称列表,也可以从Dialogflow实体里读取,直接写数组更简单 const nameList = ['Alice', 'Bob', 'Charlie', 'Diana', 'Ethan']; // 随机选一个名字 const randomName = nameList[Math.floor(Math.random() * nameList.length)]; // 挑战动作列表,你可以随便扩展 const challengeList = ['do 10 push ups', 'do 15 squats', 'hold a plank for 30 seconds', 'do 20 jumping jacks']; // 随机选一个动作 const randomChallenge = challengeList[Math.floor(Math.random() * challengeList.length)]; // 组装回复并返回 agent.add(`${randomName} should ${randomChallenge}`); } // 把意图和处理函数绑定,注意这里的名字要和你创建的意图名完全一致 const intentMap = new Map(); intentMap.set('GiveRandomChallenge', generateRandomChallenge); agent.handleRequest(intentMap); }); - 点击「Deploy」按钮部署代码,等待部署完成(大概需要几十秒)。
- 回到刚才创建的
GiveRandomChallenge意图,找到「Fulfillment」板块,勾选「Enable webhook call for this intent」,这样用户触发指令时,就会调用我们的代码生成随机回复。
第三步:测试与上线
- 先在Dialogflow控制台的「Test」标签里测试:输入“give us a challenge”,看看是不是能返回随机的名称+挑战句子。如果出问题,点击Inline Editor里的「View logs」查看错误信息,排查问题。
- 要在Google Home上测试的话,确保你的Agent和Google账号关联,然后对着Google Home说“Talk to [你的Agent名称]”,接着说“give us a challenge”就能触发啦。
额外小提示
- 如果不想写代码,Dialogflow本身有「Random Responses」功能,但只能在固定的几个回复里随机选,没法动态组合名称和动作,所以代码方式更灵活。
- 要是后续要更新名称或挑战动作,直接修改代码里的数组就行,重新部署一次就生效。
内容的提问来源于stack exchange,提问作者Baptiste Grève
相关产品推荐
相关产品推荐

