本系列文章详细介绍使用 .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 内核实现 在线客服系统 的复合客服端程序相关推荐

  1. 网站客服系统_网页客服系统安装使用_GOFLY在线客服系统

    GOFLY提供网站客服系统,网页客服系统 GOFLY,一套可私有化部署的免费开源客服系统,基于Golang开发,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库, ...

  2. 使用智能客服系统提高了客服工作效率

    使用智能客服系统提高了客服工作效率,及时的抓取信息,能够为企业提高留下各户的成功率,给企业的快速发展提供强有力的支持.在目前这个受疫情影响的环境中,越来越多的人为了保障安全,会有大量的人选择进行线上咨 ...

  3. 微信个人号客服系统淘宝客发单机器人sdk服务端接口列表

    微信个人号客服系统淘宝客发单机器人sdk服务端接口列表 case HeartBeatReq: {// 客户端发送的心跳包heartBeatReqHandler.handleMsg(ctx, msgVo ...

  4. 客控系统服务器,关于 客控系统厂家 的客控系统 您了解多少

    关于 客控系统厂家 的客控系统 您了解多少 作者: 大行智控发表时间:2020-08-21 09:03:15浏览量:2144 智慧酒店是当下酒店行业的潮流,而客控系统作为目前实现酒店智能化的最有效方式 ...

  5. Live800:在线客服系统如何为客服减负?

    和人直接打交道的工作都不会轻松.作为和客户联系最为密切的客服,承受的压力可想而知. 压力重.工作创造性低.重复度高.强度大,甚至还经常遇到骚扰客户不讲理还爱给差评,客服人心中一大堆苦水翻腾,就要溢出来 ...

  6. 在线客服系统代码_h5客服_对接公众号_支持APP_支持多语言

    前言 客服系统比较常见,主流的还是采用三方SDK接入,这些SDK的实现方式大都采用长连接,性能要求比较高,费用也偏高.我们在此的目标是开发一个属于自己的客服系统,完全的无依赖第三方,完全自己控制. 一 ...

  7. 如何为开源客服系统春松客服贡献代码 | Chatopera

    目录 成为春松客服开发者 确定工作的内容 搭建开发环境 完成开发和测试 Git 使用概述 管理工作区 成为一个优秀的开发者 关于心态 关于技能 推送代码 提交 PR 到春松客服 恭喜您 春松客服一直会 ...

  8. 商淘软件IM客服系统 即时对话客服系统 客服互动

    商淘软件IM客服系统,是为提升商淘电商生态体验.能与商淘电商生态无缝对接的独立客服系统,支持商淘电商生态插件一键安装.多端适配的即时聊天系统. 下面我们来看看,这套客服系统是如何发送信息.完成商家与客 ...

  9. ASP.NET版在线客服系统源码 带服务端

    代码分网站,服务端,客端三部份组成. 不是外面那种纯网页的在线客服源码跟这没的比. 演示功能参考www.qchat.cn 转载于:https://www.cnblogs.com/sxsoft/arch ...

最新文章

  1. 如何评估深度学习模型效果?阿里工程师这么做
  2. Netbeans OpenGL使用
  3. IE8 能否再创辉煌?
  4. Signal和Slot是同步的还是异步的
  5. 基于visual Studio2013解决C语言竞赛题之1083人机博弈
  6. ES6新特性_ES6生成器函数声明与调用---JavaScript_ECMAScript_ES6-ES11新特性工作笔记020
  7. 趣说单例模式——选班长
  8. ORACLE忘记用户名密码
  9. 基于Go Packet实现网络数据包的捕获与分析
  10. 大哥你遇到问题,博文在此,连找都懒得找吗?
  11. 用 JAVA 编写一个 M3U8 视频下载器
  12. Hello CSND
  13. 鸿蒙系统合作的全屋智能,不断升级“常用常新”搭载鸿蒙系统的全屋智能有多酷?...
  14. 思科cisco2800系列路由器
  15. 电镀用整流电源设计matlab,高功率因数的大功率开关电镀电源研究
  16. [Unity插件]着色器关键字分析工具ShaderControl
  17. 第7-9节项目2-歌手大奖赛计分系列(1)
  18. 42表盘直径是从哪测量_手表尺寸怎么选择 手表尺寸怎么测量
  19. 超标量处理器设计 姚永斌 第7章 寄存器重命名 摘录
  20. 【C++】-- 友元

热门文章

  1. mysql 怎么实现随机查询并分页,不重复查询
  2. 【转】SMIL基础教程(1)
  3. java byte转bigdecimal_Java BigDecimal byteValueExact()用法及代码示例
  4. ASP.NET WebApi 基于JWT实现Token签名认证
  5. ActiveMQ在windows下启动失败解决方案
  6. Linux系统运维之路
  7. Linux 用户名、主机添加背景色
  8. hdu_1728_逃离迷宫(bfs)
  9. c#写字板实现加粗功能_Windows 7中写字板和绘画中的新功能
  10. 如何添加引文标_如何在Google文档中查找和添加引文