我需要重定向用户。用户发送消息:"显示我的个人资料",bot发送隐藏的链接并将其重定向到个人资料页面。
现在我正在使用backchannel:
botConnection.activity$
.subscribe(activity => redirect(activity.value))
但这意味着,该用户可以看到带有来自bot的链接的消息,并且只有在该用户被重定向之后。如何向用户隐藏此消息?
答案 0 :(得分:2)
我需要重定向用户。用户发送消息:“显示我的个人资料”,机器人发送隐藏的链接并将其重定向到个人资料页面。
正如您所提到的,backchannel mechanism可以帮助您在客户端和机器人之间交换信息,而无需通过将活动类型设置为event
将其呈现给用户。您可以参考以下代码段来满足您的要求。
在机器人对话框中:
if(activity.Text.ToLower() == "show me my profile")
{
var reply = context.MakeMessage() as IEventActivity;
reply.Type = "event";
reply.Name = "showprofile";
//store the url of user profile in Value property
reply.Value = $"{profile_url}";
await context.PostAsync((IMessageActivity)reply);
}
在网络聊天客户端:
//listens for "showprofile" event from the bot
botConnection.activity$
.filter(activity => activity.type === "event" && activity.name === "showprofile")
.subscribe(activity => showmyprofile(activity.value));
function showmyprofile(profile_url) {
window.open(profile_url);
}