API.ai 如何在同一个答案中为来自 webhook 的语音和显示文本字段添加不同的实现方式
API.ai How to add different fulfillment for speech and displaytext fields from webhook in the same answer
我正在尝试从 Webhook 发回响应,其中的内容格式化为可读,内容格式化为可说。要在屏幕上阅读的文本位于 displaytext 字段中,而要说出的文本位于 speech 字段中。使用 github.com/api-ai 中的天气 webhook 示例,我尝试将第二个对象添加到 resolve 方法:
resolve(speech_output, displayText_output);
但是当用于发送响应时,displayText_output 未被使用:
callWeatherApi(city, date).then((speech_output, displayText_output) => {
// Return the results of the weather API to API.AI
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({'speech': speech_output, 'displayText': displayText_output}));
displayText 未包含在响应的 JSON 对象中。我认为 Promise.resolve 只接受一个参数来处理,并且一个 return 错误像 Promise(resolve, reject)。但是,当 speech_output 的值用于两个字段时,displayText 将包含在 JSON 响应中。
我想知道是否有办法在同一个答案中发送具有不同信息的这两个字段。
谢谢。
最简单的方法是为变量 output
创建一个新的 Javascript 对象,以包含 displayText
和 speech
属性。例如:
output = { 'displayText': 'YOUR DISPLAY TEXT STRING HERE',
'speech': 'YOUR SPEECH STRING HERE' };
resolve(output);
然后在您的 then
区块中:
callWeatherApi(city, date).then((output) => {
// Return the results of the weather API to API.AI
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(output));
我正在尝试从 Webhook 发回响应,其中的内容格式化为可读,内容格式化为可说。要在屏幕上阅读的文本位于 displaytext 字段中,而要说出的文本位于 speech 字段中。使用 github.com/api-ai 中的天气 webhook 示例,我尝试将第二个对象添加到 resolve 方法:
resolve(speech_output, displayText_output);
但是当用于发送响应时,displayText_output 未被使用:
callWeatherApi(city, date).then((speech_output, displayText_output) => {
// Return the results of the weather API to API.AI
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({'speech': speech_output, 'displayText': displayText_output}));
displayText 未包含在响应的 JSON 对象中。我认为 Promise.resolve 只接受一个参数来处理,并且一个 return 错误像 Promise(resolve, reject)。但是,当 speech_output 的值用于两个字段时,displayText 将包含在 JSON 响应中。
我想知道是否有办法在同一个答案中发送具有不同信息的这两个字段。
谢谢。
最简单的方法是为变量 output
创建一个新的 Javascript 对象,以包含 displayText
和 speech
属性。例如:
output = { 'displayText': 'YOUR DISPLAY TEXT STRING HERE',
'speech': 'YOUR SPEECH STRING HERE' };
resolve(output);
然后在您的 then
区块中:
callWeatherApi(city, date).then((output) => {
// Return the results of the weather API to API.AI
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(output));