Google cloud platform 用图像回答+;对话框Flow chat with fulfillment中的按钮

Google cloud platform 用图像回答+;对话框Flow chat with fulfillment中的按钮,google-cloud-platform,dialogflow-es,dialogflow-es-fulfillment,Google Cloud Platform,Dialogflow Es,Dialogflow Es Fulfillment,我正忙于学习越来越多关于dialogflow的知识,以及它所能提供的各种可能性,但我现在陷入了困境 我现在有什么? 通过我的dialogflow代理,目前可以向荷兰政府申请前往特定国家的旅行建议。因此,当用户询问:“给我去西班牙的旅行建议”时,dialogflow将使用gouverment当前的旅行建议进行响应 数据是从谷歌的工作表中导入的。在这张谷歌表单中,我从gouverment网页获取实时旅行建议数据。我用于向用户提供旅行建议作为反馈的代码是: `function reisadviesHa

我正忙于学习越来越多关于dialogflow的知识,以及它所能提供的各种可能性,但我现在陷入了困境

我现在有什么? 通过我的dialogflow代理,目前可以向荷兰政府申请前往特定国家的旅行建议。因此,当用户询问:“给我去西班牙的旅行建议”时,dialogflow将使用gouverment当前的旅行建议进行响应

数据是从谷歌的工作表中导入的。在这张谷歌表单中,我从gouverment网页获取实时旅行建议数据。我用于向用户提供旅行建议作为反馈的代码是:

`function reisadviesHandler(agent) {
  const bestemming = agent.parameters.bestemming;
  return getSpreadsheetDataReisadvies().then(res => {
    res.data.map(land => {
      if(land.bestemming === bestemming)
      agent.add(`Momenteel staat het reisadvies voor ${bestemming} op ${land.kleurcode}. Het Ministerie van Buitenlandse Zaken zegt verder: ${land.melding}. Is er nog iets anders waar ik je mee kan helpen?`);
    });
  });
}`
在电子表格(数据来源)中,我还向D列中的旅行建议()的地图(图片)添加了一个url,称为“mapimage”。使用
${land.mapimage}
我可以将正确的url拉到特定国家/地区的正确图像(国家/地区是用户输入的动态值)

我想做什么 在目前的答复之后:

这是一个很好的例子 ${land.kleurcode}。他是一位名叫扎肯·泽格特·威尔德的部长: ${land.melding}。我不想让安德斯·瓦勒帮你吗

我想询问用户是否想查看当前的旅行建议地图(图像)。如果他们响应/单击“是”,聊天机器人必须发送目的地的图片(地图)。除此之外,我还想添加一个按钮,它可以将用户转发到正确的gouverment网页,以获取有关旅行建议的更多信息


目前,发送地图(图像)是主要问题,我不知道如何在我目前的履行代码中实现这一点。希望任何人都能帮助/解释这一点,这样我就可以继续快乐地构建这个聊天机器人:)谢谢

根据您的用例描述,可以使用a,因为它是其相关父意图的子项,通常用于回答“是”、“否”或“取消”。此外,您还可以使用其中一个或创建一个自定义的

此外,由于答案取决于用户给出的国家/地区值,因此所选国家/地区的信息必须保留在中,以便在后续目的中使用。为了将数据持久化到活动上下文中,可以使用函数agent.setContext(),方法是将数据作为参数添加到实现代码中,如下所示

function reisadviesHandler(agent) { 
   const bestemming = agent.parameters.bestemming; 
   return getSpreadsheetDataReisadvies().then(res => { 
      res.data.map(land => { 
          if(land.bestemming === bestemming) {
             agent.add(`Momenteel staat het reisadvies voor ${bestemming} op ${land.kleurcode}. Het Ministerie van Buitenlandse Zaken zegt verder: ${land.melding}. Is er nog iets anders waar ik je mee kan helpen?`);
             agent.setContext({ name: 'your context name here', lifespan: 1, parameters: { [param-name]: land.mapimage , [param-name]: land.website }}); // You can use your current context name or a new one is created with the name provided.
         }
      }); 
   }); 
}
通过使用,您可以看到意图交互期间的上下文和活动参数

为了访问后续意图中以前的持久化数据,请使用该信息配置指向的

最后,您可以使用发送图像或交互式按钮,如下面的示例所示

function yes(agent) {
    const mapimage = agent.parameters.mapimage;
    const webpage = agent.parameters.webpage;
    agent.add(new Card({
         title: `Title: this is a card title`,
         imageUrl: mapimage,
         text: `This is the body text of a card.`,
         buttonText: 'This is a button',
         buttonUrl: webpage
         })
      );
   }
请注意,必须启用后续意图中的,并且在履行代码中,意图必须映射到功能

intentMap.set('your intent name here', yourFunctionHandler);

答案取决于您在Dialogflow中使用的客户端/集成。你的目标是谷歌助手吗?像Facebook这样的聊天机器人?对于web或应用程序集成?嗨,囚犯,顺便说一下,我们将针对Facebook M&Assistant:)和web,但我认为在dialogflow web消息机器人中不可能实现。嗨,Mariana,感谢您的回复和帮助!很高兴你愿意在这件事上帮助我。我试图实施你的建议,但我面临一个问题。添加行
agent.setContext()
后,函数reisadviesHandler(代理)不再工作(它不再返回值land.kleurcode、bestemming和land.melding。我已将您的行更改为:
agent.setContext({name:'reisadvies followup',寿命:1,参数:{[land.mapimage]:mapimage,[land.website]:website}});
Hi Sami,很抱歉,我没有说明name参数没有括号,而且参数格式是:“paramete name:parameter value”。您的行应该如下所示:
agent.setContext({name:'reisadvis followup',寿命:1,参数:{mapimage:land.mapimage,website:land.website})
。请注意,值“mapimage”和“website”必须存在于您的电子表格中。你好,Mariana,非常感谢!它正在工作:)。但它非常不稳定,我认为这与GetSpreadsheet函数有关。。。它有时没有回答。但这是另一个需要发现的问题。万分感谢!编辑:我经常收到“不可用”的消息,当我不使用富响应时,它会更稳定。有可能吗?你在哪里测试机器人?