Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在DNN站点中嵌入bot_Javascript_Html_Botframework_Dotnetnuke_Direct Line Botframework - Fatal编程技术网

Javascript 在DNN站点中嵌入bot

Javascript 在DNN站点中嵌入bot,javascript,html,botframework,dotnetnuke,direct-line-botframework,Javascript,Html,Botframework,Dotnetnuke,Direct Line Botframework,我必须在一个由.NETNuke(DNN)构建的页面中嵌入一个微软机器人框架的机器人。我不能用IFRAME来实现这一点,因为我必须从DNN中插入聊天参数,所以我按照示例使用Javascript和DirectLine插入聊天窗口。现在的问题是,当我尝试向我的机器人发送消息时,页面会完全重新加载,因为它是来自某个html表单的提交请求。这是我在.ascx文件中的代码: <script src="https://cdn.botframework.com/botframework-webchat/l

我必须在一个由.NETNuke(DNN)构建的页面中嵌入一个微软机器人框架的机器人。我不能用IFRAME来实现这一点,因为我必须从DNN中插入聊天参数,所以我按照示例使用Javascript和DirectLine插入聊天窗口。现在的问题是,当我尝试向我的机器人发送消息时,页面会完全重新加载,因为它是来自某个html表单的提交请求。这是我在
.ascx
文件中的代码:

<script src="https://cdn.botframework.com/botframework-webchat/latest/botchat.js"></script>
<script>
  BotChat.App({
    directLine: { secret: direct_line_secret },
    user: { id: 'userid' },
    bot: { id: 'botid' },
    resize: 'detect'
  }, document.getElementById("div_of_the_bot"));
</script>

BotChat.App({
directLine:{secret:direct\u line\u secret},
用户:{id:'userid'},
bot:{id:'botid'},
调整大小:“检测”
},document.getElementById(“机器人的div_”);

我不知道为什么会发生这种情况,也不知道最终如何修改ms js脚本,因此我正在尝试找到解决方案。

您需要防止默认行为以避免表单提交。例如:

<div id="div_of_the_bot"></div>
<script>
    $(document).on("keypress", "#div_of_the_bot input",
        function (e) {
            if (e.which === 13) {
                e.preventDefault();
                e.stopPropagation();
            }
        });
</script>

$(文档)。在(“按键”上,“机器人输入的分割”,
职能(e){
如果(e.which==13){
e、 预防默认值();
e、 停止传播();
}
});

顺便说一句,请查看允许将基于Bot框架的聊天机器人集成到DNN的功能,包括对Skype和Facebook频道的支持。该模块最近由我本人在2018年DNN Connect上展示,并且是开源的。感谢Intelequia的Javier Gracia构建它。

您需要防止默认行为以避免表单提交。例如:

<div id="div_of_the_bot"></div>
<script>
    $(document).on("keypress", "#div_of_the_bot input",
        function (e) {
            if (e.which === 13) {
                e.preventDefault();
                e.stopPropagation();
            }
        });
</script>

$(文档)。在(“按键”上,“机器人输入的分割”,
职能(e){
如果(e.which==13){
e、 预防默认值();
e、 停止传播();
}
});
顺便说一句,请查看允许将基于Bot框架的聊天机器人集成到DNN的功能,包括对Skype和Facebook频道的支持。该模块最近由我本人在2018年DNN Connect上展示,并且是开源的。感谢来自Intelequia的Javier Gracia建造了它

现在的问题是,当我尝试向我的机器人发送消息时,页面会完全重新加载,因为它是来自某个html表单的提交请求

Send按钮的呈现方式如下所示,对于大多数浏览器,按钮的默认类型是submit。所以,若单击“发送”按钮,它将提交表单数据并重新加载页面

要解决此问题,您可以尝试:

1) 为发送按钮设置
type=“button”

$("button.wc-send").attr("type", "button");
2) 将“机器人的div”放在元素外部

3) 修改WebChat的源,然后单击。在Shell.tsx文件中:

private onKeyPress(e: React.KeyboardEvent<HTMLInputElement>) {
    if (e.key === 'Enter') {

        //prevent the default behavior
        e.preventDefault();

        this.sendMessage();
    }
}

private onClickSend(evt) {

    //prevent the default behavior
    evt.preventDefault();

    this.sendMessage();
}
private onKeyPress(e:React.KeyboardEvent){
如果(e.key=='Enter'){
//防止默认行为
e、 预防默认值();
这是sendMessage();
}
}
专用onClickSend(evt){
//防止默认行为
evt.preventDefault();
这是sendMessage();
}
现在的问题是,当我尝试向我的机器人发送消息时,页面会完全重新加载,因为它是来自某个html表单的提交请求

Send按钮的呈现方式如下所示,对于大多数浏览器,按钮的默认类型是submit。所以,若单击“发送”按钮,它将提交表单数据并重新加载页面

要解决此问题,您可以尝试:

1) 为发送按钮设置
type=“button”

$("button.wc-send").attr("type", "button");
2) 将“机器人的div”放在元素外部

3) 修改WebChat的源,然后单击。在Shell.tsx文件中:

private onKeyPress(e: React.KeyboardEvent<HTMLInputElement>) {
    if (e.key === 'Enter') {

        //prevent the default behavior
        e.preventDefault();

        this.sendMessage();
    }
}

private onClickSend(evt) {

    //prevent the default behavior
    evt.preventDefault();

    this.sendMessage();
}
private onKeyPress(e:React.KeyboardEvent){
如果(e.key=='Enter'){
//防止默认行为
e、 预防默认值();
这是sendMessage();
}
}
专用onClickSend(evt){
//防止默认行为
evt.preventDefault();
这是sendMessage();
}