我用MS Bot SDK创建了一个机器人。然后,我想获取我托管机器人的页面URL。我只是将脚本注入页面来托管机器人。但是,是否有人知道如何从C#获取当前页面URL?
我可以看到有人试图使用Activity来获取网址,但我找不到来自Activity的正确属性。
答案 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>
然后,在机器人中: