我试图提出一个请求,我想要包含一个Header,一个form-urlencoded字段和一个json体.我的Retrofit界面如下
@FormUrlEncoded
@POST("/api/register")
Observable<RegisterResponse> register(
@Header("Authorization") String authorization,
@Field("grant_type") String grantType,
@Body RegisterBody body
);
Run Code Online (Sandbox Code Playgroud)
当我提出这个请求时,我得到了异常@Body参数,不能与表单或多部分编码一起使用.
我也尝试过@Multipart注释:
@Multipart
@FormUrlEncoded
@POST("/api/register")
Observable<RegisterResponse> register(
@Header("Authorization") String authorization,
@Part("grant_type") TypedString grantType,
@Body RegisterBody body
);
Run Code Online (Sandbox Code Playgroud)
我得到一个IllegalArgumentException,只允许一个编码注释.
基于V1到V2 Node.js客户端库迁移指南,有两种方法可以收听对话
所以来自V1的以下代码
const {DialogflowApp } = require('actions-on-google');
const actionMap = new Map();
actionMap.set('input.welcome', app => { app.ask('How are you?'); });
...
Run Code Online (Sandbox Code Playgroud)
可以用dialogflow模块替换
const { dialogflow } = require('actions-on-google');
const app = dialogflow();
app.intent('Default Welcome Intent', conv => { conv.ask('How are you?'); });
Run Code Online (Sandbox Code Playgroud)
或动作SDK模块
const { actionssdk } = require('actions-on-google');
const app = actionssdk();
app.intent('actions.intent.MAIN', conv => { conv.ask('How are you?'); });
Run Code Online (Sandbox Code Playgroud)
在第一种情况(对话框流)中,您通过名称来识别Intent,但在第二种情况下(actionSdk),您可以从操作名称识别它.
为什么我要使用一个而不是另一个,每种方法的好处和局限是什么?