我需要使用 PHP y Dialogflow 存储会话变量

I need to store sesion variable witn PHP y Dialogflow

我的项目是有一个聊天机器人,可以销售电阻器、二极管等电子设备。 电阻和二极管的种类很多

我在 dialogflow 中有我的意图,所以当用户选择一个项目时,我需要将它存储到 php 会话变量中,所以当用户完成后,我需要在会话变量中恢复该项目,但它不起作用

收到名为“tomar_cantidad”的对话流意图

  if (intent_recibido("tomar_cantidad")) {

  $modelo = obtener_variables3('modelo');
  $cantidad = obtener_variables2('cantidad');
  //enviar_texto(print_r($cantidad));

  $datos_usuario = array('modelo'=>$modelo,'cantidad'=>$cantidad);

   $_SESSION['datos_usuario'][]= $datos_usuario;

   enviar_texto(print_r($_SESSION['datos_usuario']));
   }

enviar_texto 是一种将信息发送到 dialogflow 的方法(用于测试目的)。

我收到会话变量但只存储用户选择的最后一个项目而不是所有项目

问题是 PHP $_SESSION 变量绑定到 HTTP 会话,通常使用 HTTP cookie 实现。但是 Dialogflow 在将消息发送到 webhook 时不管理 HTTP cookie,因此每次 fulfillment 调用都是一个新会话。

您有几种方法可以解决此问题:

  • Get the Dialogflow session ID 并根据此 ID

    存储信息
  • 将您想要在对话中的回合之间存储的任何值存储为 parameter in an Output Context。您应该将上下文的生命周期设置为一个较大的数字,通常为 99,或者每次 re-set 作为输出上下文。然后,当你需要这些信息时,你可以读取命名的Context中的参数。