使用 WPF + Chrome 内核实现 在线客服系统 的复合客服端程序
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程。本产品已经成熟稳定并投入商用。
免费使用 & 私有化部署免费下载:https://docs.shengxunwei.com/Post/f7bc8496-14ee-4a53-07b4-08d8e3da6269
视频实拍:演示升讯威在线客服系统在网络中断,直接禁用网卡,拔掉网线的情况下,也不丢消息,不出异常。
https://blog.shengxunwei.com/Home/Post/fe432a51-337c-4558-b9e8-347b58cbcd53
对于在线客服与营销系统,客服端指的是后台提供服务的客服或营销人员,他们使用客服程序在后台观察网站的被访情况,开展营销活动或提供客户服务。在本篇文章中,我将详细介绍如何通过 WPF + Chrome 内核的方式实现复合客服端应用程序。
在 1.3 版本之前,客服端程序使用的是 WebBrowser 组件,也就是 IE 内核,随时系统用户的持续增加,我偶尔会收到一些细节问题的反馈,比如在部分版本(萝卜版番茄版毛桃版之类)的 Windows 7 上,客服必须先点击输入框上面的加粗或斜体等按钮,才能激活输入框。经过调查发现是这部分 Windows 7 上 WebBrowser 组件所加载的 IE 内核存在问题,表现出了一些行为的不一致。
为了解决这个问题,从 1.5 版本开始客服程序中的 Web 容器我升级到了最新的 Chrome 内核,除了获得了更好的性能之外,得以使程序在不同版本的 Windows 系统上的表现一致。
1.5 版本之前的用户可以考虑尽快升级。
先看下效果,客服程序界面中的 聊天记录部分、文字输入框部分 使用的是基于 Chrome 内核的 WebView2 进行呈现的。
而访客端,则反之向下兼容,在 PC 端兼容到 IE8 :
要实现这样的效果只需三个步骤
嵌入组件
响应事件
调用 JavaScript 函数
1. 嵌入组件
首先使用 NuGet 将 WebView2 SDK 添加到项目中,然后将 WebView 添加窗口界面。
<Window x:Class="WPF_Getting_Started.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:{YOUR PROJECT NAME}"xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"mc:Ignorable="d"Title="MainWindow"Height="450"Width="800"
><Grid><DockPanel><wv2:WebView2 Name="webView"Source="https://www.microsoft.com"/></DockPanel></Grid>
</Window>
2. 响应事件
在网页导航期间,WebView2 控件将引发事件。 承载 WebView2 控件的应用侦听以下事件。
NavigationStarting
SourceChanged
ContentLoading
HistoryChanged
NavigationCompleted
例:修改构造函数以匹配以下代码段并添加 EnsureHttps 函数。
public MainWindow()
{InitializeComponent();webView.NavigationStarting += EnsureHttps;
}void EnsureHttps(object sender, CoreWebView2NavigationStartingEventArgs args)
{String uri = args.Uri;if (!uri.StartsWith("https://")){args.Cancel = true;}
}
3. 调用 JavaScript 函数
可以在运行时使用主机应用将 JavaScript 代码注入控件。 可以运行任意 JavaScript 或添加初始化脚本。 在删除 JavaScript 之前,注入的 JavaScript 适用于所有新的顶级文档和任何子框架。
例如,添加在用户导航到非 HTTPS 网站时发送警报的脚本。 修改 EnsureHttps 函数以将脚本注入到使用 ExecuteScriptAsync 方法的 Web 内容中。
void EnsureHttps(object sender, CoreWebView2NavigationStartingEventArgs args)
{String uri = args.Uri;if (!uri.StartsWith("https://")){webView.CoreWebView2.ExecuteScriptAsync($"alert('{uri} is not safe, try an https link')");args.Cancel = true;}
}
完成
只需要以上简单三个步骤,嵌入组件、响应事件、调用 JavaScript 函数。就可以完成 WPF + Chrome 内核 的复合式应用程序!
使用 WPF + Chrome 内核实现 在线客服系统 的复合客服端程序相关推荐
- 网站客服系统_网页客服系统安装使用_GOFLY在线客服系统
GOFLY提供网站客服系统,网页客服系统 GOFLY,一套可私有化部署的免费开源客服系统,基于Golang开发,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库, ...
- 使用智能客服系统提高了客服工作效率
使用智能客服系统提高了客服工作效率,及时的抓取信息,能够为企业提高留下各户的成功率,给企业的快速发展提供强有力的支持.在目前这个受疫情影响的环境中,越来越多的人为了保障安全,会有大量的人选择进行线上咨 ...
- 微信个人号客服系统淘宝客发单机器人sdk服务端接口列表
微信个人号客服系统淘宝客发单机器人sdk服务端接口列表 case HeartBeatReq: {// 客户端发送的心跳包heartBeatReqHandler.handleMsg(ctx, msgVo ...
- 客控系统服务器,关于 客控系统厂家 的客控系统 您了解多少
关于 客控系统厂家 的客控系统 您了解多少 作者: 大行智控发表时间:2020-08-21 09:03:15浏览量:2144 智慧酒店是当下酒店行业的潮流,而客控系统作为目前实现酒店智能化的最有效方式 ...
- Live800:在线客服系统如何为客服减负?
和人直接打交道的工作都不会轻松.作为和客户联系最为密切的客服,承受的压力可想而知. 压力重.工作创造性低.重复度高.强度大,甚至还经常遇到骚扰客户不讲理还爱给差评,客服人心中一大堆苦水翻腾,就要溢出来 ...
- 在线客服系统代码_h5客服_对接公众号_支持APP_支持多语言
前言 客服系统比较常见,主流的还是采用三方SDK接入,这些SDK的实现方式大都采用长连接,性能要求比较高,费用也偏高.我们在此的目标是开发一个属于自己的客服系统,完全的无依赖第三方,完全自己控制. 一 ...
- 如何为开源客服系统春松客服贡献代码 | Chatopera
目录 成为春松客服开发者 确定工作的内容 搭建开发环境 完成开发和测试 Git 使用概述 管理工作区 成为一个优秀的开发者 关于心态 关于技能 推送代码 提交 PR 到春松客服 恭喜您 春松客服一直会 ...
- 商淘软件IM客服系统 即时对话客服系统 客服互动
商淘软件IM客服系统,是为提升商淘电商生态体验.能与商淘电商生态无缝对接的独立客服系统,支持商淘电商生态插件一键安装.多端适配的即时聊天系统. 下面我们来看看,这套客服系统是如何发送信息.完成商家与客 ...
- ASP.NET版在线客服系统源码 带服务端
代码分网站,服务端,客端三部份组成. 不是外面那种纯网页的在线客服源码跟这没的比. 演示功能参考www.qchat.cn 转载于:https://www.cnblogs.com/sxsoft/arch ...
最新文章
- 如何评估深度学习模型效果?阿里工程师这么做
- Netbeans OpenGL使用
- IE8 能否再创辉煌?
- Signal和Slot是同步的还是异步的
- 基于visual Studio2013解决C语言竞赛题之1083人机博弈
- ES6新特性_ES6生成器函数声明与调用---JavaScript_ECMAScript_ES6-ES11新特性工作笔记020
- 趣说单例模式——选班长
- ORACLE忘记用户名密码
- 基于Go Packet实现网络数据包的捕获与分析
- 大哥你遇到问题,博文在此,连找都懒得找吗?
- 用 JAVA 编写一个 M3U8 视频下载器
- Hello CSND
- 鸿蒙系统合作的全屋智能,不断升级“常用常新”搭载鸿蒙系统的全屋智能有多酷?...
- 思科cisco2800系列路由器
- 电镀用整流电源设计matlab,高功率因数的大功率开关电镀电源研究
- [Unity插件]着色器关键字分析工具ShaderControl
- 第7-9节项目2-歌手大奖赛计分系列(1)
- 42表盘直径是从哪测量_手表尺寸怎么选择 手表尺寸怎么测量
- 超标量处理器设计 姚永斌 第7章 寄存器重命名 摘录
- 【C++】-- 友元
热门文章
- mysql 怎么实现随机查询并分页,不重复查询
- 【转】SMIL基础教程(1)
- java byte转bigdecimal_Java BigDecimal byteValueExact()用法及代码示例
- ASP.NET WebApi 基于JWT实现Token签名认证
- ActiveMQ在windows下启动失败解决方案
- Linux系统运维之路
- Linux 用户名、主机添加背景色
- hdu_1728_逃离迷宫(bfs)
- c#写字板实现加粗功能_Windows 7中写字板和绘画中的新功能
- 如何添加引文标_如何在Google文档中查找和添加引文