You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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:
    1. 左侧菜单打开Fulfillment,找到Inline Editor区域,开启它(选择Node.js环境)。
    2. 替换默认代码为下面这段(注释里写了每个部分的作用,你可以按需修改):
      '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);
      });
      
    3. 点击「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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:29:48