0

我的任务是创建一些基于一天中时间的呼叫路由规则。3CX(我们使用的系统)提供了有关如何执行此操作的文档,并且我已经在一定程度上发挥了作用。但是,为了获得他们提供此 C# 片段的时间,这是调用流设计器中的一种方法:

return DateTime.Now.Hour < 9;

这将返回 true 或 false,并且条件读取此布尔输出,并根据该输出确定将调用发送到何处。

我需要编辑此代码片段,以根据 is 是否在 8:00 到 16:30 之间为我提供布尔输出。

我不是开发人员——我很久以前就涉足过 Python,但这对我没有帮助。

我什至不确定这是否是有效的 C# 代码,但它确实可以按原样工作。

配置中的行如下所示:

<ns0:ExecuteCSharpCodeComponent ReturnsValue="True" Code="return DateTime.Now.Hour &lt; 9;" ParameterList="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;ArrayOfScriptParameter xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; /&gt;" Description="IsTime0to9" MethodName="IsTime0to9" DebugModeActive="False" x:Name="timeFrom0To9" />

此配置行检查小时是否在 9 到 12 之间:

<ns0:ExecuteCSharpCodeComponent ReturnsValue="True" Code="return DateTime.Now.Hour &gt;= 9 &amp;&amp; DateTime.Now.Hour &lt; 12;" ParameterList="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;ArrayOfScriptParameter xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; /&gt;" MethodName="IsTime9to12" DebugModeActive="False" x:Name="timeFrom9To12" />

欢迎任何意见。

谢谢

4

1 回答 1

0

你不能通过比较分钟和小时的数量来真正做到这一点,因为最后你不能写一个有效的条件,除非你真的想把它分支出来,这不是那么有效或很好。

return DateTime.Now.Hour >= 8 && (DateTime.Now.Hour <= 16 && DateTime.Now.Minute <= 30)

每次超过 30 分钟都会失败。我建议使用 TimeSpan,因为您可以通过调用DateTime.Now.TimeOfDay来调用当前时间。

TimeSpan startTime = new TimeSpan(8, 0, 0); //sets the 8:00 time
TimeSpan endTime = new TimeSpan(16, 30, 0); //sets the 16:30 time

return startTime <= DateTime.Now.TimeOfDay && endTime >= DateTime.Now.TimeOfDay;

或者您可以将其重写为一行

return new TimeSpan(8, 0, 0) <= DateTime.Now.TimeOfDay && new TimeSpan(16, 30, 0) >= DateTime.Now.TimeOfDay;
于 2020-01-15T23:30:24.403 回答