在 Twilio 中嵌套 if else
nested if else in Twilio
我正在使用 Twilio 和 python 制作自动 whatsapp 回复机器人,但是我遇到了问题,无法使用嵌套的 if else
from flask import Flask, request
import requests
from twilio.twiml.messaging_response import MessagingResponse
app = Flask(__name__)
@app.route('/mybot', methods = ['POST'])
def mybot():
incoming_msg = request.values.get('Body', '').lower()
resp = MessagingResponse()
msg = resp.message()
responded = False
print(incoming_msg)
if incoming_msg == "list of doctors":
msg.body("We have Dr. Phil with us today")
responded = True
if "book appointment" in str.lower(incoming_msg) or "see a doctor" in str.lower(incoming_msg):
msg.body("Which department would you like to visit?\nPress :-\n1 - General Surgery\n2 - Internal Medicine\n3 - Gynaecology\n4 - Obstetrics\n5 - Ophthalmology\n6 - Orthopaedics\n7 - Dermatology Venereology & Leprology\n8 - ENT\n9 - Paediatric")
if (incoming_msg == "1" or "general surgery" in incoming_msg): # This statement gets ignored
msg.body("General Surgery")
responded = True
其中 if (incoming_msg == "1" or "general surgery" in incoming_msg):
是问题陈述。
有什么办法可以解决这个问题吗?
在这种情况下,您不能嵌套它们。用户的每个回答都是一条新的 SMS/WhatsApp 消息,并将再次调用 mybot()
function/webhook,因此在第二次调用中您将不会 预约 or see a doctor in the incoming_msg
but just a number or the name of the department.
这样试试:
def mybot():
incoming_msg = request.values.get('Body', '').lower()
resp = MessagingResponse()
msg = resp.message()
responded = False
if incoming_msg == "list of doctors":
msg.body("We have Dr. Phil with us today")
responded = True
if "book appointment" in str.lower(incoming_msg) or "see a doctor" in str.lower(incoming_msg):
msg.body("Which department would you like to visit?\nPress :-\n1 - General Surgery\n2 - Internal Medicine\n3 - Gynaecology\n4 - Obstetrics\n5 - Ophthalmology\n6 - Orthopaedics\n7 - Dermatology Venereology & Leprology\n8 - ENT\n9 - Paediatric")
responded = True
if incoming_msg == "1" or "general surgery" in incoming_msg:
msg.body("General Surgery")
responded = True
[...]
只要您的所有 options/inputs 都是不同的,这就有效。
我正在使用 Twilio 和 python 制作自动 whatsapp 回复机器人,但是我遇到了问题,无法使用嵌套的 if else
from flask import Flask, request
import requests
from twilio.twiml.messaging_response import MessagingResponse
app = Flask(__name__)
@app.route('/mybot', methods = ['POST'])
def mybot():
incoming_msg = request.values.get('Body', '').lower()
resp = MessagingResponse()
msg = resp.message()
responded = False
print(incoming_msg)
if incoming_msg == "list of doctors":
msg.body("We have Dr. Phil with us today")
responded = True
if "book appointment" in str.lower(incoming_msg) or "see a doctor" in str.lower(incoming_msg):
msg.body("Which department would you like to visit?\nPress :-\n1 - General Surgery\n2 - Internal Medicine\n3 - Gynaecology\n4 - Obstetrics\n5 - Ophthalmology\n6 - Orthopaedics\n7 - Dermatology Venereology & Leprology\n8 - ENT\n9 - Paediatric")
if (incoming_msg == "1" or "general surgery" in incoming_msg): # This statement gets ignored
msg.body("General Surgery")
responded = True
其中 if (incoming_msg == "1" or "general surgery" in incoming_msg):
是问题陈述。
有什么办法可以解决这个问题吗?
在这种情况下,您不能嵌套它们。用户的每个回答都是一条新的 SMS/WhatsApp 消息,并将再次调用 mybot()
function/webhook,因此在第二次调用中您将不会 预约 or see a doctor in the incoming_msg
but just a number or the name of the department.
这样试试:
def mybot():
incoming_msg = request.values.get('Body', '').lower()
resp = MessagingResponse()
msg = resp.message()
responded = False
if incoming_msg == "list of doctors":
msg.body("We have Dr. Phil with us today")
responded = True
if "book appointment" in str.lower(incoming_msg) or "see a doctor" in str.lower(incoming_msg):
msg.body("Which department would you like to visit?\nPress :-\n1 - General Surgery\n2 - Internal Medicine\n3 - Gynaecology\n4 - Obstetrics\n5 - Ophthalmology\n6 - Orthopaedics\n7 - Dermatology Venereology & Leprology\n8 - ENT\n9 - Paediatric")
responded = True
if incoming_msg == "1" or "general surgery" in incoming_msg:
msg.body("General Surgery")
responded = True
[...]
只要您的所有 options/inputs 都是不同的,这就有效。