如何清除Bot Builder SDK for .NET中的消息

时间:2018-08-03 08:49:55

标签: botframework bots

我想使用Bot Builder SDK for .NET清除以前的聊天消息。是否可以清除Bot Dialogue的消息C#代码。

通过按一些“清除”按钮寻找一些选项来清除屏幕快照中的所有消息

Sample ScreenShot using BOT

2 个答案:

答案 0 :(得分:2)

  

我想使用Bot Builder SDK for .NET清除以前的聊天消息。是否可以清除Bot Dialogue的消息C#代码。

您已将漫游器配置为连接到网络聊天频道,该消息可能会从漫游器发送到嵌入式Web聊天控件的网站应用。正如我和@MarkB在评论中提到的,要清除在网站内的Webchat窗口中呈现的消息,您可以build and use your customized Web Chat control。我建立了自定义的Web聊天并实现了清除消息功能,您可以参考它。

1)添加清除按钮并为Chat.tsx中的按钮单击事件实现清除消息功能

{
    !!state.format.chatTitle &&
        <div className="wc-header">
            <span>{ typeof state.format.chatTitle === 'string' ? state.format.chatTitle : state.format.strings.title }</span>
        </div>

}
{
    <button className="wc-clear" onClick={ () => this.onClickClear() }>
        <span>Clear Messages</span>
    </button>
}

onClickClear的实现:

/*remove messages*/

private onClickClear() {
    /*alert("111");*/
    Array.from(document.getElementsByClassName("wc-message-wrapper"))
    .forEach(element => element.remove());
}

2)为botchat.scss

中的清除按钮指定样式
.wc-clear{
    background-color:#0078d7;
    box-shadow: 0 1px $c_shadow;
    box-sizing: content-box;
    color: $c01;
    font-weight: 500;
    height: $headerTotalHeight - $headerPaddingTop - $headerPaddingBottom;
    /*left: 0;*/
    letter-spacing: 0.5px;
    padding: $headerPaddingTop $headerPaddingRight $headerPaddingBottom $headerPaddingLeft;
    position: relative;
    /*right: 0;
    top: 0;*/
    display: block;
    float: right;
    z-index: 1;
    border: 0 !important;
}

3)构建到我们自己的版本Web Chat并在网站中使用

测试结果:

enter image description here

或者您可以使用the Backchannel mechanism向网络聊天客户端发送特定的事件活动,然后网络聊天客户端侦听该特定事件并通过使用{{ 1}}类通过JavaScript。

  

我们正在通过ChatBot提供一些SQL报告

如果您想在漫游器应用程序'wc-message-wrapper'MessagesController中访问SQL数据库,则可以使用和利用熟悉的ORM框架。此外,如果您想从托管在Azure上的漫游器应用程序连接到本地数据库,则可以参考this article

答案 1 :(得分:0)

如果您使用的是用c#构建的Bot,并使用Direcline机器人频道将其嵌入HTML页面中。然后,以下代码将帮助您清除聊天消息。

在聊天头上添加重新启动/清除聊天按钮

    <i id="restart" class="fa fa-retweet headicons" aria-hidden="true" style="float: left;" title="Restart Chat"></i>

为此,请使用以下onclick事件

$("#restart").click(function(){

Array.from(document.getElementsByClassName("webchat__stacked_indented_content"))
.forEach(element => element.remove());

});

此方法的一个缺点是,如果在客户端站点中使用此方法,我们将无法再次收到欢迎消息。要在聊天窗口中再次获得欢迎消息,请使用该机器人的C#编码中的类似方法,并再次调用onmemberadd事件以触发欢迎消息。