asp.net-web-api2 - 如何提取我的 webhook 请求参数以在 google (WebAPI) 上执行操作
问题描述
我想实现一个 webAPI(MVC) 来充当对话流的 webhook,用于 google home 上的操作,它可以拦截输入请求并通过 API 发送适当的响应。我在 Dialogflow 中启用了一个 webhook。我正在使用ngrok将我的本地 url 模拟为公共。当我在谷歌的操作中使用模拟器时,它会命中我的 API,但是问题是我如何获取我的请求参数。我已经创建了一个基于我在模拟器的请求选项卡中看到的 json 有效负载的 C# 对象,即
{
"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
}
我的网络方法是这样的
[HttpPost]
public ActionResult Connect(AsisstantRequest req)
{}
也是Request.Form.AllKeys
空的
而且我也找不到,是否有可用于 .net 的 sdk?
解决方案
已经表明存在基于原始问题中提供的 JSON 的类模型。
作为 Web API,操作应该在 a 中ApiController
,并准确指定应该在哪里查找请求参数。
public class MyApiController : ApiController {
//...
[HttpPost]
public IHttpActionResult Connect([FromBody] AsisstantRequest request) {
//...
}
}
推荐阅读
- sql-server - 来自 SSIS 的 Oracle 连接问题
- r - R:如何从具有离散 x 轴的矩阵数据中获取散点图
- excel - 如何在id下获取html的内部文本?
- sas - 需要此 SAS 练习题的答案,如有可能,请提供解释
- python - 创建一个算法来解决python中的问题
- java - 如何为下面给出的查询编写 Java CriteriaBuilder
- sql - SQL - 通过加入表本身在数据集中查找相同的数据
- reactjs - webpack4 热重载不适用于某些文件
- ruby - Heroku:由于 gem 文件导致推送失败
- ios - USDZ 模型在 SceneKit 中有孔,但在 QuickLook 中没有