我正在构建一个短信应用程序,并且我有一个合规处理程序,该程序使客户同意我的隐私权政策,然后再通过是,是或开始来发起对话。之后,我说出“我们如何为您提供帮助”,就可以设置一个对话启动器来启动对话。但是每次客户发送(是,是,开始)时,对话启动程序都会再次发送。我需要它,以便它仅在客户未选择加入时才开始发送对话?
var welcomeQ = true;
if (String.Compare(incoming.Body, "YES", StringComparison.OrdinalIgnoreCase) ==0 ||
String.Compare(incoming.Body, "Y", StringComparison.OrdinalIgnoreCase) == 0 ||
String.Compare(incoming.Body, "START", StringComparison.OrdinalIgnoreCase) == 0)
{
customer.OptedIn = true;
welcomeQ = false;
}
if (!welcomeQ)
{
var WelcomeMessage = new MessagingResponse();
var welcomeMessage = @"How can we help you today?";
welcomeQ = false;
WelcomeMessage.Message(welcomeMessage);
return TwiML(WelcomeMessage);
}
//Compliance Handler
if (!customer.OptedIn)
{
var optresponse = new MessagingResponse();
var optMessage = target_location.PrivacyPolicy.Organization + @".
Msg&data rates may apply.
Reply HELP for help, STOP to cancel.
T&C/Privacy Policy: " + target_location.PrivacyPolicy.PolicyLink +
@" Reply YES (y) to continue";
optresponse.Message(optMessage);
return TwiML(optresponse);
}
答案 0 :(得分:0)
if ((String.Compare(incoming.Body, "YES", StringComparison.OrdinalIgnoreCase) ==0 ||
String.Compare(incoming.Body, "Y", StringComparison.OrdinalIgnoreCase) == 0 ||
String.Compare(incoming.Body, "START", StringComparison.OrdinalIgnoreCase) == 0) &&
!customer.OptedIn)
{
customer.OptedIn = true;
welcomeQ = false;
}
您需要先检查客户是否已选择加入,然后再检查响应是否为Y
。这样就不会将welcomeQ
设置为false
答案 1 :(得分:0)
在您的第一个IF结束时,您将设置welcomeQ = false。如果welcomeQ = false,则下一条IF语句将运行。这将始终导致“我们今天如何为您提供帮助?”是,是,开始后出现提示信息。从我可以在此代码段中看到的信息中,您可以一起删除第7行并获得期望的结果,而仅在提供Yes,Y,Start以外的内容时才给出该消息。