【发布时间】:2019-05-01 20:18:40
【问题描述】:
我从this api 获得一个音频 URL 和一些文本。到目前为止,我可以使用 webhook 在 dialogflow 上获得此响应。
现在我需要多次获取相同的数据。例如,到目前为止,如果我要求播放音频,它提供 url 1 次。现在我希望它多次返回 URL,例如当我要求它播放音频 2 次或 100 次时,它应该相应地给出 url。
URL 必须以与我相同的方式存储在数组中。
我将包含“url”、“title”和“type”的对象推送到名为“messages”的数组中。它应该被推到特定的号码。我使用 'times' 变量指定的次数。
这是我尝试过的。请检查循环是否放置正确?这个函数没有循环就很好,只返回一次数据。如果需要任何其他细节,请告诉我。
代码
static readAyahOfSurahMultipleTimes = async (agent: any) => {
const params = agent.parameters
console.log("params: ", params)
let surahApi: any = await http.get(`http://api.alquran.cloud/v1/ayah/${params.surahName}:${params.ayahNumber}/editions/ar.alafasy,en.asad`);
var ayahs: any = surahApi["data"];
console.log("ayahs", ayahs);
let payload = {
"web": {
"messages": []
}
}
try {
ayahs.forEach(function (item) {
for(var i=0;i<params.times;i++){
payload.web.messages.push({
"url": item.audio,
// "title": item.text,
"title": surahApi["data"][0]["text"],
"type": "audio",
})
}
});
console.log("payload", payload);
console.log("payload.web.messages",payload.web.messages);
raw.response.send({
"fulfillmentText": `Ayah number ${params.ayahNumber} of surah number ${params.surahName} is being played`,
"payload": payload
})
return;
} catch (e) {
console.log("error in catch block", e);
raw.response.send({
"fulfillmentText": `response from catch`
})
}
}
【问题讨论】:
-
每次需要重播音频时,您是否在“消息”数组中推送“有效负载”对象?
-
我将包含“url”、“title”和“type”的对象推送到“messages”数组中。它应该被推到没有。我使用 'times' 变量指定的次数
标签: typescript loops dialogflow-es array-push