输入密码网聊

时间:2019-09-11 10:59:39

标签: botframework web-chat

我在网络聊天中输入密码时遇到问题。我使用样本-使用密码输入卡的密码输入活动自定义网络聊天,当我输入错误的密码时会显示类似错误的密码的消息,请重试,但是当我输入密码不正确时表格我需要显示另一条消息。

我使用了这段代码。

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>
          );
        }

Refer to the image please

1 个答案:

答案 0 :(得分:0)

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

您要匹配

  1. 一条消息
  2. 来自机器人
  3. 文本等于getLoginMessagegetLoginRetryMessage返回值的地方

这些都通过了您的支票(基于所附图片)。

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

这可以简化为:

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

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

据我所见,如果您的前三项检查都通过了,那么您总是会收到第二条消息。

希望有帮助!