javascript 在Dialogflow CX中使用webhook设置参数

aemubtdh  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(85)

我正在创建一个聊天机器人来管理客户支持。我有一个流程叫做“产品问题”。它应该检测所涉及的产品类型,并重定向到特定于该类型的另一个流。这里的想法是使更小的流量更容易管理。
对于每个请求,我需要三个元素:产品类型、品牌和问题描述。在最初的要求中,很多客户会使用品牌名称。在大多数情况下,品牌也将决定产品的类型。
例如,假设我创建了三个实体:汽车(“Volvo”和“Bentley”)、电视(“Sony”、“Panasonic”)和产品类型(“car”、“television”)。如果最初的请求是“我的沃尔沃有问题”,我知道这个品牌,但我也知道产品类型。已检测到品牌,但未检测到产品类型。
我创建了一个webhook来管理它。我没有错误,但产品类型参数未设置。

    • webhook**
exports.mapBrandToProductType = (req,res) => {
  const brand = req.body.sessionInfo.parameters.brand;
  const fullUrl = req.body.sessionInfo.session + "/contexts/product-type-context";

  let productType;

  if (brand === "Volvo" || brand === "Bentley") {
    productType = "car";
  } else if (brand === "Sony" || brand === "Panasonic") {
    productType = "television"
  }

  const response = {
    fulfillment_response: {
      messages: [
        {
          text: {
            text: ["product is a " + productType],
          }
        }
      ],
      outputContexts: [
        {
          name: fullUrl,
          lifespan_count: 60,
          parameters: {
            "product-type": productType
          }
        }
      ]
    }
  };

  res.status(200).send(response)
}

我有一个页面"问题信息",其中的产品类型是必需的,使重定向到另一个流。我在fulfillment中添加了webhook。
当我测试聊天机器人时,我看到一个文本,显示product-type是我的js代码。但参数仍然缺失。

hgqdbh6s

hgqdbh6s1#

product-type参数缺失的可能原因是您的webhook代码出错。使用outputContexts设置参数是Dialogflow ESwebhook的一部分。为了使其工作,使用SessionInfo参数更改webhook响应对象。

以下是webhook文档中的example code

// Build and return the response.
    response := webhookResponse{
        FulfillmentResponse: fulfillmentResponse{
            Messages: []responseMessage{
                {
                    Text: text{
                        Text: []string{t},
                    },
                },
            },
        },
        SessionInfo: sessionInfo{
            Parameters: p,
        },
    }
    return response, nil
}

相关问题