即时通讯App怎样才能火?背后的技术原理,可以从这5个角度切入

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~本文由腾讯云视频发表于云+社区专栏关注公众号“腾讯云视频”,一键获取 技术干货 | 优惠活动 | 视频方案社交场景iMessage隐藏的省话费小秘密融合通信原理通过短信和IM的结合,可以实现从APP内到APP外的沟通。若你的朋友没有安装应用,你也可以在应用内,导入通讯录好友,给其发消息,只是这个“消息”,会以短信的形式触达。企业办公沟通场景休假旅行,老板电话,这2个词总能凑一起融合通信原理通过IM与呼叫中心结合,企业可以在APP内发起互联网IP电话,经过“中转机”,转为传统电话。企业间沟通的场景甲方和乙方又有了个安全高效的沟通途径融合通信原理两家企业通过对接各自的IM系统,可实现企业通讯录互通,适合于合作伙伴企业间的沟通。警察应急指挥场景网络不佳的情况,采用对讲机,可以向总部大屏幕同步现场情况融合通信原理通过对讲机通信和IM的结合,可以满足一些极端恶劣环境下的消息同步,从对讲机到指挥中心、微信群、app内的消息同步。智能客服场景过(现)去(在),在大众点评上联系商家,只能拨打商家预留的电话,现(将)在(来),“联系商家”入口悄然变成了智能客服,你永远不知道对面是真实的人还是AI机器人融合通信原理通过IM、视频通话、呼叫中心和大数据系统的结合,从APP、小程序内唤起智能客服、视频通话,可以极大的提升用户体验。如何打通IM、传统外呼中心、视频通话答案尽在“融而开放、合以创新”T-HIM融合通信技术开发实战时间:2018.9.8 13:30 -19:30 周六地点:北京市海淀区中关村创业大街10号楼天使汇极客咖啡3楼问答请问小程序即时通讯如何接入发送消息?相关阅读IM即时通讯实现原理iOS 即时通讯 + 仿微信聊天框架 + 源码开发一款即时通讯App,从这几步开始 【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识

October 26, 2018 · 1 min · jiezi

如何看待Spring下单例模式与线程安全的矛盾

前言有多少人在使用Spring框架时,很多时候不知道或者忽视了多线程的问题? 因为写程序时,或做单元测试时,很难有机会碰到多线程的问题,因为没有那么容易模拟多线程测试的环境。那么当多个线程调用同一个bean的时候就会存在线程安全问题。如果是Spring中bean的创建模式为非单例的,也就不存在这样的问题了。 但如果不去考虑潜在的漏洞,它就会变成程序的隐形杀手,在你不知道的时候爆发。而且,通常是程序交付使用时,在生产环境下触发,会是很麻烦的事。Spring使用ThreadLocal解决线程安全问题 我们知道在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域。就是因为Spring对一些Bean(如RequestContextHolder、TransactionSynchronizationManager、LocaleContextHolder等)中非线程安全状态采用ThreadLocal进行处理,让它们也成为线程安全的状态,因为有状态的Bean就可以在多线程中共享了。 一般的Web应用划分为展现层、服务层和持久层三个层次,在不同的层中编写对应的逻辑,下层通过接口向上层开放功能调用。在一般情况下,从接收请求到返回响应所经过的所有程序调用都同属于一个线程 ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下,ThreadLocal比直接使用synchronized同步机制解决线程安全问题更简单,更方便,且结果程序拥有更高的并发性。 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。线程安全问题都是由全局变量及静态变量引起的。 若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。 1) 常量始终是线程安全的,因为只存在读操作。 2)每次调用方法前都新建一个实例是线程安全的,因为不会访问共享的资源。 3)局部变量是线程安全的。因为每执行一个方法,都会在独立的空间创建局部变量,它不是共享的资源。局部变量包括方法的参数变量和方法内变量。 有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。 无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象 .不能保存数据,是不变类,是线程安全的。 有状态对象: 无状态的Bean适合用不变模式,技术就是单例模式,这样可以共享实例,提高性能。有状态的Bean,多线程环境下不安全,那么适合用Prototype原型模式。Prototype: 每次对bean的请求都会创建一个新的bean实例。 Struts2默认的实现是Prototype模式。也就是每个请求都新生成一个Action实例,所以不存在线程安全问题。需要注意的是,如果由Spring管理action的生命周期, scope要配成prototype作用域线程安全案例 SimpleDateFormat( 下面简称 sdf) 类内部有一个 Calendar 对象引用 , 它用来储存和这个 sdf 相关的日期信息 , 例如 sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关 String, Date 等等 , 都是交友 Calendar 引用来储存的 . 这样就会导致一个问题 , 如果你的 sdf 是个 static 的 , 那么多个 thread 之间就会共享这个 sdf, 同时也是共享这个 Calendar 引用 , 并且 , 观察 sdf.parse() 方法 , 你会发现有如下的调用 : Date parse() { calendar.clear(); // 清理calendar … // 执行一些操作, 设置 calendar 的日期什么的 calendar.getTime(); // 获取calendar的时间 } 这里会导致的问题就是 , 如果 线程 A 调用了 sdf.parse(), 并且进行了 calendar.clear() 后还未执行 calendar.getTime() 的时候 , 线程 B 又调用了 sdf.parse(), 这时候线程 B 也执行了 sdf.clear() 方法 , 这样就导致线程 A 的的 calendar 数据被清空了 ( 实际上 A,B 的同时被清空了 ). 又或者当 A 执行了 calendar.clear() 后被挂起 , 这时候 B 开始调用 sdf.parse() 并顺利 i 结束 , 这样 A 的 calendar 内存储的的 date 变成了后来 B 设置的 calendar 的 date 这个问题背后隐藏着一个更为重要的问题 – 无状态:无状态方法的好处之一,就是它在各种环境下,都可以安全的调用。衡量一个方法是否是有状态的,就看它是否改动了其它的东西,比如全局变量,比如实例的字段。 format 方法在运行过程中改动了SimpleDateFormat 的 calendar 字段,所以,它是有状态的。 这也同时提醒我们在开发和设计系统的时候注意下以下三点 :自己写公用类的时候,要对多线程调用情况下的后果在注释里进行明确说明对线程环境下,对每一个共享的可变变量都要注意其线程安全性我们的类和方法在做设计的时候,要尽量设计成无状态的解决办法1. 需要的时候创建新实例: 说明:在需要用到 SimpleDateFormat 的地方新建一个实例,不管什么时候,将有线程安全问题的对象由共享变为局部私有都能避免多线程问题,不过也加重了创建对象的负担。在一般情况下,这样其实对性能影响比不是很明显的。2. 使用同步:同步 SimpleDateFormat 对象public class DateSyncUtil { private static SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); public static String formatDate(Date date)throws ParseException{ synchronized(sdf){ return sdf.format(date); } } public static Date parse(String strDate) throws ParseException{ synchronized(sdf){ return sdf.parse(strDate); } } } 说明:当线程较多时,当一个线程调用该方法时,其他想要调用此方法的线程就要block ,多线程并发量大的时候会对性能有一定的影响。3. 使用 ThreadLocal :public class ConcurrentDateUtil { private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() { @Override protected DateFormat initialValue() { return new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); } }; public static Date parse(String dateStr) throws ParseException { return threadLocal.get().parse(dateStr); } public static String format(Date date) { return threadLocal.get().format(date); }} 或ThreadLocal<DateFormat>(); public static DateFormat getDateFormat() { DateFormat df = threadLocal.get(); if(df==null){ df = new SimpleDateFormat(date_format); threadLocal.set(df); } return df; } public static String formatDate(Date date) throws ParseException { return getDateFormat().format(date); } public static Date parse(String strDate) throws ParseException { return getDateFormat().parse(strDate); } } 说明:使用 ThreadLocal, 也是将共享变量变为独享,线程独享肯定能比方法独享在并发环境中能减少不少创建对象的开销。如果对性能要求比较高的情况下,一般推荐使用这种方法。4. 抛弃 JDK ,使用其他类库中的时间格式化类:使用 Apache commons 里的 FastDateFormat ,宣称是既快又线程安全的SimpleDateFormat, 可惜它只能对日期进行 format, 不能对日期串进行解析。使用 Joda-Time 类库来处理时间相关问题 做一个简单的压力测试,方法一最慢,方法三最快,但是就算是最慢的方法一性能也不差,一般系统方法一和方法二就可以满足,所以说在这个点很难成为你系统的瓶颈所在。从简单的角度来说,建议使用方法一或者方法二,如果在必要的时候,追求那么一点性能提升的话,可以考虑用方法三,用 ThreadLocal 做缓存。 Joda-Time 类库对时间处理方式比较完美,建议使用。总结 回到文章开头的问题:《有多少人在使用Spring框架时,很多时候不知道或者忽视了多线程的问题?》 其实代码谁都会写,为什么架构师写的代码效果和你的天差地别呢?应该就是此类你没考虑到的小问题而架构师都考虑到了。 架构师知识面更广,见识到的具体情况更多,解决各类问题的经验更丰富。只要你养成架构师的思维和习惯,那你离架构师还会远吗? ...

October 23, 2018 · 2 min · jiezi

有赞容器化实践

前言容器化已经成为一种趋势,它可以解决很多运维中的痛点,比如效率、成本、稳定性等问题,而接入容器的过程中往往也会碰到很多问题和不便。在有赞最开始做容器化是为了快速交付开发测试环境,在容器化的过程中,我们碰到过容器技术、运维体系适配、用户使用习惯改变等各种问题,本文主要介绍有赞容器化过程中碰到的问题以及采取的方案。有赞容器化的初衷在有赞同时会有很多个项目、日常在并行开发,环境的抢占问题严重影响了开发、测试和上线的效率,我们需要给每个项目提供一套开发联调(daily)、测试环境(qa),并且随着项目、日常的生命周期项目环境也会随着创建和销毁,我们最早的容器化需求就是怎么解决环境快速交付的问题。[有赞环境]上面是有赞大致的研发流程,在标准流程中我们有四套稳定环境,分别是 Daily 环境、Qa 环境、预发环境和测试环境。我们的开发、测试、联调工作一般并不会直接在稳定环境中进行,而是会拉一套独立的项目环境出来,随着代码经过开发、测试、预发验收最终发布到生产环境后再同步回 Daily/Qa 的稳定环境中。[项目环境]我们提供了一套以最小的资源投入满足最大项目并行度的环境交付方案,在 Daily/Qa 稳定环境的基础上,隔离出N个项目环境,在项目环境里只需要创建该项目所涉及应用的计算资源,其它缺失的服务调用由稳定环境提供,在项目环境里,我们大量使用了容器技术。[持续交付]后面我们又在项目环境快速交付的解决方案的基础上实现了持续交付流水线,目前已经有超过 600 套项目/持续交付环境,加上 Daily/Qa 稳定环境,涉及计算实例四五千个,这些计算实例无论是 cpu 还是内存使用率都是非常低的,容器化可以非常好的解决环境交付的效率问题,以及提高资源使用率来节省成本的投入。有赞容器化方案我们的容器化方案基于 kubernetes(1.7.10)和 docker(1.12.6)、docker(1.13.1),下面介绍一下我们在各个方面遇到的问题以及解决方案。网络有赞后端主要是 java 应用,采用定制的 dubbo 服务化方案,过程中无法做到整个单元全量容器化,和原有集群在网络路由上互通也就成了刚需,由于我们无法解决公有云上 overlay 网络和公有云网络的互通问题,所以一开始我们放弃了 overlay 网络方案,采用了托管网络下的 macvlan 方案,这样既解决了网络互通的问题也不存在网络性能问题,但是也就享受不到公有云弹性资源的优势了。随着有赞多云架构的发展以及越来越多的云厂商支持容器 overlay 网络和 vpc 网络打通,弹性资源的问题才得到了缓解。隔离性容器的隔离主要利用内核的 namespace 和 cgroup 技术,在进程、cpu、内存、IO等资源隔离限制上有比较好的表现,但其他方面和虚拟机相比存在着很多的不足,我们在使用过程中碰到最多的问题是容器里看到的 cpu 数和内存大小不准确,因为/proc文件系统无法隔离,导致容器里的进程"看到"的是物理机的 cpu 数以及内存大小。内存问题我们的 java 应用会根据服务器的内存大小来决定 jvm 参数应该怎么配置,我们是采用 lxcfs 方案来规避的。CPU 数的问题因为我们有超卖的需求以及 kubernetes 默认也是采用 cpu share 来做 cpu 限制,虽然我们使用了 lxcfs,CPU 数还是不准的。jvm 以及很多 Java sdk 都会根据系统的 CPU 数来决定创建多少线程,导致 java 应用在线程数和内存使用上都比虚拟机多的多,严重影响运行,其他类型的应用也有类似的问题。我们会根据容器的规格内置一个环境变量 NUM_CPUS,然后比如 nodejs 应用就会按照这个变量来创建它的 worker 进程数。在解决 java 类应用的问题时,我们索性通过 LD_PRELOAD 将 JVM_ActiveProcessorCount 函数覆盖掉,让它直接返回 NUM_CPUS 的值[1]。应用接入在容器化之前,有赞的应用已经全部接入到发布系统,在发布系统里已经标准化了应用的打包、发布流程,所以在应用接入方面成本还是比较小的,业务方无需提供 Dockerfile。nodejs, python,php-soa 等用 supervisord 托管的应用,只需要在 git 仓库里提供 app.yaml 文件定义运行需要的 runtime 和启动命令即可。java 标准化启动的应用业务方无需改动java 非标准化的应用需要做标准化改造镜像集成容器镜像我们分了三层,依次为 stack 层(os),runtime 层(语言环境),应用层(业务代码和一些辅助agent),应用以及辅助 agent 由 runit 来启动。由于我们的配置还没有完全分离,在应用层目前还是每个环境独立打包,镜像里除了业务代码之外,我们还会根据业务的语言类型放一些辅助的 agent。我们一开始也想将各种 agent 拆成多个镜像,然后每个 pod 运行多个容器,后来因为解决不了 pod 里容器的启动顺序(服务启动有依赖)问题,就把所有服务都扔到一个容器里去运行了。我们的容器镜像集成过程也是通过 kubernetes 来调度的(会调度到指定的打包节点上),在发布任务发起时,管控系统会在集群中创建一个打包的 pod,打包程序会根据应用类型等参数编译代码、安装依赖,并且生成 Dockerifile,然后在这个 pod 中使用 docker in docker 的方式来集成容器镜像并推送到仓库。为了加速应用的打包速度,我们用 pvc 缓存了 python 的 virtualenv,nodejs 的 node_modules,java 的 maven 包等文件。另外就是 docker 早的版本里,Dockerfile ADD 指令是不支持指定文件属主和分组的,这样会带来一个问题就是需要指定文件属主时(我们的应用是以 app 账号运行的)需要多运行一次 RUN chown,这样镜像也就多了一层数据,所以我们打包节点的 docker 版本采用了官方比较新的 ce 版本,因为新版本支持 ADD –chown 特性。负载均衡(ingress)有赞的应用内部调用有比较完善的服务化和 service mesh 方案,集群内的访问不用过多考虑,负载均衡只需要考虑用户和系统访问的 http 流量,在容器化之前我们已经自研了一套统一接入系统,所以在容器化负载均衡上我们并没有完整按照 ingress 的机制来实现 controller,ingress 的资源配置是配在统一接入里的,配置里面转发的 upstream 会和 kubernetes 里的 service 关联,我们只是做了一个 sync 程序 watch kube-api,感知 service 的变化来实时更新统一接入系统中 upstream 的服务器列表信息。容器登录和调试在容器化接入过程中开发会反馈是控制台比较难用,虽然我们优化了多次,和 iterm2 等的体验还是有所不足,最终我们还是放开了项目/持续交付环境这种需要频繁登陆调试的 ssh 登陆权限。另外一个比较严重的问题是,当一个应用启动后健康检查有问题会导致 pod 一直在重新调度,而在开发过程中开发肯定是希望看到失败现场的,我们提供了调试发布模式,让容器不做健康检查。日志有赞有专门的日志系统,我们内部叫天网,大部分日志以及业务监控数据都是通过 sdk 直接打到天网里去了,所以容器的标准输出日志仅仅作为一种辅助排查问题的手段。我们容器的日志收集采用的是 fluentd,经过 fluentd 处理后按照天网约定的日志格式打到 kafka,最终由天网处理进入 es 做存储。灰度发布我们涉及到灰度发布的流量主要包含三部分:用户端的 http 访问流量应用之间的 http 调用应用之间的 dubbo 调用首先,我们在入口的统一接入上统一打上灰度需要用的各种维度的标签(比如用户、店铺等),然后需要对统一接入、http client 以及 dubbo client 做改造,目的是让这些标签能够在整个调用链上透传。我们在做容器灰度发布时,会发一个灰度的 deployment,然后在统一接入以及灰度配置中心配置灰度规则,整个链路上的调用方都会感知这些灰度规则来实现灰度发布。标准环境容器化标准环境的出发点和项目环境类似,标准稳定环境中的 daily,qa,pre 以及 prod 中超过一半运行在低水位的服务器的资源非常浪费。因为成本考虑 daily,qa,pre 里都是以单台虚拟机运行的,这样一旦需要发布稳定环境将会造成标准稳定环境和项目环境的短暂不可用。虚拟机交付速度比较慢,使用虚拟机做灰度发布也比较复杂。虚拟机往往会存在几年甚至更长的时间,运行过程中操作系统以及基础软件版本的收敛非常麻烦。标准环境容器化推进经过之前项目/持续交付的上线和迭代,大部分应用本身已经具备了容器化的条件。不过对于上线来说,需要整个运维体系来适配容器化,比如监控、发布、日志等等。目前我们生产环境容器化准备基本完成,生产网已经上了部分前端 nodejs 应用,其他应用也在陆续推动中,希望以后可以分享更多生产环境中的容器化经验。结束语以上是有赞在容器化上的应用,以及在容器化过程中碰到的一些问题和解决方案,我们生产环境的容器化还处于开始阶段,后面还会碰到各种个样的问题,希望能够和大家互相学习,后面能够有更多的经验分享给大家。参考文献[1] https://github.com/fabianenar… ...

September 29, 2018 · 1 min · jiezi

张腾:腾讯云融合通信应用场景及案例分享

张腾,腾讯通信云高级产品经理,先后负责过手机、智能硬件等终端产品,对运营商、即时通信、音视频产品均有了解,负责产品场景话包装,对融合通信的应用场景具有较深了解。如何帮助这些很大的企业,基于我们融合通信的方案帮助他们去实现他们想要的,提高效率这个核心的诉求。我们也整理出来了一些核心的挑战。主要我们分成四个部分,一个部分是关于企业内部沟通的一些挑战的方面,以及他们针对客户做营销一些挑战,同时还有包括像不同企业之间希望提高企业之间的效率的挑战,最后我们也是基于他们企业一些诉求提供了我们对于他们的整套集成方案。这些是企业内沟通的挑战,首先大家可能都会遇到过,企业内部可能很多APP,尤其通信类的,包括像微信、QQ、钉钉,但是你会发现每一个自己员工在使用APP的时候都有自己爱好,有些人就用QQ,有些人就用微信,大家沟通起来会降低很多效率。还有另外一块是因为大家使用基于微信、QQ的联系方案,所以大家在找人的时候没有办法去很好很快速的找到自己要对应的人,没有自己的架构体系支撑他们寻找到快速对接的人。同时还有像包括企业内部多系统,每一套系统流程全部是独立的,所以说可能某一个单子下来,需要在几个系统里面同时组单,导致整个业务流程相当的耗时。另外就是销售,大家没办法掌握。可能很多销售说,我现在出去见客户了,其实大家并不知道他在干什么。还有移动安全,因为移动安全大家都做公网,很多人都会担心这种信息泄露,外部沟通不便,受到人工影响很大,有些人在离职之后,他所有记录全部就消失掉了,可能跟着这个人走了,没有办法进行有效的留存。这是我们跟客户进行沟通了之后筛选出来几个比较重要的挑战,对于企业内部沟通的。对于我们客户跟企业之间,企业跟我们消费者之间沟通,企业更需要什么,首先他们需要是精准匹配精准营销的能力,他们希望有人可以告诉他们,他们目标客户是谁,谁能买他们产品,他们也需要数据支撑他们如何有效进行市场运作,以及品牌的运作,实现他们品牌的优势。另外他们销售转化,通过什么样的方案,可以实现更多消费者购买他们的产品。最后就是他们希望有更多宣传渠道,大家经常见到是系统推送,外部中心,短信等等多通道的营销手段使企业可以触达更多客户,实现他们整个的营销的闭环。首先对于很多企业来说,缺乏有效的沟通手段,大家全部都是通过刚才说的微信、QQ,只能去找到独立的一些人,很难去看到对方的整个部门是什么情况,是不了解的,包括他们部门在对方体系里面是一个什么样的地位,或者他们的从属是什么样子。每个部门是不一样的,所以会导致我们在沟通的时候缺乏效率。另外一个就是刚才说到寻找对方企业人员难如登天,在沟通的时候没有办法找到很多的资源,另外就是可能销售对接上之后发现采购去对接了,或者其他部门同时也对接的时候,很难找到有效的对接人,浪费大量时间也没有找到核心的人员,进行有效的沟通。另外就是采购销售离职之后企业之间会失联,销售在走了之后所有关于这个企业之间的对接就全部停掉了,后续的人可能会很难接起来,不知道找谁,或者之前的客群关系做成什么样子会没有人知道。另外就是缺乏上下游有效管理,对于我们供应链,对于我们的渠道,没有办法很好实现管控,就导致信息孤岛。同时整个数据和信息安全无法得到保证,大家很多时候都是在微信群、QQ群里沟通,可能这种对于信息的保护,包括像沟通出现问题的时候,进行问题信息的回溯的时候出现很多问题,没有办法找到当时可能责任人是谁,很难实现这种安全,包括信息的留存。所以说很多企业其实从他们的底层来看,他们为了高效引入了像OA系统,视频会议系统,呼叫中心包括CRM、HRM,然而通过这种手段反而导致他们一些业务分散,和一些紧耦合,不得不依赖所有系统打通整套流程,反而拉低他们效率,从我们这边来看,融合的核心就是帮助整个企业形成一种高级程、松耦合的状态,提高他们的效率。所以说针对我们一些企业,我们也提出了我们会融合独立系统组件,提高他们核心效率,可以看到在我们底层,会基于整个方案将OA、呼叫中心、视频组件、包括RM系统在实现打通,通过一些API调用,实现OA、HRM、CRM系统对接。同时在应用层,我们会去帮客户实现他们移动化办公,比如说他们现在需要多终端办公需求,还有像协同的终端系统去应用于客服与知乎之间对接,还有基于视频会议,员工数据同步,他们会把他们接触到的客户全部同步到自己公司的系统里面,保证员工系统留存。同时还有像专属客服座席,智能客服等等。我们像文字、语音、视频多通道的融合,帮助客户从上到下建立一个基于内部的多端在线的移动办公,另外基于对外整套客服系统,同时基于企业外部可以实现企业外部跟上下游之间的沟通和合作。其实从整个需求来看,我们最终的目标是为了提高整个公司的效率,我们从接触到的很多需求来看,大家提出都是基础需求,但是如果说我们从基础需求上筛选,我们发现大家的需求无外乎就是这几点,一个是员工办公移动化,另外就是我们客户的多渠道对接服务,另外就是我们业务的无缝对接。其实最终也就是为了提高效率和降低成本,这个就是我们通过跟很多客户了解以后,我们去考虑到融合通信到底给客户带来什么。我们也是提出了一些自己的看法,核心就是融合通信从底层来看,其实就是打通我们传统IP与传播的电信通信的壁垒,另外打通企业内部沟通壁垒,同时也打破了企业间沟通的壁垒,同时也是有多种通讯方案相互独立的壁垒,最后打破人与机器沟通的壁垒。可以看到从我们对外打破IP与传统电信通信壁垒来看,其实苹果的Imessage,实现了IP跟我们传统电信的打通。例如收发表情,在苹果用户之间是通过他们的系统进行传输,如果给安卓用户发,安卓用户收到是彩信,其实就是说把相关的IP和传统电信实现了打通。另外整个打通企业内部沟通壁垒,之前会把整个企业通信部包括PSTN进行导入,用户之间可以通过公司总机实现快捷拨号找到对应的同事,实现快速的沟通,同时也会基于我们企业微信整套系统,把公司所有同事放在里面,避免了再找不到人的时候随便去问,或者说通过关系,很难去实现有效沟通的场景。另外我们说打破了企业间沟通的壁垒,通过我们这种融合通信方案,可以把自己上下游相关企业内部通信录,权限的选择开放给本公司,尤其是重要部门,像销售、采购重要的部门可以通过这种企业间的通信录实现快速的对接,同时基于我们企业微信会进行消息留存,保证在对接过程中如果出现问题我们是可回溯可以找到当时责任方是谁。我们打破了多种通讯方案的壁垒,很多指挥中心的场景,不仅仅需要我们的IM,还有像音视频,同时还有像对讲机等等一系列通信手段实现了打通,把全部的通信方案进行融合,帮助客户在不同场景之下信息的沟通。同时我们现在也打破了人与机器相沟通的壁垒,之前我们一个很明显的例子,我们之前所有客服都是人工客服,然而现在基本上都已经全部是机器人客服为主,客户通过我们融合通信方案,实现了人和机器之间的沟通。问答云通信有哪些功能?相关阅读破局人工智能:构建AI,与腾讯云一起探索语音应用场景“融而开放、合以创新”——与腾讯云一起探索融合通信小白也能玩转Kubernetes 你与大神只差这几步 【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识此文已由作者授权腾讯云+社区发布,更多原文请点击搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!海量技术实践经验,尽在云加社区!

September 25, 2018 · 1 min · jiezi