从 API.ai 履行请求中获取代理信息

Getting Agent Info from API.ai fulfilment request

有什么方法可以从履行请求中获取 API.ai 代理信息?

我正在尝试从 Node.js 代码中捕获可以从 Agent 传递的任何唯一参数。这将用于使用单个代码库处理多个代理的逻辑。

对于 Amazon Alexa,我可以从会话中获取技能应用程序 ID。 API.ai中有类似的东西吗?

您可以使用 API.AI 的 sessionIdintentId,这在代理之间是唯一的。 sessionIdintentId* 随每个 fulfillment webhook 请求一起发送。 JSON发送的类似这样:

{
  "id": "1a4b6209-51ec-47a1-a797-2e2f71926ac8",
  "sessionId": "1503343146047"
  ...
}

但也会包含其他元素。

*如果您使用 slot filling

,intentId 可能会在意向 ID 后包含额外的数字标识符

来源:https://api.ai/docs/fulfillment#request

如果你想获得代理 ID,你可以做这样的事情(使用 express 框架):

app.post(`/:agent_id/webhook`, (req, res) => {
 const apiai_agent_id = req.params.agent_id;
 // webhook code...
});

在这种情况下,在履行页面上,您必须为每个代理指定它自己的网络钩子 URL,例如 https://mywebhooks.com/55982e7c-db17-47ee-92bb-176476228942/webhook

(您可以从浏览器的地址栏中获取 webhook URL 的代理 ID)