如何等待下一个 POST 请求
How to wait for the next POST request
所以我想做的是,当机器人收到 /uploadPhoto 消息时,它会等待下一条消息并检查它是否包含照片。我尝试了许多不同的循环,包括 do..while、if、while 和其他解决方案。现在我的想法是,我需要从 doPost 函数中调用 doPost 函数。有什么办法吗?
尝试了 do..while、if、while 和其他循环。
function doPost(e){
var contents = JSON.parse(e.postData.contents);
var id = contents.message.id;
var text = contents.message.text;
case "uploadPhoto":
sendText(id, "Upload a photo...");
//endText(id, "Upload a photo to be displayed as your product%0AUsage: upload a photo with a caption /uploadPhoto");
/**const zinutes_id = contents.message.message_id;
const zinutes_id_opa = zinutes_id + 1;
while (true) {
if (zinutes_id == zinutes_id_opa){
if ("photo" in contents.message) {
var photo = contents.message.photo[3].file_id;
sendText(id, "okay " + photo);
sendPhoto(id, photo);
break;
}
}
} */
/** if ("photo" in contents.message){
var photo = contents.message.photo[3].file_id;
sendText(id, "okay " + photo);
sendPhoto(id, photo);
} else {
sendText(id, "Upload a photo!");
}*/
break;
}
- 发短信/上传照片到机器人
- 机器人回短信"Upload a photo..."
- Bot 等待下一条消息并解析其内容
编辑:
这是我设法做到的:
doPost(e){
if(contents.message.includes("photo")){
var fotke = contents.message.photo[3].file_id;
}
if (checkLastCommand(id) == "uploadPhoto") {
if (fotke !== "undefined") {
// @ts-ignore
sheet.getRange(searchUser(id),6).setValue(fotke);
sendText(id, fotke);
// @ts-ignore
sheet.getRange(searchUser(id),7).clear();
} else {
sendText(id, "this is not a photo");
// @ts-ignore
sheet.getRange(searchUser(id),7).clear();
} else if (firstChar === '/') {
case "uploadPhoto":
sendText(id, "Upload a photo...");
sheet.getRange(searchUser(id), 7).setValue("uploadPhoto");
break;
}
}
function checkLastCommand(x) {
// @ts-ignore
var z = sheet.getRange(searchUser(x), 7).getValue();
return z;
}
现在它正在等待照片,但由于某种原因它在 POST 请求中找不到照片。我在单元格中得到 "undefined" 并且机器人不响应照片而是响应 /(command) with undefined
显然我想出了一个解决方案。
if ("photo" in contents.message) {
var fotke = contents.message.photo[3].file_id;
} else {
var text = contents.message.text;
var firstChar = text.substr(0,1);
}
程序不想读取 file_id 已发送的照片,因为它一直在等待短信。
所以我想做的是,当机器人收到 /uploadPhoto 消息时,它会等待下一条消息并检查它是否包含照片。我尝试了许多不同的循环,包括 do..while、if、while 和其他解决方案。现在我的想法是,我需要从 doPost 函数中调用 doPost 函数。有什么办法吗?
尝试了 do..while、if、while 和其他循环。
function doPost(e){
var contents = JSON.parse(e.postData.contents);
var id = contents.message.id;
var text = contents.message.text;
case "uploadPhoto":
sendText(id, "Upload a photo...");
//endText(id, "Upload a photo to be displayed as your product%0AUsage: upload a photo with a caption /uploadPhoto");
/**const zinutes_id = contents.message.message_id;
const zinutes_id_opa = zinutes_id + 1;
while (true) {
if (zinutes_id == zinutes_id_opa){
if ("photo" in contents.message) {
var photo = contents.message.photo[3].file_id;
sendText(id, "okay " + photo);
sendPhoto(id, photo);
break;
}
}
} */
/** if ("photo" in contents.message){
var photo = contents.message.photo[3].file_id;
sendText(id, "okay " + photo);
sendPhoto(id, photo);
} else {
sendText(id, "Upload a photo!");
}*/
break;
}
- 发短信/上传照片到机器人
- 机器人回短信"Upload a photo..."
- Bot 等待下一条消息并解析其内容
编辑:
这是我设法做到的:
doPost(e){
if(contents.message.includes("photo")){
var fotke = contents.message.photo[3].file_id;
}
if (checkLastCommand(id) == "uploadPhoto") {
if (fotke !== "undefined") {
// @ts-ignore
sheet.getRange(searchUser(id),6).setValue(fotke);
sendText(id, fotke);
// @ts-ignore
sheet.getRange(searchUser(id),7).clear();
} else {
sendText(id, "this is not a photo");
// @ts-ignore
sheet.getRange(searchUser(id),7).clear();
} else if (firstChar === '/') {
case "uploadPhoto":
sendText(id, "Upload a photo...");
sheet.getRange(searchUser(id), 7).setValue("uploadPhoto");
break;
}
}
function checkLastCommand(x) {
// @ts-ignore
var z = sheet.getRange(searchUser(x), 7).getValue();
return z;
}
现在它正在等待照片,但由于某种原因它在 POST 请求中找不到照片。我在单元格中得到 "undefined" 并且机器人不响应照片而是响应 /(command) with undefined
显然我想出了一个解决方案。
if ("photo" in contents.message) {
var fotke = contents.message.photo[3].file_id;
} else {
var text = contents.message.text;
var firstChar = text.substr(0,1);
}
程序不想读取 file_id 已发送的照片,因为它一直在等待短信。