0

我在 watson 助手中有一个应用程序,它使用来自其他端点的许多服务。我想出于某种目的在谷歌助手对话中称这个对话(来自 watson)。例如,我将在谷歌助手上开发一个丰富的对话,在其中一个选项中我将调用 watson 的对话。我尝试如下,但没有奏效。有谁知道任何可以帮助我的例子?

{"locale": "pt-BR",
 "actions": [
   {
     "description": "Launch intent",
     "name": "MAIN",
     "fulfillment": {
       "conversationName": "mainConversation"
     },
     "intent": {
       "name": "actions.intent.MAIN"
     }
   },
   {
    "description": "Direct access",
    "name": "BUY",
    "fulfillment": {
      "conversationName": "ExampleAction"
    },
    "intent": {
      "name": "com.example.ExampleAction.BUY",
      "trigger": {
        "queryPatterns": [
          "teste",
          "azul",
          "start"
        ]
      }
    }
  }
 ],
 "conversations": {
   "mainConversation": {
     "name": "mainConversation",
     "url": "https://us-central1-ericanovo-798cc.cloudfunctions.net/webhook",
     "fulfillmentApiVersion": 2
   },
   "BUY": {
    "name": "ExampleAction",
    "url": "https://orquestrador-sulamerica-teste.mybluemix.net/api/v1/chat/google?externaltoken=574213c0-e904-11e9-9970-ff484aa25334",
    "fulfillmentApiVersion": 2
  }

 }
}

谢谢

4

1 回答 1

0

这是行不通的,因为在同一项目下发布的所有内容的 webhook 都必须是相同的 URL。您需要处理该 webhook 上的所有 Intent 和“操作”。

在您的情况下,您还需要确保请求的格式符合 Watson API 的预期。Assistant 将使用Conversation Webhook Format发送它,听起来您会使用Watson 的 Analyze Text API 发送它。

您没有显示任何代码,因此很难确定 - 但第一个是您可以提取的 JSON 格式。然后,您可以使用 Node 中的库(例如request-promise来调用 Watson。根据来自 Watson 的结果,您需要将结果格式化为响应并将其返回给 Assistant。

目前尚不清楚为什么您需要多个 webhook,尽管某些 Intent 可能会进行与其他 Intent 不同的 API 调用。

请记住,您的自定义 Intent 仅在调用时有效。后续的 Intent 都将是 TEXT Intent。

于 2020-05-18T21:09:12.107 回答