输入密码网络聊天



我在网上聊天中输入密码有问题。我使用了示例 - 使用密码输入活动自定义网络聊天的密码输入卡,当我输入错误的密码时,它显示一条消息,例如错误的密码,请重试,但是当我输入密码时,我需要显示另一条消息。

我使用了这个代码。

if (card.activity.type === 'message') {
if (
card.activity.from.role === 'bot' &&
(card.activity.text === getLoginMessage(this.props.language) ||
card.activity.text === getLoginRetryMessage(this.props.language))
) {
let message = card.activity.text;
if (!this.hasSubmittedPassword && (card.activity.text === getLoginRetryMessage(this.props.language))) {
message = "Please fill the form and click enter in order to complete your request.";
}
return children => (
<ConnectedPasswordInputActivity
promptMessage={message}
passwordPlaceholder={this.props.literals.password}
language={this.props.language}
handlePasswordSubmit={this.handlePasswordSubmit}
>
{next(card)(children)}
</ConnectedPasswordInputActivity>
);
}

请参考图片

这很难确定,因为您引用了很多隐藏代码,但是我怀疑该问题与您的hasSubmittedPassword函数和您对它的检查有关。

您正在匹配

  1. 一条消息
  2. 从机器人
  3. 其中文本等于getLoginMessagegetLoginRetryMessage返回值

这些正在通过您的检查(基于随附的图像(。

然后,您检查hasSubmittedPassword(显然(正在通过,然后在getLoginRetryMessage(???(上再次检查。第二次检查是不必要的,因为如果第一次检查(card.activity.text = this.getLoginRetryMessage(this.props.language)没有成功,您就不会出现在这if语句中。

这可以简化为:

if (!this.hasSubmittedPassword) {
message = "Please fill the form and click enter in order to complete your request.";
}

话虽如此,您对if(!this.hasSubmittedPassword) {...}的使用只是检查是否有返回值。此函数可能会也可能不会返回正确的值,但您的支票并不关心。它只想知道是否有值。如果您的逻辑设置为始终返回某些内容(即真,假,是,否,再试一次(,那么它将始终通过。

据我所知,如果您的前三项检查通过,那么您将始终收到辅助消息。

希望有帮助!

最新更新