MS Bot获取当前页面网址

时间:2018-05-01 04:12:20

标签: c# asp.net botframework

我用MS Bot SDK创建了一个机器人。然后,我想获取我托管机器人的页面URL。我只是将脚本注入页面来托管机器人。但是,是否有人知道如何从C#获取当前页面URL?

我可以看到有人试图使用Activity来获取网址,但我找不到来自Activity的正确属性。

2 个答案:

答案 0 :(得分:2)

  

我只是将脚本注入页面来托管机器人。但是,是否有人知道如何从C#获取当前页面URL?

如果您embed webchat in your web site并且想要获取嵌入网聊的网页的网址,可以尝试以下方法获取网址并将其传递给您的网站。

将网址传递给bot:

if (activity.From.Properties["pageurl"] != null)
{
    var urlref= activity.From.Properties["pageurl"].ToString();
}

在bot应用程序中检索URL:

.slogan {
  text-align: center;
  vertical-align: middle;
  padding: 3em 0;
}

.limiter {
  width: 100%;
  margin: 0 auto;
  padding: 0 10em;
}

.container-login {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  justify-content: center;
}

.wrap-login {
  width: 500px;
  min-height: 60vh;
  background: #fff;
  border-radius: 2px;
  position: relative;
}

.login-more {
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  width: calc(100% - 740px);
  position: relative;
  z-index: 1;
}

/* tablet and desktop should have similar login-more size 
 in mobile it should be hidden */

@media only screen and (min-width: 768px) {
  .login-more {
    width: calc(100% - 950px);
  }
}

.login-more::before {
  content: "";
  display: block;
  position: absolute;
  z-index: -1;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: rgba(0, 148, 217, 0.83);
}

.login-form {
  width: 100%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -moz-box;
  display: -ms-flexbox;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.login-form-title {
  display: block;
  width: 100%;
  font-size: 39px;
  color: #333333;
  line-height: 1.2;
  text-align: left;
  margin-top: 20px;
}

.p-l-50 {
  padding-left: 50px;
}
.p-r-50 {
  padding-right: 50px;
}
.p-t-50 {
  padding-top: 50px;
}
.p-b-50 {
  padding-bottom: 50px;
}

.input-field {
  padding: 25px 0 !important;
}

.login-banner-text {
  color: #fff;
  text-align: center;
  line-height: 1.5em;
  font-size: 3em;
  margin-top: 20px;
}


<div className="limiter">
        <div className="container-login">
          <div className="login-more" style={styles.loginBackground}>
            <h1 className="login-banner-text">
              Your Springboard <br /> to Success
            </h1>
          </div>
          <div className="wrap-login p-l-50 p-r-50 p-t-72 p-b-50">
            <Register
              handleSubmit={this.handleSubmit}
              handleChange={this.handleChange}
              handleCheckbox={this.handleCheckbox}
              userValue={this.state.userValue}
              errors={this.state.errors}
            />
          </div>
        </div>
      </div>

答案 1 :(得分:0)

ChannelData 旨在支持从客户端向僵尸网络发送自定义信息。与Fei Han的回答类似,您可以拦截外发邮件,并为发送的每个活动提供自定义ChannelData。

<script>

    var dl = new BotChat.DirectLine({
        secret: 'yourdlsecret',           
        webSocket: false,
        pollingInterval: 1000,
    });

    var urlref = window.location.href;

    BotChat.App({
        botConnection: {
            ...dl,
            postActivity: activity => dl.postActivity({
                ...activity,
                channelData: { pageurl: urlref }
            })
        },
        user: { id: 'userid' },
        bot: { id: 'botid' },
        resize: 'detect'
    }, document.getElementById("bot"));
</script>

然后,在机器人中:

enter image description here