Как извлечь параметры запроса для моего вызова через webhook для действий в Google (WebAPI) - PullRequest
0 голосов
/ 11 июня 2018

Я хотел реализовать webAPI (MVC), который будет действовать как веб-крючок для диалогового потока, для действий в Google Home, которые могут перехватывать запрос ввода и отправлять соответствующий ответ через API.Я включил веб-крючок в Dialogflow. Я использую ngrok для имитации моего локального URL как общедоступного.Когда я использую симулятор в действиях на Google, он попадает в мой API, но возникает вопрос, как мне получить параметры моего запроса. Я создал объект C # на основе полезной нагрузки json, которую я вижу на вкладке запроса симулятора, которая

{
  "user": {
    "userId": "ABwppHFVbJd56p8i5HGFAGVEXJuHlYSZoiJIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "locale": "en-US",
    "lastSeen": "2018-06-11T11:50:56Z"
  },
  "conversation": {
    "conversationId": "1528724450138",
    "type": "ACTIVE",
    "conversationToken": "[]"
  },
  "inputs": [
    {
      "intent": "actions.intent.TEXT",
      "rawInputs": [
        {
          "inputType": "KEYBOARD",
          "query": "Talk to papu"
        }
      ],
      "arguments": [
        {
          "name": "text",
          "rawText": "Talk to papu",
          "textValue": "Talk to papu"
        }
      ]
    }
  ],
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      },
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      },
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      }
    ]
  },
  "isInSandbox": true
}

мой webmethod был примерно таким

   [HttpPost]
    public ActionResult Connect(AsisstantRequest req)
    {}

и Request.Form.AllKeys также пуст

А также я не смог найти ни одного, sdk доступен для .net?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Если вы используете Dialogflow, то JSON, показанный в симуляторе, не тот JSON, который отправляется вашему веб-крюку.Dialogflow использует свой собственный протокол JSON для отправки параметров, которые определены намерением.Это включает JSON, отправленный AoG, но есть много дополнительных полей.

В Dialogflow JSON параметры доступны в queryResult.parameters, в то время как JSON, отправленный AoG, доступен в originalDetectIntentRequest.

0 голосов
/ 11 июня 2018

Уже указывалось, что в исходном вопросе существует модель класса на основе предоставленного JSON.

в качестве веб-API действие должно быть в ApiController и точно указывать, где следует искатьзапрос на паранетры.

public class MyApiController : ApiController {
    //...

    [HttpPost]
    public IHttpActionResult Connect([FromBody] AsisstantRequest request) {
        //...
    }

}
...