【问题标题】:How to get a sessionId- dialogflow如何获取 sessionId- 对话流
【发布时间】:2018-10-04 21:12:30
【问题描述】:

我正在尝试从响应对象中获取 sessionId,但这是一种有效的方式还是有任何其他可能性来获取会话 ID 或会话对象?

例如: request.body.session:projects/coffee-shop/agent/sessions/e6eb1812-9c3f-23fa-b590-f1656ee9a56e

如何获得准确的 ID:e6eb1812-9c3f-23fa-b590-f1656ee9a56e 而不是路径。 或者如何获取路径projects/coffee-shop/agent/**sessions**/e6eb1812-9c3f-23fa-b590-f1656ee9a56e中的sessions对象

【问题讨论】:

  • 向我们展示你的代码你是怎么做的,只有我们能告诉我们
  • 抱歉,我无法向您展示整个代码,但这就是我尝试访问会话的方式:request.body.session 给了我这个 'projects/coffe-shop/agent/sessions/e6eb1812-9c3f-23fa -b590-f1656ee9a56e'。所以这将是 sesson id: e6eb1812-9c3f-23fa-b590-f1656ee9a56e 但奇怪的是我们必须解析这个字符串来获取会话 id。
  • 为什么不能只保留整个字符串?这有点令人费解,但它确实有你想要的唯一标识符
  • 我在哪里搜索如何获取会话 ID 没有人有一个干净的方法来获取它,所以只是尝试,因为我们正在尝试做的应用程序只需要会话 ID,而不是整个字符串。一定有什么办法!

标签: node.js session dialogflow-es actions-on-google api-ai


【解决方案1】:

是的,您可以从 WebhookClient 的代理实例中获取会话 ID:

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {

  const agent = new WebhookClient({ request, response });
  console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
  console.log('Dialogflow Request body: ' + JSON.stringify(request.body));

  function welcome(agent) {
    agent.add(`Welcome to my agent!`);

    let sessionId = agent.session;
  }

  let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  agent.handleRequest(intentMap);
  });

【讨论】:

  • 是的,这与返回路径相同,而不是我正在寻找的确切 ID。
  • 您可能想更新您的问题并更具体
【解决方案2】:

假设我们在变量req中有请求对象,我们可以使用下面的python代码:

session_path = req['session']  

它将打印会话对象路径:
项目/咖啡店/代理/会话/e6eb1812-9c3f-23fa-b590-f1656ee9a56e

要获得确切的 id,您可以将其与 / 拆分并取出列表的最后一个元素

session = req['session'].split('/')[-1]  

它将打印准确的会话 ID:
e6eb1812-9c3f-23fa-b590-f1656ee9a56e

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 2016-03-10
    • 1970-01-01
    相关资源
    最近更新 更多