注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

Demo体验

Demo体验

场景Demo,开箱即用
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有

【公告】关于Parse服务停止的解决方案

        Parse将在2017年1月28日正式停止服务,有很多用户都在环信的自有Key(parse client key)下存储了自己的数据,为了相关用户不受Parse停止服务的影响,环信在自有服务器上搭建了一套Parse服务,同时将自有Key(par...
继续阅读 »
   
    Parse将在2017年1月28日正式停止服务,有很多用户都在环信的自有Key(parse client key)下存储了自己的数据,为了相关用户不受Parse停止服务的影响,环信在自有服务器上搭建了一套Parse服务,同时将自有Key(parse client key)下的相关数据全部同步到了自有服务器中。

   目前Parse官方服务中环信Key(parse client key)下的相关数据存储都已指向环信自建服务器,同时环信搭建的Parse服务也正式对外提供服务。之前使用了Key(parse client key)进行数据存储的用户可以通过将原有Parse服务的域名替换为环信自建服务域名的方式来进行,具体的代码实现说明如下:
 
①.Android代码修改说明
将原代码中的Parse.initialize(context, ParseAppID, ParseClientKey);
修改为:
private static final String parseServer = "http://parse.easemob.com/parse/";

Parse.initialize(new Parse.Configuration.Builder(appContext)
        .applicationId(ParseAppID)
        .server(parseServer)
        .build());
②.IOS代码修改说明:

   首先下载最新的Parse SDK包,然后对代码做如下修改

将原代码中的如下部分:
[Parse setApplicationId:@"applicationId"
clientKey:@"clientKey"];
修改为:
[Parse initializeWithConfiguration:[ParseClientConfiguration configurationWithBlock:^(id<ParseMutableClientConfiguration> configuration) {
configuration.applicationId = @"applicationId";
configuration.clientKey = @"clientKey";
configuration.server = @" http://parse.easemob.com/parse/";
}]];

 注:如果您的业务里使用Parse服务做了头像的功能,请仔细阅读以下说明。

   在将您的APP从Parse迁移到环信自建服务的工程中,未升级的客户端会存在无法访问升级后客户端新增头像的问题。具体的说明如下:
  1. 当前情况是Parse服务和环信自建服务分别在自有的S3服务器上存储头像。
  2. 客户端升级使用环信域名后,可以访问原有的Parse上存储的头像文件。
  3. 未升级仍然使用Parse域名的客户端,无法访问已升级客户端在环信域名下新增的头像文件。
  4. 为了最终将头像文件完全同步到环信S3服务器,我们计划在2016.10.31日将当时存储在Parse的头像文件一次性全部同步到环信S3服务器上。若您要使用环信自建的服务,切使用了头像文件,请务必于2016.10.31日前完成对客户端的升级工作,避免用户头像无法访问的问题发生。

收起阅读 »

专访环信CEO:企业级服务是资本寒冬下的优质资产抓住第四次系统性机会

 儒雅、干练,技术出身,又富有敏锐的商业思维,这是环信CEO刘俊彦给号外财经网记者的初识印象。   8月23日,在北京国际会议中心举行的GIEC2016全球互联网经济大会上,刘俊彦接受了号外财经网的专访。短短20多分钟,他透露了有关环信的诸多高含金量信息...
继续阅读 »


508c2d5508dd30627332d5369582f071.jpg



 儒雅、干练,技术出身,又富有敏锐的商业思维,这是环信CEO刘俊彦给号外财经网记者的初识印象。

  8月23日,在北京国际会议中心举行的GIEC2016全球互联网经济大会上,刘俊彦接受了号外财经网的专访。短短20多分钟,他透露了有关环信的诸多高含金量信息:从创业初期的“蒙圈”到走上成功之路,技术步步领先是公司的核心竞争力,如何打造SaaS客服产品争做全媒体客服市场的“NO1”,以及环信不烧钱还能快速赚钱的秘诀……

环信核心竞争力:持续领先的技术实力

  短短两年时间,环信成功实现四轮融资,并领跑中国SaaS客服市场,到底靠的是什么?环信的核心竞争力是什么?在专访中,号外财经网开门见山的提出第一个问题。

  “环信是技术驱动型公司,我们的核心竞争力在于技术能力,我们的愿景是技术改变行业。”刘俊彦也是直言不讳。

  他进一步诠释自己的观点,认为好的技术很难被超越,一步领先可能就会步步领先。环信取得行业领先地位后,仍保持大量的人力研发投入,在研发团队规模、资金投入规模、收入规模三个方面的领先优势都在持续扩大,而不是被追上。

  目前,该公司拥有环信即时通讯云和环信移动客服。即时通讯云提供基于互联网的通讯能力服务,帮助创业者做社交,具有单聊、群聊、发文件图片等功能,是连接“人和人”。移动客服是在环信即时通讯云PaaS平台上生长出来的SaaS平台,是垂直行业应用,连接“人和商业”。刘俊彦认为,两个产品是公司立身之本。

  在中国当前移动互联网时代,很多东西被颠覆了,但各行业的基础平台功能很重要。他很看好两大产品的市场前景,“目前把这两个产品做到极致,做到一针挑破天就成功了。”

背后故事:从创业初期“蒙圈”到成功之路

环信的创始团队都是技术出身,他们创业初期也曾经历过曲折。

  “一开始做过类似企业微信和阿里钉钉这类的产品,属于企业办公平台,很快开发出来了。但在那个时间点上,我们不是特别有销售和市场意识,产品的一些功能是想象出来的,发现不知道卖给谁,也不知道怎么卖,所以不是一个成功的产品。”刘俊彦给号外财经网分析他们创业初期开发的产品。

  后来痛定思痛,刘俊彦和他的团队对自身优势进行思考。“我们是开发者,我们最擅长的是跟程序员打交道,程序员需要开发者后台。”他说,把产品其他不用的功能都砍掉,只保留最核心的部分聊天的部分,就是现在的即时通讯云。“用起来简单,功能强大,没有交互界面,可直接通过API调用,只需要看文档就可以了。服务器需要支持几千万人同时在线,运行需要特别可靠和稳定。”

  这样的模式需要非常高的技术门槛,而这恰恰是环信团队的优势。

  “做一个2C产品,让我们去研究人性、了解用户需求挺难的。但我们是开发者,开发者想要什么样的API、如何把这个API做的更好、做的更好用,这是我们擅长的。所以我们觉得创业者一定要找到自己最擅长的点,坚持做下去,才能成功。”刘俊彦这样总结。

第四次系统性机会:打造千亿市值企业

 环信发展的路径是什么?如何发展?发展空间多大?这也是刘俊彦最近在探索和思考问题。对此,他更多的从公司“市值目标”进行了探讨。

  刘俊彦认为,企业服务行业的前景很广,对比美国的企业服务市场,前三名公司市值合计3000亿美金,中国前三名加起来是60至80亿美金,几十倍的差距。中国也有巨量企业,也开始消费了,需要企业服务公司了,规模可能会很快赶上美国,会有系统性机会。

  “这样的系统性机会很少碰到。第一次是搜索引擎,造就了百度和谷歌;第二次机会是电商,造就了阿里巴巴;第三次机会是移动社交,成就了微信和腾讯。现在企业服务是第四次机会,可能是二十年来最大的一次机会,把握住就会造就下一个BAT,造就企业服务领域千亿美金或人民币的公司。”他耐心剖析自己的行业观点。

  “机会放在这里,怎样才能抓住呢,要看核心赛道。”刘俊彦并不吝惜分享行业机会。他说,已知的核心赛道就几条,第一条是企业协同办公,BAT的天下;第二条是企业销售自动化管理,行业的几家公司已经C轮融资或者挂牌上市了;第三条是HR;第四条是财务软件,用友金蝶已经统治了;第五条是客服。

  “环信还是挺幸运的,去年才进入客服市场,后发先至,并在这个赛道上跑到了前列。”刘俊彦说,环信SaaS客服产品自去年4月份推出以来,市场推广、用户获得比预想的要快,用户群体、销售规模等领先行业,这是一个惊喜。

  刘俊彦向号外财经网透露,环信2016年的目标是在全媒体客服市场的在线客服部分做到全国第一,2017年希望在整个全媒体客服市场做到全国第一,包括呼叫中心、网页客服、微信公众号客服、APP客服4个细分领域。

企业服务:资本寒冬下的优质资产

  “今年VC喜欢投企业服务公司,因为企业服务公司是优质资产,有持续稳定的现金流,不烧钱。只要产品好,每个月都有收入,源源不断,用产品就要付费,而且明年还要续费。收入模型好,一般月付型,而我们环信是年付。支出模型稳定,不烧钱。”刘俊彦对环信的发展信心十足。

 他现在的主要精力放在环信的管理和战略上。他说,公司过去两年已经做了4轮融资,基本不缺钱。

 对于后续的资本运作路线,他没有透露,但他给出了一个基本时间表,“会很快,今年,或者明年”。 收起阅读 »

ios V3.1.5 Android V3.1.5 release ,优化联系人读取,修改api命名的规范性

版本 V3.1.5 2016-8-26 Android V3.1.5更新日志 修改一些api名称,主要针对一些拼写错误的api,具体变动请查看3.1.5api修改;优化读取联系人的速度;修复在logout方法的回调里立刻调用login方法不能登录的...
继续阅读 »
版本 V3.1.5 2016-8-26

SDK.jpg


Android V3.1.5更新日志


  • 修改一些api名称,主要针对一些拼写错误的api,具体变动请查看3.1.5api修改;
  • 优化读取联系人的速度;
  • 修复在logout方法的回调里立刻调用login方法不能登录的bug;
  • 修复https安全漏洞,提高安全性;
  • 修复实时通话时暂停音频不生效的bug;
  • 修复使用网线连接时NetUtils.hasDataConnection()判断为false的bug;
  • 修复发送消息时导致memory leak的bug;

ios V3.1.5更新日志

新功能:

  • 提高SDK稳定性
  • 去除依赖库(libcrypto.a,libcurl.a,libssl.a)
  • 提高从2.x版本SDK数据库迁移效率
  • 进一步修改api命名的规范性,建议使用新的api,具体详情可以参考接口文档
bug fix:
  • 修改实时视频显示问题


版本历史:Android sdk更新日志  ios sdk更新日志
下载地址:sdk下载
 
使用过程中有遇到任何问题、反馈建议欢迎直接评论留言,我们将第一时间回复! 收起阅读 »

环信亮相全球互联网经济大会,客户声音将成SaaS客服突破口,顺便回答一下被北京卫视报道是一种神马体验

   8月23-24日,GIEC2016第二届全球互联网经济大会暨ECECHINA第七届中国电子商务博览会在北京国际会议中心盛大开幕,大会吸引到BAT、联想、乐视、360、网易、中兴、TCL、环信等一大批知名互联网和智能硬件制造近百家机构云集京城。环信CEO刘...
继续阅读 »
   8月23-24日,GIEC2016第二届全球互联网经济大会暨ECECHINA第七届中国电子商务博览会在北京国际会议中心盛大开幕,大会吸引到BAT、联想、乐视、360、网易、中兴、TCL、环信等一大批知名互联网和智能硬件制造近百家机构云集京城。环信CEO刘俊彦作为企业级服务意见领袖受邀参会,并在主会场做主题演讲和众多互联网精英一起论道共享经济下万物智能时代的机遇和挑战。

1119461756_14721965421021n.png


环信CEO主题演讲:全媒体智能时代的电子商务客服新体验

1119461756_14721965443681n.png


环信移动客服登录北京卫视
   在今年初答记者问时指出:“新经济的覆盖面和内涵是很广泛的,它涉及一、二、三产业”。GIEC2016大会议题涵盖了当下热门的互联网创新与变革、探索商业模式创新,把握VR等人工智能技术的发展机遇,以及未来万物互联到万物智能的探索。大会的第一个版块活动是分享经济峰会,与会嘉宾观点纷呈,但在共享经济对于互联网经济的作用上形成了共识。2015年以来,分享经济可谓是站在中国经济风口的“食物链顶端”,它的真正价值在于重新定义了人与人连接的方式,以及社群组成的方式。而环信移动客服产品更是嫁接“人与商业”的连接器,相关数据显示,2015年中国共享经济市场规模约为1.956万亿元。预计未来五年,共享经济年均增长速度在40%左右,到2020年市场规模占GDP比重将达到10%以上,随之配套的企业级客户服务行业规模也将更上一层楼。

1119461756_14721965361571n.png



1119461756_14721965614141n.png


 小伙伴国美在线、叮当快药、泰康在线、楚楚街和环信一起联合参展。
   在共享经济浪潮下,O2O、电商、互联网金融教育医疗等服务业取得了蓬勃发展,随之衍生的客户服务行业也取得爆发式增长。在用户体验为王的时代传统的呼叫中心已经不能满足新时代的客户服务需要,以环信为首的全媒体智能SaaS客服正逐渐成为主流。环信CEO刘俊彦认为包括APP、微博、微信、网页端/H5、呼叫中心等统一接入的全媒体客服的最佳体验不仅只是接入和各个渠道之间的打通,更重要的是用户跨媒体、跨渠道、跨部门的体验和跟踪,在海量的数据中发现重点,优化企业运营。环信首推的“客户声音”是一款基于人工智能和大数据挖掘的客户行为透析产品。可以通过自然语言解析,主题聚类,情感度分析等技术手段挖掘和分析热点话题,发现畅销或问题商品,同时分析发现服务运营中存在的问题,企业就此可以优化运营,利用大数据洞察力来发现销售机会,改善产品质量。从而更好的服务于终端用户。

   共享经济下的“互联网+”正在重构着人们的生活方式,也为各行各业带来了无限发展机遇。随着“互联网+”的渗透,“智能+”将成为“互联网+”的下一站,而“智能+产业”的融合,将成为产业升级与变革的推动引擎。环信认为现阶段人工智能最佳的落地行业是客户服务行业,环信智能客服机器人能够帮助人工解答80%的常见问题,极大的节省了人力成本提高了效率,目前在银行、电信、O2O等行业发挥着积极作用。环信移动客服提供的新特征“机器人智能质检功能”能对全部客服会话进行100%实时或离线质检,基于环信在线客服各个领域的海量用户对话,提取出数百个客服对话特征,并用这些特征训练得到的一个通用质检模型,智能质检的准确率达到了替代人工质检水平。

   据悉,GIEC2016第二届全球互联网经济大会在阿里、腾讯、百度、360、京东、亚马逊等行业领军企业参与支持下,已经成为我国乃至全球层次最高、专业性最强、影响力最广的电商及互联网行业盛会之一。同期举办的ECECHINA2016第七届中国电子商务博览会更是连续六届举办,成为行业一致认可的年度盛会。

   环信移动客服——全媒体智能云客服倡领者,于2016年荣膺“Gartner 2016 Cool Vendor”。环信支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。基于环信业界领先的IM长连接技术保证消息必达,并通过智能客服机器人技术降低人工客服工作量。同时,基于人工智能和大数据挖掘的客户旅程透析产品"环信客户声音"能够帮助企业优化运营,提高跨渠道客服体验。

   截至2016年上半年,环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、号码百事通等众多标杆企业。根据易观发布的《中国SaaS客服市场专题研究报告》显示,环信移动客服在SaaS移动端客服用户覆盖占比高达77.4%,稳居行业第一。 收起阅读 »

iOS 拉取环信消息记录解决方法

1、首先是通过环信接口将数据拉取到我们本地服务器 http://docs.easemob.com/im/100serverintegration/30chatlog 在此过程中,服务器注意需要将拉取下来的数据,保存至数据库中的同时将(img/audio/vi...
继续阅读 »
1、首先是通过环信接口将数据拉取到我们本地服务器 http://docs.easemob.com/im/100serverintegration/30chatlog
在此过程中,服务器注意需要将拉取下来的数据,保存至数据库中的同时将(img/audio/video)的附件下载,并替换掉数据库中消息的附件地址
2、iOS从自己的服务器拉取数据(主要是解析, 自己服务器保存格式完全按照http://docs.easemob.com/im/100serverintegration/30chatlog)下面贴出解析数据过程(Json-Model使用的是MJExtension)
定义的Model如下


0913E702-3480-4B0F-980D-5C7E847C0216.png


 
处理消息

2CA22EAB-167B-4B90-BA29-158A2D397725.png




35E3C8CD-2414-43DA-95E8-E72D2FB3D220.png


  收起阅读 »

iOS手把手带你集成环信移动客服

今天正好项目需要需要集成客服系统,就把环信的集成了上去。这边文章写给小白的童鞋啦,大神勿喷。 首先在开始我的文章之前,我推荐大家把官方的文档好好阅读一下。   http://docs.easemob.com/cs/300visitoraccess/10nati...
继续阅读 »
今天正好项目需要需要集成客服系统,就把环信的集成了上去。这边文章写给小白的童鞋啦,大神勿喷。
首先在开始我的文章之前,我推荐大家把官方的文档好好阅读一下。
 
http://docs.easemob.com/cs/300visitoraccess/10nativeapp
 
首先,我假设童鞋们都阅读了官方给的文档,那就让我们开始愉快的集成客服系统吧。
 
1.首先下载环信的商城DEMO

https://github.com/easemob/helpdeskdemo-ios

下载之后运行发现=我拉个擦=运行不了0.0 相信了解git的同学都知道该怎么做。不了解的话听我慢慢说不要急。
首先环信的移动客服是基于环信的IM完成的,相信看了上面文档的童鞋都能理解这一点,对于环信的IM有一些静态库.a文件都在环信的的童鞋的gitignore中过滤掉了。只要我们我们重新下载环信IM的库,将缺少的.a静态库文件加上去就可以运行了。

.gitignore 是git的过滤文件 可以过滤掉我们不想推送的git仓库的一个配置文件。 github上有一个规范https://github.com/github/gitignore 可以在这个的基础之上来添加我们的需求。
 
2运行环信客服demo

到这一步童鞋们应该都能运行了环信的demo了,按照上面的文档童鞋的IM账号也弄好了,首先让我们来体验一下吧。
新注册的环信的移动客服都和 环信的商城demo 关联上了,我们打开管理员模式-》app->看到一个体验关联
之后把我们下载的demo的

1106106-50507296e4065f83.jpg


之后我们把IM服务号搞成后台给的号码,就可以愉快的和后台聊天的哇。
如果这一步没有问题,就说明我们后台的配置是没有问题的。这时候就就可以之正式该我们的代码了
 
3.添加APP关联

我们根据文档提示新加一个app关联,(修改默认的体验关联 是会失败的,一定要新建之后找到我们商城demo

1106106-125dd8a6f977fb4f.jpg


把对应的这几个文件夹和文件拷贝过来,并在我们自己的项目里面集成IM的库。
首先打开appDelegate的类目文件

1106106-4bdbb27e3f6e0634.jpg


修改推送证书的名称
之后打开localDefine

1106106-14b296595a9dcbca.jpg


上面的的是appkey
下面的是关联的IM服务号

之后拷贝过来的Localizable.strings 文件需要添加中文对应

1106106-d2c5b65233de46c4.jpg


在这里添加就ok.
最后让我们来看看我们的成果。

1106106-8c523ccd23e8e4dd.png


有木有很兴奋!
=======后续会更新其他细节操作,让童鞋们少走一点弯路 收起阅读 »

给准备入行电商客服的一些建议

主题很明确,请允许我说说心底话。 现在电商平台很多,但是主要还是集中那几个平台,你懂的,我就不点名了。 首先,打字要快,响应时间是要有考核的。规矩是平台定的,要么硬着头皮上。要么完全不搭理,直接用机器人。熟悉产品&规则后,虽然工作简单,但是强度大,...
继续阅读 »
主题很明确,请允许我说说心底话。

现在电商平台很多,但是主要还是集中那几个平台,你懂的,我就不点名了。

首先,打字要快,响应时间是要有考核的。规矩是平台定的,要么硬着头皮上。要么完全不搭理,直接用机器人。熟悉产品&规则后,虽然工作简单,但是强度大,尤其做活动的时候。

再者,小心脏要强大,要能忍受客户的脏骂。关于价格,催货,催物流,那都是家常便饭。习惯就好。

第三,能熬夜。客服,电商客服,至少要9点-24点都要有人在。每周六天,还有一天休息,算好的了。有些店甚至8-凌晨2点的都有。夜猫很多。尤其都市的人,失眠睡不着也会逛TB。

虽然自由,但确实也有点与普通人的上下班区分开。约会时间比较难凑。应验了那句话,加班累成狗,下班无朋友。(kua)(zhang)

最后,还是要跟运营做好朋友啊。还有活动&产品信息一定要吃的通通透透,这年头电商职业骗子坑爹的实在太多了,稍不留神就掉进坑里了。死的多冤你都不晓得。

说说趣事吧。

有一次做活动。新客户哈,因为对我们的奶粉品牌不熟悉,都是朋友介绍过来的,毕竟是第一次给宝宝在网上吃的(naifen),所以是问了好多。

最终客户说,第二天购买。我说好。

客户问了一句,你上什么班?

我说晚班。我说,没关系,早班也有同事在,可以购买。

客户说,那不就算别人的业绩提成咯?我还是晚班过来购买,算你的业绩。

哇塞,还有这么为客服着想的客户,当天的累一下子被感动全打消了。

好久以前,我在(qian)(niu)早已在签名写上,购买前请咨询客服。因为这样可以提高客服的转化率,还有提成。每行的难处,只有做了那行才知道痛并快乐着。

做电商客服还是以实时的文字信息沟通为主,所以避开了好多面对面的尴尬和对骂,实在无语了,发个表情。确实有好些客户急躁又素质不好。句句不离脏字。此处省略一万字……

因为聊天工具对商家都明显提示,不能有第③方的交流模式。比如QQ,微信,邮箱,京东等等。通通不行。

扫描查到,必然会店铺被扣分罚钱不说,甚至会被关店,其他处理。拼不过平台,还是乖乖就范。这些话,只能在客户提供了手机号码之后,电话联系了。我惹不起,躲开总行了吧。电话里再跟客户好好沟通。

相对于以前的电话客服,这个是明显省心好多。所以才有了"金牌客服"这个TB弄的证书。

老大说了,运营做好了,客服这个环节就显得至关重要。有些店铺,运营做不起来,可是客服的跟进让店铺依然活着,甚至还不错。

这只是我入门电商客服不到半年的感想。真真切切感到时间过得飞快。只要你对客户好,人家是感觉到的好么。不用说,人家也会主动在评价里夸赞你,而不是冲着你给的几元好评返现,这个是真心真实有效的。 收起阅读 »

从用户入口到客服报表,这是一场战役

分析目的 消费金融产品规则复杂;仅仅依赖交互和文案不能充分教育用户,用户教育成本高;客服是用户寻求帮助和了解产品的有效途径。   客服组成 客服涉及帮助列表、在线智能客服、电话自助客服、人工客服。 自认为的的客服流程应该是:适当曝光入口,精准定位问...
继续阅读 »
分析目的
  • 消费金融产品规则复杂;
  • 仅仅依赖交互和文案不能充分教育用户,用户教育成本高;
  • 客服是用户寻求帮助和了解产品的有效途径。

 
客服组成

客服涉及帮助列表、在线智能客服、电话自助客服、人工客服。

753795-b4b71ea5c0b5ae2c.png


自认为的的客服流程应该是:适当曝光入口,精准定位问题,再友好解决问题。本文将从各自的入口、逻辑、解决率、可优化程度、优化成本、优化顺序分析。

753795-be3f25ea8864ed50.png


客服入口

入口的曝光程度依赖于定位问题的精准程度、解决问题能力(解决率),以及解决问题成本。

人工客服的高人工成本决定无论如何入口都必须深。

帮助列表、在线智能、电话自助服务一经上线,需要维护的人工成本不高。只要帮助列表的解决能力不是很差,都可以适当曝光。

在线智能客服一般都可以引入到在线人工客服,因此漫山遍野的前提是能一定程度上切断与人工客服的联系。

电话自助和电话人工客服的联系不可切断,因为电话自助客服的曝光程度与电话人工客服一样,少量曝光即可。
 
帮助列表

753795-8f8efc9cd18845c3.png


(1)入口

后期维护成本不高,可以适当增加曝光。

保证所有入口的icon、交互尽量保持一致,让用户感知和习惯到帮助列表的入口。

(2)精准定位问题

产生问题的场景:看到当前页面的信息之后,或者进行了某种产品行为之后。

点击量便是调优参数。所以精准定位问题的背后逻辑可能是:

a、页面分级和提取页面标签:

无法获得详细精准信息的页面提供统一的通用帮助列表;

详细页面帮助列表个性化。收集当前页面信息,读取信息的标签,然后根据标签展示相关的热点问题,按点击量排序。花呗的个性化帮助列表的页面标签(如果有)可能包含但不限于以下内容:分期、还款、退款、大商户、支付等。

b、用户产品行为

用户在查看帮助列表的前一个时间范围内,有比较重要的产品行为操作。以花呗为例,这样的行为包括单不限于:分期、还款、退款、支付、查看额度。

c、点击量

调优参数。

753795-d68c9a24ddaa0a08.png


d、你想告诉用户的是什么?

一些基本产品规则不知道可能衍生其他复杂问题,所以要“高亮显示”。

i. 问题列表应该是按照产品行为特征分类(契合用户角度);

ii. 点击量数字化,吸引用户关注(或者hot标识代替)。

(3)友好解决问题

753795-95fc5f2539ae2918.png


此部分涉及三个点:可阅读性 ,可解决性,可扩展性、解决率。


可阅读性:即答案精炼分点;重点加粗标红;图文并茂甚至支持gif,但需考虑到屏幕受限。

可解决性:答案的有效性(紧跟功能迭代);跳转到解决问题的页面。

可扩展性:相关问题和在线智能客服的入口。

解决率:提供“解决”、“未解决”两个按钮然而很少用户会点击。所以解决率可能可以参考跳转按钮解决率,进入智能客服比例。

(4)解决率、可优化程度、优化成本、优化顺序


帮助列表的解决率很难衡量;

可优化程度相对较高;优化成本较低;

性价比决定其优化顺序应当靠前。

在线智能客服

753795-e61a8b6784911de7.png


(1)入口


后期维护成本不高,在相对切断与在线人工客服的联系的前提下,或者默认隐藏在线人工客服的入口,在用户向在线智能客服提了第一个问题时才露出人工客服入口,可以适当增加入口。

(2)精准定位问题

在线智能机器人一般公司不会独立研发,而是直接购买其他公司的服务(live800、小i机器人等)。

a、语音输入

考虑到语音识别的方言口音支持能力差的问题,语音输入性价比确实不高。

b、预测输入

预测输入就是根据用户已输入的内容,匹配相关问题候选。好的预测能引导用户问得更标准,方便匹配到标准问题。

c、智能识别问题


753795-c1a0fd65463f8253.png


预测候选问题是通过每天对用户咨询问题的报告得出。预测候选问题与标准问题已经通过关键词匹配和一定人工印象。匹配到对应标准问题概率非常大。而没有预测问题过程,直接由用户输入问题匹配则匹配率不高。

(3)解决问题

此部分涉及三个点:可阅读性 ,可解决性,可扩展性、解决率。


基本同上述帮助列表的最佳优化。补充一点是,智能客服多模拟对话场景,因此文案偏轻松,但要控制篇幅(交互上可考虑折叠)

(4)解决率、可优化程度、优化成本、优化顺序


由于在线智能客服可跳转到在线人工,因此一般以拦截率作为解决率。(30%~50%)

可优化程度相对居中;优化成本较居中;


性价比决定其优化顺序应当局中。

电话自助客服

(1)入口

随电话人工客服曝光,人工客服成本高,应减少曝光。

(2)产品逻辑

a、播报菜单前,查询号码匹配账户,自动播报信息(如退款进度、物流记录)

b、简单问题直接播报方法。(查询、账户管理)

c、有一定风险、流程短问题,验证绑定手机后操作。(退款、提现等涉及钱)

(3)解决率、可优化程度、优化成本、优化顺序

解决率即拦截率(跳转到电话人工客服);

流程越长、验证约复杂,解决率约低。因此适用问题有限,优化程度低。

优化成本居中,因此优化顺序靠后。(金融产品规则复杂)

电话自助客服


(1)入口

成本最高,入口尽量少。

(2)优化重点

知识库与客服培训



753795-51cba900d7f52c40.png


(3)解决率、可优化程度、优化成本、优化顺序

解决率最高,然而可优化程度低,优化成本也非常高。优化方法依赖于客服产出(录音和客诉记录),然后客服一般不愿意将这些暴露给其他部门看,优化顺序最后。

然而,搞客服不如好好搞好产品,当然也不能闭门造车。
  收起阅读 »

环信程旭文:即时通讯云未来或将形成7大分布式入口

我今天分享的主题是Beyond IM Cloud,会讲讲IM Cloud本身和未来的思考。 广义的云通讯涉及的三个领域 我们认为在云通讯领域基本上会涉及三个方面: 第一个是在电信领域 其中包括了短信、彩信、电话:    短信、彩信分...
继续阅读 »
我今天分享的主题是Beyond IM Cloud,会讲讲IM Cloud本身和未来的思考。

广义的云通讯涉及的三个领域

我们认为在云通讯领域基本上会涉及三个方面:

第一个是在电信领域

其中包括了短信、彩信、电话:
 
  1.  短信、彩信分为C2C和B2C部分。C2C是指个人到个人的短信,B2C是企业到个人的短信。企业到个人的短信包括了短信验证码、短信通知等一些营销类的短信。
  2.  电话的C2C大家都知道,B2C包括语音验证、呼叫中心、电话回拨、电话会议以及语音通知。

 第二个是互联网IP领域

环信所处的行业叫即时通讯云,云通讯和即时通讯云有一点差别,我们认为即时通讯云在大的云通讯范畴。在互联网IP领域又分为了单向的通讯和双向的通讯,单向的更多的是推送领域,双向是在即时通讯云领域。

第三个是跨电信与互联网领域


云通讯市场的现状

1、电信领域中C2C业务下滑,B2C业务暴涨

  C2C个人到个人的短信、电话业务在下滑,但是这两年发现B2C的业务,企业到个人的短信和电话业务暴涨。我看到一个数据,每年中国短信的量是在七千个亿,之前企业占了很小一部分,到了2016年一半以上都是企业到个人的业务。

2、桌面时代的邮件验证在移动时代已不适应,短信验证、语音验证异军凸起

  企业的付费比率在增长,在中国是个百亿级的市场。Twilio更是加速了市场的发展。

3、新兴市场:IP领域的即时通讯(IM)云

  之前是没有云+即时通讯这个市场,环信2014年创造这个概念之后,随着两年的发展,基本上市场格局初定,但是市场的前景还需要去验证。现在市场当中的几个玩家,特别是中国的玩家跑在前面的都在跑马圈地,其实圈地之后的商业模式,各家都还在用不同的方式做一些探索,这些探索将会决定玩家的未来。

即时通讯的历史和即时通讯云的诞生
 
  回顾一下即时通讯的历史,我个人之前做技术做了很多年,主要是在中间件领域,这个领域从IT技术的发生开始,到2000年之后越来越火爆,但基本上消息类的中间件技术经历了很多大的发展,也衍生出了很多类的消息中间件。这里列了一大堆,是分别在不同的历史时期产生的消息类中间件,解决跨进程之间的通讯。

1472093088215.png


把这类消息中间件搬到云上,进行集中式的开发、部署、运维就叫即时通讯云。即时通讯云诞生的背景是三个因素组成的:

第一个是云计算。可以集中开发、部署、运维,社会资源更加集约,让更多的人专注在自己业务上面,不用每家研究后台的消息怎么发。

第二个是移动互联网的推动。内在的原生动力是移动端产品生命周期更短,需要快速开发、上线、试错。

第三个是长连接。做技术的人都知道,特别是在移动互联网应用上面,好多资源获取都是以HTTP的方式,服务端被动的接受客户端的请求获取资源,往往服务端很难主动推送一些资源到客户端。长连接使得客户端既可以问服务端拉取资源,服务端也可以主动推送一些资源。

即时通讯云的现状

 1、即时通讯云在国内的现状,基本上所有的厂商都是新兴厂商。国外出现的厂商并不多,比较纯的做即时通讯云的厂商像Layer。其实整个技术的发展国内是领先于国外的。

 2、即时通讯云出现之后,使得即时通讯的服务可以云化、API化,用户已无需了解云端的消息服务实现细节。不用在自己的服务器上部署,而是云端集中部署、集中运维,租用模式开启。

即时通讯云的功能和技术挑战

 即时通讯云所有的功能都是基于IP的,不是基于电信网络的。有一对一的消息(单聊),一对多消息(群聊、聊天室)。应用场景上其实不仅仅局限在社交应用上。在消息内容上,基本可以展现所有的形式,包括文字、图片、表情、语音、视频、位置、附件、支付、状态、指令等。

 当即时通讯云碰上移动互联网的时候其实会涉及到一些技术上的挑战:
 

  • 弱网络下的连接稳定性



  网络是不稳定的,一会儿进电梯,一会儿上洗手间,一会儿又在不同的基站间切换,一会是3G、4G网络,一会又是WIFI。我看到一个数据,每天手机的互联网连接在700次左右。
 

  • 流量敏感

  • 电量敏感

  • 性能敏感



  现在几家厂商包括国外的,大家极力宣称的就是体现在刚才四点上的不同,于是造成了各家市场占有率的不一样。下图列了很多,这段文字是我直接拷贝了环信创始人刘俊彦的发言,研究列举了厂商技术的差别性,它实现的好坏直接取决于用户是否长期留存在你的服务器上。

4861472093041.png


  基于即时通讯云,还有些额外的功能可以提供,比如说实时的音视频,包括一对一和一对多的,到最后衍生出多对多,再往下走发过来的消息还有一些过滤、路由、优先级、消息持久化存储这些东西。特别像消息过滤的反垃圾系统部分,比如你发QQ消息的时候,有些他认为是垃圾消息或者是黄赌毒的消息直接可以屏蔽掉,你感觉自己发出去了,其实并没有。
  经过这两年对市场的培育,截止2016年上半年,环信即时通讯云共服务了8万多家APP客户,SDK覆盖手机终端5.64亿,平台上日均发送消息量5.57亿次。环信发展到现在是除了微信,QQ之外的第三大即时通讯平台。

未来,管道or平台?

 各个即时通讯云厂商都公布了自己的数据,如果你汇总一下就知道市场的总量是多少。现在APP市场,基本上APP总量在100-200万之间,还有一些没有即时通讯的场景。市场还有些空间,但是大局初定。于是我们会思考一个问题,即时通讯云的未来是什么,是一个管道提供商还是平台提供商。就像运营商在互联网3G、4G时代一样,定位成了管道提供商。同样在即时通讯云这个范畴内我们未来是什么样的,各家都在不同的地方做一些探索。

 对于环信或者其他厂商来说,通过不同的APP接入即时通讯云,会形成分布式的流量入口。一旦谈到入口的时候,其实就有很多想象的空间,当然各家并没有太多的突破。下面是我个人对未来的一个预测,当一个分布式的入口形成之后,我分成了七大类的入口,这里面每个领域都有后续的发展:

 1、 沟通的入口

  我最近看到Facebook把网页的聊天都集中在Facebook message上,背后打造了1万多个机器人。在未来的聊天当中你可能无法分辨和你聊天的是人还是狗,还是机器人,或者是一个影子人,就是另外一个你自己。同时这会连接更多的服务,如果你把模型抽象的话,你把所有的物体拟人化了之后,其实物体是可以开口说话的,你告诉冰箱赶紧把温度调低一点,然后温度降低了,其实你就是用自然语言的方式在和你的设备沟通。

 2、技术的入口

 这里指技术能力,比方在这个模型下面你可以接入更多的技术进来。例如图像的识别技术,怎么识别黄赌毒、政治,或者说情绪的识别。环信现在有了文字类的情绪识别,通过客户与商户之间的聊天实现客户满意度的反馈。技术入口还包含直播,甚至更多。

 3、 流量的入口

  即时通讯是一个双向的通讯,意味着我们可以以交互式的方式进行推介,它的商业价值在于广告的模式。这是一种新型的广告模式,打破了以前的广告联盟用banner或信息流做广告的方式,我们的广告是一种交互式的、及时反馈式的模式。

 4、内容的入口

  内容的入口包括表情,最近我们也和做表情的公司合作,他们通过即时通讯云分发,把各种各样的表情的IP分发。我们可以大胆想象除了表情,也可以成为游戏的分发入口。

5、 数据的入口

 这里面每一个聊天的用户其实是关联到他的ID以及他聊天的内容,他的位置,一些其他的操作,其实这里面本身是大数据的系统。

6、支付的入口

  环信在做一些尝试,比如说红包,其实是支付的入口,像微信一样,发红包帐户里面就有特别多的钱,这个钱就需要流转,流转就会延伸其他的功能,包括金融、电商方面的东西。

7、连接的入口

  说到底即时通讯是连接的功能,我们是连接人与人,未来是连接一切,基本上都可以通过即时通讯云来完成。
  收起阅读 »

开源一个结合环信的iOS聊天框架:ZYChat-拥有很好的扩展性和流畅性,无与比拟的体验

 ZYChat 是一个实战项目的聊天UI框架,针对高频次高速率刷新最近会话列表和实际对话页面做了缓冲优化,经过测试会话使用的性能和体验非常稳定。UI框架参考MVVM思想设计,并采用自身总结的一些常用设计模式,可以帮助你快速实现搭建多样式的列表页面,代码复用率可...
继续阅读 »
 ZYChat
  • 是一个实战项目的聊天UI框架,针对高频次高速率刷新最近会话列表和实际对话页面做了缓冲优化,经过测试会话使用的性能和体验非常稳定。
  • UI框架参考MVVM思想设计,并采用自身总结的一些常用设计模式,可以帮助你快速实现搭建多样式的列表页面,代码复用率可以有稳定的提升。
  • ZYChat-EaseMob 是基于环信的UI项目应用实战,将ZYChat类库和实际项目使用结合。
  • 消息类型目前扩展至: 文本,语音,音乐,网页,鲜花特效,短视频
  • 想更深入的探讨学习请加QQ群:219357847
 项目运行截图

s_show.png

项目代码结构图

c_show.png

 项目新增功能​
  • 直接在聊天界面播放音乐
  • 新增送花功能
 项目核心模块注释ChatDetail 具体聊天*Resource 用到的图片 *UITableViewCell 聊天所有的cell使用
*Base      聊天内容基类Cell,负责分发类型*ChatCell  聊天内容Cell,    负责处理聊天类型的消息展示  *GJGCChatFriendBaseCell , 基础内容Cell,包含消息显示的:头像,昵称(根据会话类型显示隐藏),气泡,状态  *GJGCChatFriendTextMessageCell, 文本内容显示  *GJGCChatFriendImageMessageCell, 图片内容显示  *GJGCChatFriendAudioMessageCell, 语音内容显示  *GJGCChatFriendTimeCell, 时间块显示*SystemNoti 系统消息Cell,   负责展示系统消息
*View 聊天时候用到的自定义视图和风格控制
*GJGCCommonFontColorStyle 全局风格控制*GJGCCommonHeadView 全局头像显示*GJGCChatContentEmojiParser 文本解析成图文内容*GJGCRefreshHeader 下拉刷新*GJGCRefreshFooter 上拉加载*GJGCLoadingStatusHUD 加载HUD,基类初始化,全局可用
*ViewController
*Base 基础类,负责分发 系统消息或者对话消息类型*MessageExtend 消息类型扩展,基于环信的消息ext字段来扩展消息,以支持gif等更多类型消息*Friend 单聊会话,群聊本质上也是1v1会话,只是有一些特殊逻辑需要单独处理,为了避免庞大的DataManager和ViewController,需要分开*GifLoadManager 本地Gif包管理*Group 群聊管理*SystemAssist 系统消息管理
RecentChat 最近会话 *GJGCRecentChatViewController 视图管理层 *GJGCRecentChatCell 单行会话展示 *GJGCRecentChatModel 内容模型 *GJGCRecentChatDataManager 模型管理层 *GJGCRecentChatStyle 风格管理 *GJGCRecentChatTitleView 服务器连接状态展示 Square 广场 *CreateGroup 创建群组 *PublicGroup 广场群组列表 GroupCommonUI 群组资料和个人资料展示 *GJGCGroupInformationViewController 群组资料展示 *GJGCPersonInformationViewController 个人资料展示 如何扩展消息类型 扩展消息类型需要做三件事情[list=1]
  • 继承GJGCChatFriendBaseCell 来扩展对话消息
  • GJGCChatFriendConstans 在关系绑定中将内容类型和新扩展的消息类型绑定
  • 在创建内容模型的时候,将内容类型设置为新创建的内容类型即可绑定
  •  例子 *首先创建内容展示的样子,GJGCCHatFriendGifCell *在内容模型中定义 gifLocalId , 在 GJGCChatFriendConstans 中定义内容类型 GJGCChatFriendContentTypeGif
    • 在GJGCChatFriendConstans 实现 ContentType 和 Cell的绑定 *在创建GJGCChatFriendContentModel的时候将内容设置为GJGCChatFriendContentTypeGif就可以实现加载对应的gifCell

     如何基于环信的消息扩展字段配合GJGCMessageExtendModel实现扩展消息类型的目的
     
    *userInfo : 用户信息,始终从消息中带过去,根据App情况,也可以不用传过去节省流量,这里我们是没有服务器,所以传过去

    *data: 扩展消息的内容,看一下我们定义的一些常量key,对应的我们可以把需要扩展的内容填充

    *message_type: 扩展的消息类型,类似常规时候的 text,gif,voice这些类型的定义方式

    *is_message_extend: 是否是消息扩展,当不是扩展消息的时候,我们只读用户扩展信息userInfo就可以了

    *display_text: 扩展消息应该展示的文本,如果对方源码不支持此扩展消息,相应这个文本会有变化

    *is_support_display: 根据双方本地的内容协议支持来确定,是否支持正常显示这条扩展消息
     
    工具类库注释 (Dependcy)
     
    *Base64 用于压缩编码字符串,在群信息压缩的环节使用

    *EaseMob 环信聊天服务SDK

    *fmdb 最好用的Sqlite,在上面做了一层简单的封装,支持对象化CURD操作

    *GJCFCachePathMananger 应用层全局的缓存目录管理

    *GJCUProgressView 自定义的一个进度展示

    *SDWebImage 最好用的图片缓存库,目前基本全部使用此类库来加载图片

    *JSONModel 实测使用最稳定的Json转模型,很好的自定义扩展,在项目中Json与模型转化和生成都运用到了

    *GJCURoundCornerView 取自另一个作者的一个控件,可以自定义四个角的圆角和试图的bord情况

    *GJCUCapture 根据Apple的AVCapture Demo 自定义的一个拍照的组件,母的是解决iOS7.0 iPhone4,5下的拍照黑屏问题

    *GJGCChatInputPnael 项目中对话使用的聊天输入控制面板

    *AFNetworking 最好用的网络库

    *AudioCoder 语音编码库,公开的

    *DownloadManager 任务化下载组件

    *FileUploadManager 任务化上传组件

    *FLAnimateImage 用于Gif表情展示

    *GJCFAssetsPicker 自定义图片选择

    *GJCFAuidoManager 播放和录音

    *GJCFCoreText 自定义图文混排组件

    *GJCFUitils 常用工具函数

    *GJCUAsyncImageView 自定义异步图片加载,不是非常稳定,目前底层全部改成SDWebImage加载

    *GJCUImageBrowase 大图浏览组件
     
    为什么做这个聊天室?

    大家都在做App,可能各种需求,各种蛋疼的坑,老板说,我们就是要有个IM消息服务,但是还得能自己定义,那么OK,我们的目标来了,谁来写呢,再写一遍,很麻烦,ZYChat经过对话详情页疯狂对发消息测试,没有任何问题,所以,我们要得是一个真实的对话聊天项目,并且它是开源的,大家都可以来做一些自己想做的扩展,我们需要关心的就是,我们要做的是什么,如何使用它,节省我们的时间。所以,ZYChat-EaseMob就诞生了。
     
    帮助我改进
     
    我知道这个代码可能在很多大神面前都是不值得一提的东西,但是,我希望帮助到它能够帮助到得人就可以了。如果还有需要帮助咨询的,可以给我发邮件1003081775@qq.com,如果感兴趣可以联系我加入一起开发完善此项目,谢谢大家支持,更多需要详细解答问题的请加QQ群:219357847。
     
    github下载地址:https://github.com/zyprosoft/ZYChat 收起阅读 »

    android开发 时间日期选择详解

       安卓开发过程中难免会碰到需要选择日期时间的情况,由于大部分android初级教程都没教怎么选择时间,初学者碰到这种难免会有些不知所措,难道要让用户自己输入日期时间?先不说用户体验不好,处理用户输入各式各样的日期格式也要花好大一番功夫。   日...
    继续阅读 »
       安卓开发过程中难免会碰到需要选择日期时间的情况,由于大部分android初级教程都没教怎么选择时间,初学者碰到这种难免会有些不知所措,难道要让用户自己输入日期时间?先不说用户体验不好,处理用户输入各式各样的日期格式也要花好大一番功夫。
     



    2704468-d559f9313bdacf62.jpg


    日期还要自己输入?


      所以当然不可能让用户自己输入日期时间,笔者收集整理了一些资料,总结了一下如何实现android选择时间的功能,方便后来者参考

    android 6.0 中的运行效果



    2704468-f298551b9a240376.png


    效果图




    2704468-13e78e9a8fa953a2.png


    效果图


    TimePickerDialog和DatePickerDialog介绍

    系统封装好了两个类可以供我们直接调用,TimepickerDialog用于选择时间,DatePickerDialog用于选择日期。

    TimePikckerDialog的构造方法
    public TimePickerDialog(Context context, OnTimeSetListener listener, int hourOfDay, int minute, boolean is24HourView)

    • 第一个参数接受一个context信息
    • 第二个参数为当选择时间完成后执行的回调接口
    • 第三个参数和第四个参数为初始化的时间
    • 第四个参数选择true代表24小时制,false代表12小时制
     DatePickerDialog构造方法
    public DatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)
    • 第一个参数接受context信息
    • 第二个参数为日期选择完成后的回掉接口
    • 最后三个参数分别为初始化的年月日
     可以看出两者的构造方法基本相差不多,由于两者都是继承自AlertDialog,所以得到两者对象后只要调用它们的show()方法即可将选择框弹出。具体实现有两种实现方式,一种是直接在Activity中使用,还有一种是通过FragmentDialog使用。直接在Activity中使用比较简单,不过代码会比较乱,通过FragmentDialog管理的使用方式会比较优雅,而且便于管理。直接在Activity中使用布局文件,里面就一个TextView用于显示所选时间
    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.testdemo.TestActivity">    <TextView        android:layout_centerInParent="true"        android:textSize="20sp"        android:id="@+id/time_text"        android:text="点此选择时间"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></RelativeLayout>
    Activity文件:
    public class TestActivity extends AppCompatActivity {    private TextView timeText;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test);        timeText = (TextView) findViewById(R.id.time_text);        //为TextView设置点击事件        timeText.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //将timeText传入用于显示所选择的时间                showDialogPick((TextView) v);            }        });    }    //将两个选择时间的dialog放在该函数中    private void showDialogPick(final TextView timeText) {        final StringBuffer time = new StringBuffer();        //获取Calendar对象,用于获取当前时间        final Calendar calendar = Calendar.getInstance();        int year = calendar.get(Calendar.YEAR);        int month = calendar.get(Calendar.MONTH);        int day = calendar.get(Calendar.DAY_OF_MONTH);        int hour = calendar.get(Calendar.HOUR_OF_DAY);        int minute = calendar.get(Calendar.MINUTE);        //实例化TimePickerDialog对象        final TimePickerDialog timePickerDialog = new TimePickerDialog(TestActivity.this, new TimePickerDialog.OnTimeSetListener() {            //选择完时间后会调用该回调函数            @Override            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {                time.append(" "  + hourOfDay + ":" + minute);                //设置TextView显示最终选择的时间                timeText.setText(time);            }        }, hour, minute, true);        //实例化DatePickerDialog对象        DatePickerDialog datePickerDialog = new DatePickerDialog(TestActivity.this, new DatePickerDialog.OnDateSetListener() {            //选择完日期后会调用该回调函数            @Override            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {                //因为monthOfYear会比实际月份少一月所以这边要加1                time.append(year + "-" + (monthOfYear+1) + "-" + dayOfMonth);                //选择完日期后弹出选择时间对话框                timePickerDialog.show();            }        }, year, month, day);        //弹出选择日期对话框        datePickerDialog.show();    }}
    到此,点击运行就可以看效果了:)通过FragmentDialog使用为什么要用DialogFragment
    • 用DialogFragment管理对话框是官方推介的使用方式。
    • 使用DialogFragment管理对话框也方便代码的重用。
    • 如果你想了解更多可以看看详细解读DialogFragment,里面讲的很详细。


    通过FragmentDialog实现步骤

    DatePickerFragment类:
    public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
    private String date;
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    //得到Calendar类实例,用于获取当前时间
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    //返回DatePickerDialog对象
    //因为实现了OnDateSetListener接口,所以第二个参数直接传入this
    return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    //实现OnDateSetListener接口的onDateSet()方法
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    //这样子写就将选择时间的fragment和选择日期的fragment完全绑定在一起
    //使用的时候只需直接调用DatePickerFragment的show()方法
    //即可选择完日期后选择时间
    TimePickerFragment timePicker = new TimePickerFragment();
    timePicker.show(getFragmentManager(), "time_picker");
    //将用户选择的日期传到TimePickerFragment
    date = year + "年" + (monthOfYear+1) + "月" + dayOfMonth + "日";
    timePicker.setTime(date);
    }
    }
    TimePickerFragment类:
    //实现OnTimeSetListener接口
    public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener{
    private String time = "";
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    //新建日历类用于获取当前时间
    Calendar calendar = Calendar.getInstance();
    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    int minute = calendar.get(Calendar.MINUTE);
    //返回TimePickerDialog对象
    //因为实现了OnTimeSetListener接口,所以第二个参数直接传入this
    return new TimePickerDialog(getActivity(), this, hour, minute, true);
    }

    //实现OnTimeSetListener的onTimeSet方法
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    //判断activity是否是DataCallBack的一个实例
    if(getActivity() instanceof DataCallBack){
    //将activity强转为DataCallBack
    DataCallBack dataCallBack = (DataCallBack) getActivity();
    time = time + hourOfDay + "点" + minute + "分";
    //调用activity的getData方法将数据传回activity显示
    dataCallBack.getData(time);
    }
    }

    public void setTime(String date){
    time += date;
    }

    }
    Activity的布局文件,只有一个TextView用于显示时间
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.testdemo.TestActivityActivity">

    <TextView
    android:id="@+id/time_text"
    android:layout_centerInParent="true"
    android:text="点此选择时间"
    android:textSize="20sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

    </RelativeLayout>
    Activity文件:
    //实现DataCallBack接口,实现与Fragment的通信
    public class TestActivityActivity extends AppCompatActivity implements DataCallBack{

    TextView timeText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test2);
    timeText = (TextView) findViewById(R.id.time_text);
    //为timeText设置点击事件
    timeText.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //实例化对象
    DatePickerFragment datePickerFragment = new DatePickerFragment();
    //调用show方法弹出对话框
    // 第一个参数为FragmentManager对象
    // 第二个为调用该方法的fragment的标签
    datePickerFragment.show(getFragmentManager(), "date_picker");
    }
    });
    }


    //实现DataCallBack的getData方法
    @Override
    public void getData(String data) {
    //data即为fragment调用该函数传回的日期时间
    timeText.setText(data);
    }
    }
    由于TimePickerFragment对话框是在DatePickerFragment类里面启动的,所以这样写只能日期和时间都选择,如果要单独选择日期或者时间,只需要重写onTimeSet()或者onDateSet()方法即可

    兼容性问题

    不同的android版本显示的效果不同,在android6.0效果很好,不过在一些低版本android(如4.0,笔者没有每个版本都测试)会出现调用两次回掉函数的情况,导致选择两次时间。解决的办法有很多,只要保证回调函数里面的逻辑只执行一次就可以。这里提供一种比较通用的方法。

    重写TimePickerDialog和DatePickerDialog的onStop()方法

    直接在Activity中使用的重写方法
    final TimePickerDialog timePickerDialog = new TimePickerDialog(TestActivity.this, new TimePickerDialog.OnTimeSetListener() {
    //选择完时间后会调用该回调函数
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    time.append(" " + hourOfDay + ":" + minute);
    //设置TextView显示最终选择的时间
    timeText.setText(time);
    }
    }, hour, minute, true){
    // 重写onStop()
    @Override
    protected void onStop() {

    }
    };
    //实例化DatePickerDialog对象
    DatePickerDialog datePickerDialog = new DatePickerDialog(TestActivity.this, new DatePickerDialog.OnDateSetListener() {
    //选择完日期后会调用该回调函数
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    //因为monthOfYear会比实际月份少一月所以这边要加1
    time.append(year + "-" + (monthOfYear+1) + "-" + dayOfMonth);
    //选择完日期后弹出选择时间对话框
    timePickerDialog.show();
    }
    }, year, month, day){
    //重写onstop
    @Override
    protected void onStop() {
    }
    };
    上面的写法看起来会比较乱,也可以另外新建一个类继承TimePickerDialog或者DatePickerDialog然后重写onStop()方法

    通过FragmentDialog使用的重写方式

    只需在onCreateDialog()方法里面重写即可,下面的代码会比较清晰
    return new DatePickerDialog(getActivity(), this, year, month, day){
    // 重写onStop
    @Override
    protected void onStop() {
    }
    };
     return new TimePickerDialog(getActivity(), this, hour, minute, true){
    //重写onStop
    @Override
    protected void onStop() {
    }
    };
    笔者水平有限,但是保证以上代码都是亲手实现过一遍的。如果有什么不足之处欢迎大家指出^_^。 收起阅读 »

    环信移动客服助力雪球与聪明的投资者同行

      雪球于2011年开始上线运营,是一家面向投资者的老牌明星社交网络公司。为投资者提供跨市场、跨品种的数据查询、新闻订阅和互动交流服务,目前已覆盖A股、港股、美股市场,旗下拥有手机炒股应用及雪球网站www.xueqiu.com 随着资本的热捧,雪球已经逐渐发展...
    继续阅读 »
      雪球于2011年开始上线运营,是一家面向投资者的老牌明星社交网络公司。为投资者提供跨市场、跨品种的数据查询、新闻订阅和互动交流服务,目前已覆盖A股、港股、美股市场,旗下拥有手机炒股应用及雪球网站www.xueqiu.com 随着资本的热捧,雪球已经逐渐发展成为一个面向投资者的垂直社区,聚拢用户人数已经超过100万。



    SFZQ_NK__RCZA2N_8JF6@P.png



      雪球的创始人方三文认为,交易、数据和沟通,是投资领域不可或缺的。理性成功的投资需要以海量交易数据、资讯和逻辑推演能力为基础,而在数据和经验之上还有沟通,雪球正是试图通过移动互联网社交产品的形式,一方面汇聚信息,另一方面通过投资者群体的交流,消除投资的死角和盲区。雪球已经确立自己在投资者交流这个服务市场上的地位,当交流与交易融合的时候,社区的价值将会爆发。在这样一个用户体验为王的移动互联网环境下,环信提供的全媒体智能客服在雪球不断壮大中发挥了重要价值。

      雪球先后获得三轮融资,最近的一次是2014年9月获得由人人和晨兴资本合投的4,000万美元C轮融资,投资人很看好雪球在互联网金融领域的发展前景和潜力,相信社区产品会产生巨大的价值。为了提高社区产品的活性,雪球部署了即时通讯云产品提供了聊天、群组等服务,同时部署了环信移动客服解决私募等理财产品的咨询、开户相关客服问题。

    雪球客服需求分析:传统呼叫中心服务方式单一,多媒体客服提供更佳客服体验

      对于雪球来说,历经多年所打造的专业投资者社区,是最有价值的资源,也是雪球的投资方最为看重的优势。如何充分利用好这个优势,影响更多的投资者参与进来,进而深度挖掘社区的价值,打造产品闭环,是雪球迫切需要考虑的问题。

      自成立之初,雪球即不遗余力地推动移动化应用。2012年移动端APP上线,支持iOS和Android平台。采用自主研发的即时通讯云为底层平台,雪球快速实现了包括即时消息聊天、群组互动沟通的一组特色移动功能上线,收到了良好的效果,用户兴趣和平台粘性大大增强。

      随着业务的开展,雪球的业务开始向投资入口处延伸,私募工场、交易开户等模式开通,客服的需求也随之而来。主要的客服问题包括私募等理财产品的咨询、开户相关的问题等。 

      开始雪球采用400呼叫座席的方式应对客户咨询,但是实际效果并不理想。一方面是客服座席占用时间长,单个用户接待时间经常超过10分钟;另一方面由于投资领域的专业性强,数据庞杂而不直观,客服人员即使尽力描述,有时也很难完整呈现出方案的全貌,以致沟通效果大打折扣。

    解决方案:部署环信移动客服妥妥的

      雪球所面临的问题,主要在于服务效果和接待效率。从服务效果的角度,语音沟通方式强在实时专享,差在直观达意。如果能采用包含图片、文字的富媒体消息,就可以很好地解决问题。在知识库的配合下,客服人员能够从容应对,在理解客户问题基础上有条不紊地解答,并在过程中主动向客户推送文字/图片消息、文件等,大大增强沟通效果。

      同时,交互式的聊天方式下,一个客服人员可以同时接待几个到十几个客户,多个客户的对话互不影响。虽然实时性稍差,但从服务效率的角度却是大大提高了客服的工作效率,而且也更符合当今移动互联潮流以及年轻用户碎片化的使用习惯。

      环信是国内全媒体智能云客服市场领导者,环信的全媒体客服产品完美支持智能设备APP内嵌的客服应用场景,并同时能接入包括网页端、微信、微博等消息渠道,通过一个客服账号可以轻松区分和处理来自于不同设备、不同渠道、不同方式的客户咨询,实现全渠道、全媒体客服的完美合一。客服工作台界面简洁,功能完善而实用。



    图片1.png


    图1. 环信全媒体客服平台


      雪球此前已经成功部署了自有即时通讯云产品,所以在很短的时间内,雪球APP就实现了客服功能的集成和上线,无需跳出APP,普通用户即可使用APP内置客服获得咨询服务,通过配合集成的金融领域知识库,客服人员可以用富媒体消息等功能图文并茂的方式解答客户问题, 极大提升了客户体验。



    图片2.png


    图2. 雪球APP嵌入客服功能


    环信的产品价值

      作为以专业投资社区为主要产品形态的雪球而言,优质用户的兴趣、使用频度及留存率至关重要。随着增值产品的逐步上线,客服对于雪球的意义不言而喻。而随着引入环信的全媒体智能SaaS客服平台,雪球的产品思路也逐渐清晰起来:
    1. 从发散的消息群组、论坛、圈子关注等形态,逐步整合到集群化、专业化的投资服务,平台价值初步显现;
    2. 客服即营销,从成本中心向营销、盈利中心转化。雪球社区的长期不懈积累,打磨出了非常好的投资者信任关系,因此叠加优质的金融投资产品,以客服支撑作为辅助,将是完美的增值组合;
    3. 顺应移动互联的潮流,客服工作移动化为先。首先做好移动端的客服,在完善用户体验的基础上再逐步扩展到网页等其他渠道,最终打通各个客服渠道。

      截至目前,环信移动客服在雪球平台上运行良好,同时也为雪球带来了可观的商业回报。我们的目标是帮助这只雪球越“滚”越大,为此环信新成立的客户成功团队将为企业客户提供更优质服务,同时更愿意帮助整个互联网金融行业用户不断实现自我超越,创造新价值。
     
      关于环信:环信移动客服——全媒体智能云客服倡领者,于2016年荣膺“Gartner 2016 Cool Vendor”。环信支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。基于环信业界领先的IM长连接技术保证消息必达,并通过智能客服机器人技术降低人工客服工作量。同时,基于人工智能和大数据挖掘的客户旅程透析产品"环信客户声音"能够帮助企业优化运营,提高跨渠道客服体验。 收起阅读 »

    Android V2.3.1release,支持华为推送,红包功能深度优化

    版本:V2.3.1 2016-8-19 【优化】sdk优化1、支持在华为设备上使用华为推送; 2、减少群组批量加人的耗时; 3、修复发送消息时可能会导致memory leak的bug,修复此bug除了更新sdk,还需在设置消息状态callbac...
    继续阅读 »
    版本:V2.3.1 2016-8-19

    10658PICvNs_1024.jpg



    【优化】sdk优化
    1、支持在华为设备上使用华为推送;

    2、减少群组批量加人的耗时;

    3、修复发送消息时可能会导致memory leak的bug,修复此bug除了更新sdk,还需在设置消息状态callback时,加上if(message.status != Status.SUCCESS && message.status != Status.FAIL)这个判断,如果依赖easeui库,使用最新的easeui就行;

    4、easeui中修复好友nick可能解析不对,导致crash的问题
     
     【优化】红包若干优化和修改:
    1. 修复Webview潜在漏洞;

    2. 修复支付密码错误的问题;

    3. 修复弱网状态下零钱页crash的问题;

    4. 修复发红包时,零钱余额充足,不优先展示零钱的问题;

    5. 增加群红包个数、单个红包限额、充值限额、商户名等配置。
     
    版本历史:Android sdk更新日志
    下载地址:sdk下载
     
    使用过程中有遇到任何问题、反馈建议欢迎直接评论留言,我们将第一时间回复! 收起阅读 »

    云通讯市场的现状和发展趋势探讨

    6月底,美国云通讯平台提供商Twilio在纽约股票交易所上市,融资1.5亿美元,上市首日涨幅超过90%,市值至今已逼近30亿美元。Twilio的成功上市,也给国内的云通讯从业者打了一剂强心针。 所谓的云通讯服务包含了IM聊天、语音电话、呼叫中心、在线客服、短信...
    继续阅读 »

    a7cec8c1146ccc54cb8c9fa328e2ac8f.png




    30142414504794995.jpg


    6月底,美国云通讯平台提供商Twilio在纽约股票交易所上市,融资1.5亿美元,上市首日涨幅超过90%,市值至今已逼近30亿美元。Twilio的成功上市,也给国内的云通讯从业者打了一剂强心针。
    所谓的云通讯服务包含了IM聊天、语音电话、呼叫中心、在线客服、短信验证、视频流传输等能力,为开发者和企业构建具有通讯能力的应用提供了极大的便利。

    据相关数据,2015年国内云通讯市场的规模为4.53亿人民币,今年有望达到8.12亿,两年后达到24亿元,几乎以翻番的速度高速增长。企业级的云通讯服务,作为最通用、最活跃、最刚性的需求,极有可能成为中国企业服务的入口级应用。在这样一个充满想象空间的市场上,创业者和巨头都在涌入。

    那么面对巨头,创业者该如何布局?在业务类型同质化的情况下,如何拓展服务,进一步提升盈利能力?未来,云通讯市场又将呈现哪些新的发展趋势?

    本期沙龙,我们将邀请云通讯领域的创业者和投资人,一起来探讨这些话题。

    30352414505305025.jpg




    30252419820718110.jpg




    30322414505625043_(1).jpg


    时间:2016年8月20日(周六)下午14:00-17:30

    地点:北京 车库咖啡

    议程:

    13:30-14:00 签到入场

    14:00-14:30 活动介绍及开场

    14:30-16:20 嘉宾主题分享

    16:20-17:30 圆桌互动
     
    报名地址:点击报名 收起阅读 »

    【公告】历史聊天记录保存时长变动

    各位用户好:     通过对拉取历史聊天记录的REST接口(调用形式为: /{org_name}/{app_name}/atmessages)的调用进行分析,目前99.5%以上的调用都是拉取的3天以内的历史记录。本着节约资源成本,为用户提供更有有效、稳定的服...
    继续阅读 »


    27r58PICYkT.jpg



    各位用户好:

        通过对拉取历史聊天记录的REST接口(调用形式为: /{org_name}/{app_name}/atmessages)的调用进行分析,目前99.5%以上的调用都是拉取的3天以内的历史记录。本着节约资源成本,为用户提供更有有效、稳定的服务的标准。现计划于8.24日将免费存储历史记录的时间期限从现有的14天变更为3天(购买了历史记录延长存储服务的用户不受影响)。
        如您的业务中目前有拉取3天前历史记录的操作,请提前做好程序脚本的变更准备工作,如给您带来不便,深表歉意。
        如您在使用中存在其他问题可以通过官网或者您的大客户经理向我们反馈。
      收起阅读 »

    默默的为环信社区礼物点个赞

      就在上周,响应着imgeek社区“我为人人,人人为我;赠人玫瑰,手有余香!”的口号,在社区发表了一遍关于.net集成环信服务端的教程环信Restfull API dotnetSDK     有幸能被收录进了社区代码专区,希望能帮助更多的人! ...
    继续阅读 »
      就在上周,响应着imgeek社区“我为人人,人人为我;赠人玫瑰,手有余香!”的口号,在社区发表了一遍关于.net集成环信服务端的教程环信Restfull API dotnetSDK
     
      有幸能被收录进了社区代码专区,希望能帮助更多的人!

    QQ截图20160822172846.jpg



    QQ截图20160822172902.jpg


     
     环信社区的礼物简单又实用,赞,在此感谢环信社区的支持,感谢beyond,感谢社区每一个人,感谢环信,感谢imgeek,我爱开源!!!


    环信礼物4.jpg




    环信礼物1.jpg




    环信礼物2.jpg




    环信礼物3.jpg




    环信礼物5_副本.jpg


     

      收起阅读 »

    说发红包我是认真的!!!!!

       云账户( www.yunzhanghu.com)-行业内首创红包SDK,将于8月17日(周三)给关注云账户红包的SDK的开发者们发5000元现金红包。 单个红包200元,发25次,每次分30份。运气好的同学可以抢到几百元的现金红包哦!!!参与方式:15:...
    继续阅读 »
     
     云账户( www.yunzhanghu.com)-行业内首创红包SDK,将于8月17日(周三)给关注云账户红包的SDK的开发者们发5000元现金红包。 单个红包200元,发25次,每次分30份。运气好的同学可以抢到几百元的现金红包哦!!!参与方式:15:40在 云账户红包群公布参与方式(群号:366135448)。红包雨降落时间:16:00 收起阅读 »

    【产品快递】Web IM V1.1.2发布,新版demo,全新SDK目录等你来体验

    版本:V1.1.2 2016-8-12 功能改进: 新版demo添加isAutoLogoin参数,默认setPresence拆分sdk为四个文件,最终打包成一个webim.im.sdk.js增加try catch,尽量减少因为外部的错误导致的连接断开修改错误...
    继续阅读 »

    WebIM.jpg


    版本:V1.1.2 2016-8-12

    功能改进:
    • 新版demo
    • 添加isAutoLogoin参数,默认setPresence
    • 拆分sdk为四个文件,最终打包成一个webim.im.sdk.js
    • 增加try catch,尽量减少因为外部的错误导致的连接断开
    • 修改错误码,不在返回错误提示消息,在文档体现
    Bug fix:
    • 无法传file_length
    • 特殊字符无法显示
    • im用户为数字时,toLowercase报错
    • 发送音频增加时长参数
     环信 WebIM sdk 什么是环信 Web IM Demo环信 Web IM Demo 展示了怎样使用环信 Web IM SDK 快速创建一个完整的类似微信的网页聊天示例。展示的功能包括:登录,登出,操作好友,收发个人消息、群组消息。环信 Web IM 源代码已在 GitHub 上开源供开发者下载 https://github.com/easemob/web-im,以帮助开发者更好的学习了解环信 SDK。Demo使用react框架,支持IE9+、Chrome、Firefox等高级浏览器。SDK支持IE8+。下载环信 Web IM Demo[list=1]
  • 下载环信Web IM及SDK:下载
  • 目录简要说明:
  •  
    • demo:demo相关静态资源文件。包括脚本、样式、语言包、Appkey配置文件(/demo/javascript/dist/webim.config.js)等
    • sdk:WebIM SDK
    • package.json: 构建环境依赖文件。需要安装npm环境,终端执行sudo npm intall等待安装完成
    • webpack.config.js: webpack配置文件
    运行环信 Web IM运行方式有两种:
    • 直接使用浏览器打开 index.html 文件。(注:ie9需要使用下面的方式)
    • 将Demo部署到 web 服务器通过 URL 访问 index.html。
    Web IM 功能演示点击http://webim.easemob.com 对 Web IM 进行体验,账号为环信Demo的账号(与 Android、iOS 的 Demo 账号相同)。Web IM 功能说明Easemob Web IM SDK 已支持如下功能:1. SDK 本身已支持 IE8+、FireFox10+、Chrome15+、Safari6+ 之间文本、表情、图片、音频消息相互发送。2. SDK 支持 Web 端之间,Web 端与 Android/iOS端相互添加、删除好友功能。3. SDK 支持与iOS、Android SDK 之间相互发送文本、图片、音频、地址消息。4. SDK 对于消息的处理方式如下:
    • 文本、表情消息,直接发送、接收。
    • 附件消息(图片、音频、文件等),SDK上传附件到服务器,然后发送附件基本信息(发送方上传的附件URL、文件名等),接收方根据附件的URL、secret和自身的登录信息,以流的形式从服务器上下载到本地处理。
    5. 提供Demo,方便大家参考,已实现聊天添加/删除好友/群组功能。备注:
    • Demo默认支持的图片消息格式:PNG、JPG、BMP、GIF;
    • Demo默认支持的音频消息格式:MP3、AMR、WMV;
    • Demo默认支持的文件消息格式:PNG、JPG、BMP、GIF、zip、txt、doc、pdf;

    收起阅读 »

    开启SaaS客服的洪荒之力,全媒体客户中心是技术更是艺术!

    --国内首本全媒体客服专著《全媒体客户中心管理》序言 引言:8月9日,国内首本"全媒体"客服专著《全媒体客户中心管理》读书沙龙在北京成功举办,后续将覆盖全国十大主要城市。环信作为国内全媒体智能 SaaS客服的倡领者一直致力于推动整个中国S...
    继续阅读 »
    --国内首本全媒体客服专著《全媒体客户中心管理》序言

    引言:8月9日,国内首本"全媒体"客服专著《全媒体客户中心管理》读书沙龙在北京成功举办,后续将覆盖全国十大主要城市。环信作为国内全媒体智能 SaaS客服的倡领者一直致力于推动整个中国SaaS客服行业的发展,给企业提供最具效率和最佳用户体验的客服产品及服务。此次和客服行业权威媒体《客户世界》以及行业专家一起联合推出《全媒体客户中心管理》一书,环信提供了在全媒体客服领域包括产品技术和客户运营方面大量的最佳实践及成功案例。同时,环信参与了从前期图书主题的设定、相关最佳实践和成功案例的准备、中期文档图表的梳理、后期出版环节的编审和呈现,一直到各地读书沙龙的组织工作,目的也是推动整个SaaS客服行业和企业用户少走弯路,加速企业用户的信息化和用户体验进程,让呼叫中心(客户中心)提速迈向智能化和数据化时代。以下内容是环信 CEO刘俊彦为《全媒体客户中心管理》所做序言。

    20160810104421468.jpg


    国内首本全媒体客服专著《全媒体客户中心管理》
    序:2014年,李克强总理首次指出互联网是大众创业、万众创新的新工具。2015年十二届全国人大三次会议上,总理在政府工作报告中首次提出"互联网+"行动计划。"互联网+"是知识社会创新2.0推动下的互联网形态演进及其催生的经济社会发展新形态。"互联网+"不是简单的"互联网+各个传统行业",而是利用信息通信技术以及互联网平台,让互联网与传统行业进行深度融合,创造新的发展生态。

    "互联网+客户服务"正在充分发挥互联网在社会资源配置中的优化和集成作用,将互联网的创新成果深度融合于客户服务之中,提升整个客户服务行业的创新力和生产力,形成更广泛的、以互联网为基础设施和实现工具的客服发展新形态。

    客户服务正在被重塑,面对各大接入媒体、各个年龄段受众、各种连接移动设备, "互联网+呼叫中心"逐渐进化成为"客户中心",而"互联网+客户中心"又蜕变成为"全媒体客户中心"。全媒体客户中心正是随着企业向互联网转型以及社会环境的改变应运而生的。

    据研究报告显示,自2006年起,国内就已经有企业践行多媒体客户中心的探索,主要提供语音呼叫中心客服和网页端客服,探索前期发展缓慢。随着移动互联网的发展,社交媒体爆发以及专门为移动端提供SaaS客服的厂商纷纷崛起,促进了全媒体客服领域的高速发展。自2014年以来,中国SaaS客服领域吸引了大量的投资者,投资总额超过5000万美元,同时BAT等互联网巨头也已经入场。经过十年发酵的沉淀,客户中心正从话音呼叫中心、网页端客服向全媒体架构的统一客服平台升级,经过2015年的启动期,2016年全媒体客户中心将进入高速发展期,预计2017年将达到680亿元市场规模。

    经济与社会环境发展促进客服需求升级,互联网+时代需要全媒体客户中心!

    1、2015年9月,国务院常务会议决定设立总规模为600亿元的国家中小企业发展基金,政府对中小企业发展持鼓励态度。国家将"互联网+"提升为国家战略,传统企业加快互联网化进程,对全媒体客户中心需求激增。

    2、从宏观经济层面看, 2015年全年国内生产总值676708亿元人民币,较上年增长6.9%。截止2015年底,中国互联网用户人数达6.88亿人,其中手机上网人数 6.20亿人,互联网普及率高达50.3%。企业级信息消费蕴含着新的系统机会,中国企业级服务市场已经打开。

    3、中国基础移动网络速度提升,2015年我国4G用户总数达2.25亿,中国智能手机用户渗透率提升。网民的上网设备正在向手机等移动端设备集中,互联网对于整体社会的影响已进入到新的阶段。

    4、我国消费结构升级,从实用型向品质型升级、从必需型向享受型升级、从物质型向服务型升级。消费者对服务态度、客户体验的要求越来越高,消费习惯开始逐渐转变,线上咨询购买、线上消费线下购买相结合,O2O等行业呈井喷发展,服务型消费已经逐渐成为主流,客户服务成为任何企业都不可或缺的"标配"。

    关键词从"连接"变成"服务",全媒体客户中心将扮演重要"连接"角色!

    上一个互联网时代创造了BAT等互联网巨头,核心关键词是"连接"。百度连接人与数据、阿里巴巴连接人与商品、腾讯连接人与人,分别在万亿级的市场获得了巨大成功。随着"互联网+"国家战略的不断深入,国内以颠覆型"服务"商业模式驱动的O2O和互联网金融等行业风生水起,不断创造出诸如滴滴出行、蚂蚁金服等新互联网神话。

    互联网产品从以往的专注做"加法"、唯KPI论转变为做"减法"、唯用户体验论,用户体验为王的设计理念已经深入人心。下一个互联网十年将以"人工智能+大数据+VR"为驱动,打造一个体验为王的服务型互联网世界。

    著名经济学家凯恩斯曾说过:"消费是一切经济活动的唯一目的和对象。"因为人类存在消费需求,才会有生产和制造来满足这样的需求,也正是因为有了消费和生产制造,才需要服务去支持它们,使其更有效率,而全媒体客户中心将在服务领域扮演非常重要的"连接"角色。

    全媒体客户中心的最佳实践

    1、全媒体接入解决了客服请求渠道杂、体验差等问题。包括来自电话、网页端(H5)、APP、新媒体(微博、微信等)的客服请求均能一键接入、一键回复、一键管理。

    2、智能机器人解决了招聘难和效率低问题。客服领域当前是一个典型的劳动密集型领域,面临着中国人口红利消失、招聘艰难且成本日益增加等很多问题,一些简单的、重复的问题由机器人解答,一些复杂的问题也可以改为在人机混合模式下由机器人提供备选答案、由真人来选择答案。智能机器人能够帮助解决60%- 80%的常见问题,智能机器人+人工协同的服务方式将极大地提高效率。

    3、客服从成本中心向营销中心和盈利中心转化。客户中心开始承担更多营销、销售的职责。过去是以客服工单为主,沟通关系被动,职能隔离且偏售后,与销售、营销部门无协同关系。但未来客服的业务链条将"并联"营销、销售和售后环节,是互联网时代企业与用户的"第一连接点",承担客户关系维护、二次销售、营销等职能,成为盈利中心。

    4、大数据驱动,精准客户画像,不止于报表。

    全媒体客户中心不仅是一门技术同时更是一门艺术!

    全媒体客户中心理论以"体验"为核心视角,恰到好处地描绘了未来客户服务全媒体接入、人工智能驱动、大数据升华,参与企业全要素、全流程运作的服务蓝图。全媒体客户中心的发展历程经过呼叫中心、联络中心、客户中心,作为一种体系,在互联网技术升级换代中不断注入新的内涵,从此不再简单,充满人文情怀,但仍然质朴,不忘初心。

    一位资深从业者曾这样总结这个时代:"伴随着客户互动的革命,从呼叫中心演变到客户中心,作为不断扩展的客户交互平台概念,一直经历着深刻的变革。运营日益规模化、精准化、多通路化、智能化和普适化。作为集语音和非语音渠道为一体、人工与智能服务共协同、物理与数字的通路大融合,随着以客户理念,人文为中心时代的来临,客户服务中心正从企业价值链的一侧走向价值传递的中央,与惊艳的产品研发一起,发挥着客户体验创造的核心角色。"

    本书通过理论与实践相结合,深入浅出地诠释了全媒体客户中心的建设与文化等核心内容,将能够很好地帮助企业管理者解决客户中心日常运营中碰到的问题,同时也将促进客户服务在企业运营中发挥更大价值。

    全媒体客户中心不仅是一门技术,同时更是一门艺术!是为序。

    刘俊彦

    环信即时通信云CEO

    2016年6月于北京 收起阅读 »

    环信Restfull API dotnetSDK

    Easemob.Restfull4Net 环信Restfull API dotnet的封装 支持的.Net Framework版本:4.0 API地址:http://docs.easemob.com/start/100serverintegrat...
    继续阅读 »
    Easemob.Restfull4Net


    net.png



    环信Restfull API dotnet的封装
    支持的.Net Framework版本:4.0
    API地址:http://docs.easemob.com/start/100serverintegration
    一、SDK的使用说明:
    采用配置节点的形势来设置环信,且一次可以支持多个app进行调用,在数据处理上,全部采用强类型实体进行包装,异常处理全部数据错误日志,方便查询。
    以下为配置节点的使用方法:
    1、采用Section的形势配置app,这种方式有个好处,可以连续配置多个app。
    <configSections>
    <section name="EasemobServer" type="Easemob.Restfull4Net.Config.Configuration.ServerConfigSection,Easemob.Restfull4Net"/>
    </configSections>
    <EasemobServer>
    <!--
    备注:此节点可添加多个
    serverUrl:环信服务器地址
    orgName:组织名,对应#前面部分
    appName:应用名,对应#后面部分
    clientId:客户端ID
    clientSecret:客户端密钥
    httpTimeOut:请求超时设置(以毫秒为单位)
    isDebug:是否为调试模式,说明:如果为调试模式,将在程序主目录输出日志文件
    maxJsonLength:JavaScriptSerializer类接受的JSON字符串的最大长度
    -->
    <server
    serverUrl="https://a1.easemob.com/"
    orgName="orgName"
    appName="appName1"
    clientId="clientId1"
    clientSecret="clientSecret1"
    httpTimeOut="10000"
    isDebug="true"
    maxJsonLength="0">
    </server>
    <server
    serverUrl="https://a1.easemob.com/"
    orgName="orgName"
    appName="appName2"
    clientId="clientId2"
    clientSecret="clientSecret2"
    httpTimeOut="10000"
    isDebug="true"
    maxJsonLength="0">
    </server>
    </EasemobServer>
    2、使用自定义节点配置,目前SDK封装的只能使用一个app。
    <add key="HX_EaseServerUrl" value="https://a1.easemob.com/"/><!--环信服务器地址-->
    <add key="HX_EaseAppClientID" value="clientId3"/><!--客户端ID-->
    <add key="HX_EaseAppClientSecret" value="clientSecret3"/><!--客户端密钥-->
    <add key="HX_EaseAppName" value="appName3"/><!--应用名,对应#后面部分-->
    <add key="HX_EaseAppOrgName" value="orgName"/><!--组织名,对应#前面部分-->
    <add key="HX_EaseHttpTimeOut" value="10000"/><!--请求超时设置(以毫秒为单位)-->
    <add key="HX_EaseIsDebug" value="true"/><!--是否为调试模式,说明:如果为调试模式,将在程序主目录输出日志文件-->
    <add key="HX_EaseMaxJsonLength" value="0"/><!--JavaScriptSerializer类接受的JSON字符串的最大长度-->
    3、使用代码的硬编码形势启动app。
    //自定义实例化
    var syncRequest = new SyncRequest(new ServerConfig()
    {
    OrgName = "",
    AppName = "",
    ClientId = "",
    ClientSecret = "",
    IsDebug = true,
    });

    以下为实际代码使用
    在SDK内容,已经将配置的节点都封装进Client,在使用的时候只要直接使用Client提供的方法即可
    如:我想在创建一个用户时的代码如下:
    //单个创建
    var user = Client.DefaultSyncRequest.UserCreate(new UserCreateReqeust()
    {
    nickname = string.Concat("Test", this._userName, "3"),
    password = "123456",
    username = string.Concat("Test", this._userName, "3"),
    });
    Assert.AreEqual(user.StatusCode, HttpStatusCode.OK);
    如:我集成了多个app时,DefaultSyncRequest默认返回第一个,而我要使用特定的某个app时,代码如下:
    //单个创建
    var user = Client.SyncRequests["app2"].UserCreate(new UserCreateReqeust()
    {
    nickname = string.Concat("Test", this._userName, "3"),
    password = "123456",
    username = string.Concat("Test", this._userName, "3"),
    });
    Assert.AreEqual(user.StatusCode, HttpStatusCode.OK);

    其中SyncRequests中的key就是你在环信的appname。
    二、目前SDK的封装进度:
    同步请求:
    【完成】用户体系集成
    【完成】聊天记录
    【完成】文件上传下载
    【完成】发送消息
    【完成】群组管理
    【完成】聊天室管理
    异步请求:
    【未开始】
    dotnet core版本:
    【计划开始同步请求】
    (备注:以上为目前的开发进度,且上面完成的功能都已经投入使用,后续将完成剩下的api封装;目前整个SDK都是使用同步请求进行,还未加入异步请求,后续也将集成进去。)
    三、版本更新历史
    *******************************************************
    version:1.2.0.36217 data:2016-10-27
    1、新增群组管理和聊天室管理API
    2、修复以往的一些BUG和性能
    3、统一内部和外部一致的版本号命名
    *******************************************************
    *******************************************************
    version:1.0.2 data:2016-08-31
    1、修复缓存和同步请求时的头不变的BUG,并增加token失效时的重试机制
    2、增加Winform和Webform的集成例子
    3、最新的NuGet包已经上传,并增加config文件的自动增加功能
    *******************************************************
    *******************************************************
    version:1.0.1  data:2016-08-22
    1.修改单元测试项目,其中测试的图片上传采用网络图片
    2.加入NAnt进行持续集成,如果要采用NAnt进行build,需要确定本机安装啦NAnt工具,且由于项目中的单元测试项目使用的是MSTest,所以要确保编译的机器上已经安装此组件;NAnt.build文件中有设置依赖组件的组件,打开编辑成所在编译机器路径即可
    ******************************************************* 
    *******************************************************
    version:1.0.0  data:2016-08-10
    初始版本发布 
    完成同步请求的“用户体系集成”,“聊天记录”,“文件上传下载”,“发送消息”
    ******************************************************* 
    四、项目相关地址
    源码:https://github.com/easonjim/Easemob.Restfull4Net
    bug提交:https://github.com/easonjim/Easemob.Restfull4Net/issues
    Release版本:https://github.com/easonjim/Easemob.Restfull4Net/releases
    NuGet:https://www.nuget.org/packages/Easemob.Restfull4Net/ 收起阅读 »

    环信刘俊彦:推动呼叫中心迈向全媒体数字化时代

       2016年8月9日,北京。客户中心行业划时代的学术作品《全媒体客户中心管理》读书沙龙今天在北京中关村互联网文化创意产业园举行。作为全国十大客户中心聚集城市系列读书交流活动的第二站,当天的沙龙活动了共有超过200位北京地区的行业同仁参与了现场分享和交流。 ...
    继续阅读 »
       2016年8月9日,北京。客户中心行业划时代的学术作品《全媒体客户中心管理》读书沙龙今天在北京中关村互联网文化创意产业园举行。作为全国十大客户中心聚集城市系列读书交流活动的第二站,当天的沙龙活动了共有超过200位北京地区的行业同仁参与了现场分享和交流。 

      客户中心(呼叫中心)行业在中国经历整整二十的高速发展。近年来,伴随着客户互动的革命,从呼叫中心演变到的客户中心,并不断扩展的客户交互平台,相关行业正经历着深刻的变革。运营日益规模化,精准化、多通路化、智能化和普适化。随着语音和文本, 多媒体渠道为一体,人工与智能服务共协同,物理与数字的通路大融合,随着以客户理念,人文为中心时代的来临,客户中心正从企业价值链的一侧走向价值传递的中央,与精艳的产品研发一起发挥着客户体验创造的核心角色。

      顺应市场的发展及对行业热点的追踪,客户世界机构联合全媒体领导厂商——环信公司推出行业学术专著《全媒体客户中心管理》,于2016年8-9月期间在全国十大客户中心聚集城市举办“好客会”读书沙龙活动,其行程将包括:北京、上海、广州、深圳、成都、南京、合肥、杭州、武汉、青岛。

    921bce8.jpg


    环信公司CEO刘俊彦莅临北京读书沙龙现场致辞,并在活动结束后接受了媒体的采访:

    记者:近期,由贵司配合完成的《全媒体客户中心管理》一书成为客户中心行业争相追捧的热门。参与这样的一个事情,贵司出于什么样的考虑?期待能达到什么样的效果?

    刘俊彦:环信作为国内全媒体智能云客服的倡领者一直致力于推动整个中国SaaS客服行业的发展,给企业用户提供最具效率和最佳体验的客服产品及服务,此次和客服行业的权威媒体《客户世界》一起配合完成《全媒体客户中心管理》一书,其中借鉴了环信包括产品技术和客户方面的最佳实践和成功案例。从前期图书主题的设定、相关技术资料的准备、中期文档图表的梳理、后期出版环节的编审和呈现,一直到各地读书沙龙的组织工作。目的也是让整个SaaS客服行业和企业用户少走弯路,加速企业客户的信息化和用户体验进程,让呼叫中心(客户中心)提速迈向智能化和数据化时代。在中国“大众创业万众创新”的国家战略背景驱动下,加速追赶甚至超过国外顶级SaaS客服企业的产品和服务,从而推动整个中国企业级服务的进程。

    记者:能介绍一下环信是一个什么样的公司?贵司对互联网智能客服领域的发展有什么样的评价和期待?

    刘俊彦:环信认为未来全媒体接入、客户声音和智能是SaaS客服行业的三大核心驱动力和技术壁垒。全媒体接入的核心难点是移动端接入,环信在移动端上有深厚的技术底蕴和客户积累,环信移动客服和环信即时通讯云共享IM核心代码,目前已经经历了8万余家企业真实用户检验,SDK覆盖手机终端5.64亿,平台日发送消息5.57亿条。同时全媒体的核心不止是接入,更是要帮助企业打造一套用户体验为王的客户服务体系。环信基于人工智能和大数据挖掘的客户旅程透析产品”环信客户声音”能够帮助企业优化运营,提高跨渠道的客服体验。随着客服行业用户体验的普遍提升,紧接着会导致咨询量暴增,此时需要智能客服机器人提高效率降低成本,环信智能机器人基于自然语言处理和机器学习技术,辅助或代替人工客服精准回答常见或高频问题,能解决80%常见问题。

    环信移动客服——全媒体智能云客服倡领者,于2016年荣膺“Gartner 2016 Cool Vendor”。支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。基于环信业界领先的IM长连接技术保证消息必达,并通过智能客服机器人技术降低人工客服工作量。同时,基于人工智能和大数据挖掘的客户旅程透析产品”环信客户声音”能够帮助企业优化运营,提高跨渠道客服体验。截至2016年上半年,环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、号码百事通等众多标杆企业。根据易观发布的《中国SaaS客服市场专题研究报告》显示,环信移动客服在SaaS移动端客服用户覆盖占比高达77.4%,稳居行业第一。

    记者:环信通过本次全国十大呼叫中心聚集城市“读书会沙龙”的方式,希望和呼叫中心业界的朋友做哪些方面的交流?有哪些预期的成果?

    刘俊彦:环信希望多了解呼叫中心业界的痛点和难点,加速环信和呼叫中心用户的战略合作,和传统呼叫中心(客户中心)一起提速迈向智能化和数据化时代。环信有一整套的针对传统呼叫中心(客户中心)的全媒体智能客服升级方案,环信希望不仅是北上广深等一线城市的企业用户能够享受到SaaS客服所带来的生产力,更希望三四线城市的企业用户也能够同样享受到环信带来的低价高质的SaaS客服。
      收起阅读 »

    测试云计算服务的十个小窍门,最后一条受益终身!

    很多企业都对云计算服务青眼有加,因为它能在简化IT基础设施工作的同时降低开销。但也还有部分企业对拥抱云计算服务有所顾忌,在转向云计算之前先进行测试可以帮助企业树立起对云计算的信心。 一般来说在企业转向云计算的过程中有两个阶段需要进行测试:1、市场上有众多的云...
    继续阅读 »


    G)XJ2T03KWCQ4WYMNLRRP`T.png


    很多企业都对云计算服务青眼有加,因为它能在简化IT基础设施工作的同时降低开销。但也还有部分企业对拥抱云计算服务有所顾忌,在转向云计算之前先进行测试可以帮助企业树立起对云计算的信心。

    一般来说在企业转向云计算的过程中有两个阶段需要进行测试:1、市场上有众多的云计算提供商,需要在其中选择一个合适的。2、提供商已经将产品或基础设施部署在了云端,需要确保其能够满足商业活动的需求。

    订立一个衡量云计算服务的基准点可以减轻企业在以上的两个阶段的测试压力。下面我们就来给出一些订立测试基准点的建议。

    1. 确定系统非功能性的需求

    对于一个软件系统,除了功能性的要求,扩展性、可用性、延续性和安全性等非功能性的要求也对系统的成功与否起到至关重要的作用。在确定系统非功能性的需求时要找到可量化的指标以便进行比较。

    2. 兼顾不同的非功能性需求

    企业内部不同的部门对非功能性需求的重要性的认识肯定会有所不同,所以需要通过讨论寻找到各个部门之间的共识。

    3. 注意法务风险

    如果企业所处的是诸如医疗或金融这类较敏感的行业,要特别注意法务方面的问题,需要确保所使用的云计算产品符合所在国家地区的法律规范。

    4. 注意重点客户群的地理位置

    如果业务是在全球范围展开的,那么还需要注意不同地区延迟的不同。有人在美国和澳大利亚对亚马逊AWS云服务进行了测试。测试结果显示美国的两个数据中心只有4.02秒延迟而美国和澳大利亚之间的延迟则达到了28.446秒,所以如果服务部署在美国那么美国用户的体验必然优于澳大利亚用户。在测试性能时要考虑不同的地理位置之间的区别。

    5. 进行弹性测试

    所谓弹性指的是资源可以根据需求迅速增加或释放,这是云计算相比于普通数据中心的主要优势之一,对企业用户来说这还意味着另一项优势那就是按需付费。说起来好像很好听,但其实云计算服务提供商所使用的数据中心也是没有弹性的,所以在扩展的过程中可能会出现问题。比如在横向扩展的过程中人工部署的文件可能在新加入的虚拟机中就丢失了,进行弹性测试可以发现一些在扩展过程中可能出现的问题。

    6. 性能测试

    应用性能主要的衡量指标是响应时间。性能测试时需要注意主要客户群所处的位置、系统目标并发用户数以及目标每秒请求数。有了这些信息就可以定义性能测试的基准点并挑选合适的工具进行测试了。

    7. 安全测试

    虽然有云计算服务提供商担着,但如果发生了数据泄露的话到头来倒霉的还是企业自身,所以进行安全测试来探测潜在的系统漏洞、加密漏洞和其他安全隐患是绝对有必要的。

    8. 服务可靠性测试

    即便是云服务也可能会有短暂的故障。服务可靠性测试的过程其实就是在回答下面这两个问题:

    某个模块出故障时应用将作何反应?

    应用是否有故障弱化功能?

    9. 灾难恢复与备份步骤测试

    仅仅有灾难恢复与备份步骤的文档是不够的,一定要进行实际的测试以保证恢复点和恢复时间的要求。

    现在各个云计算服务提供商都提供免费试用,所以在订阅云计算服务之前先体验一下再做决定也不迟。

    10. 即时通讯云服务选择环信、即时通讯云服务选择环信、即时通讯云服务选择环信。最重要的事情说三遍!

    环信即时通讯云是全球最大的即时通讯云PaaS平台。为开发者提供基于移动互联网的即时通讯能力,如单聊、群聊、发语音、发图片、发位置、实时音频、实时视频等,让开发者摆脱繁重的移动IM通讯底层开发,24小时即可让App拥有内置IM能力。截至2016年上半年,环信共服务了82149家App客户,SDK覆盖手机终端5.64亿,平台日发送消息5.57亿条。 收起阅读 »

    15个Chrome中的开发技巧

        如果你是一位开发者,相信你肯定不会对Chrome浏览器感到陌生。根据一份最新的浏览器市场占有率报告,Chrome近乎占有浏览器天下的半壁江山。如果你是一名web开发人员,我推荐你使用Chrome。作为前端开发的"IDE",你只需要搭...
    继续阅读 »
        如果你是一位开发者,相信你肯定不会对Chrome浏览器感到陌生。根据一份最新的浏览器市场占有率报告,Chrome近乎占有浏览器天下的半壁江山。如果你是一名web开发人员,我推荐你使用Chrome。作为前端开发的"IDE",你只需要搭配一个编辑器就能完成几乎所有的开发任务了。在Web开发者中,Google Chrome是使用最广泛的浏览器。六周一次的发布周期和一套强大的不断扩大开发功能,使其成为了web开发者必备的工具。本文分享15个有助于改进你的开发流程的技巧。

    一、快速切换文件

    如果你使用过sublime text,那么你可能不习惯没有Go to anything这个功能的覆盖。你会很高兴听到chrome开发者功能也有这个功能,当DevTools被打开的时候,按Ctrl+P(cmd+p on mac),就能快速搜寻和打开你项目的文件。



    1714316-3f5e3c22736f3be7.gif


    快速切换文件


    二、在源代码中搜索

    如果你希望在源代码中搜索要怎么办呢?在页面已经加载的文件中搜寻一个特定的字符串,快捷键是Ctrl + Shift + F (Cmd + Opt + F),这种搜寻方式还支持正则表达式哦



    1714316-211b51988aef8f1f.gif


    在源代码中搜索


    三、快速跳转到指定行

    在Sources标签中打开一个文件之后,在Windows和Linux中,按Ctrl + G,(or Cmd + L for Mac),然后输入行号,DevTools就会允许你跳转到文件中的任意一行。



    1714316-def471241b0cb500.gif


    快速跳转到指定行


    另外一种方式是按Ctrl + O,输入:和行数,而不用去寻找一个文件。
     
    四、在控制台选择元素

    DevTools控制台支持一些变量和函数来选择DOM元素:

    $()–document.querySelector()的简写,返回第一个和css选择器匹配的元素。例如$(‘div’)返回这个页面中第一个div元素
    $$()–document.querySelectorAll()的简写,返回一个和css选择器匹配的元素数组。
    $0-$4–依次返回五个最近你在元素面板选择过的DOM元素的历史记录,$0是最新的记录,以此类推。



    1714316-3a3ad1498b101829.gif


    在控制台选择元素


    五、使用多个插入符进行选择

    当编辑一个文件的时候,你可以按住Ctrl(cmd for mac),在你要编辑的地方点击鼠标,可以设置多个插入符,这样可以一次在多个地方编辑。



    1714316-b1b717002c08d092.gif


    使用多个插入符进行选择


    六、保存记录

    勾选在Console标签下的保存记录选项,你可以使DevTools的console继续保存记录而不会在每个页面加载之后清除记录。当你想要研究在页面还没加载完之前出现的bug时,这会是一个很方便的方法。



    1714316-6b01f5e052aa5303.gif


    保存记录


     
    七、优质打印

    Chrome’s Developer Tools有内建的美化代码,可以返回一段最小化且格式易读的代码。Pretty Print的按钮在Sources标签的左下角。



    1714316-3445643968682add.gif


    优质打印


    八、设备模式

    对于开发移动友好页面,DevTools包含了一个非常强大的模式,这个谷歌视频介绍了其主要特点,如调整屏幕大小、触摸仿真和模拟糟糕的网络连接。



    1714316-adbd0cfcc727f787.png


    设备模式



    九、设备传感仿真

    设备模式的另一个很酷的功能是模拟移动设备的传感器,例如触摸屏幕和加速计。你甚至可以恶搞你的地理位置。这个功能位于元素标签的底部,点击“show drawer”按钮,就可看见Emulation标签 --> Sensors。



    1714316-72e0730ff49f4fc6.gif


    设备传感仿真


     
    十、颜色选择器

    当在样式编辑中选择了一个颜色属性时,你可以点击颜色预览,就会弹出一个颜色选择器。当选择器开启时,如果你停留在页面,鼠标指针会变成一个放大镜,让你去选择像素精度的颜色。



    1714316-c6a331a08722a76e.gif


    颜色选择器


     
    十一、强制改变元素状态

    DevTools有一个可以模拟CSS状态的功能,例如元素的hover和focus,可以很容易的改变元素样式。在CSS编辑器中可以利用这个功能。



    1714316-30f876f5791f7cb0.gif


    强制改变元素状态


    十二、可视化的DOM阴影

    Web浏览器在构建如文本框、按钮和输入框一类元素时,其它基本元素的视图是隐藏的。不过,你可以在Settings -> General 中切换成Show user agent shadow DOM,这样就会在元素标签页中显示被隐藏的代码。甚至还能单独设计他们的样式,这给你了很大的控制权。



    1714316-4540379689508bf9.gif


    可视化的DOM阴影


     
    十三、选择下一个匹配项

    当在Sources标签下编辑文件时,按下Ctrl + D (Cmd + D) ,当前选中的单词的下一个匹配也会被选中,有利于你同时对它们进行编辑。



    1714316-60021f3bb92aab5e.gif


    选择下一个匹配项


     
    十四、改变颜色格式

    在颜色预览功能使用快捷键Shift + Click,可以在rgba、hsl和hexadecimal来回切换颜色的格式。



    1714316-7a17a919f4e01687.gif


    改变颜色格式


     
    十五、通过workspaces来编辑本地 文件

    Workspaces是Chrome DevTools的一个强大功能,这使DevTools变成了一个真正的IDE。Workspaces会将Sources选项卡中的文件和本地项目中的文件进行匹配,所以你可以直接编辑和保存,而不必复制/粘贴外部改变的文件到编辑器。

    为了配置Workspaces,只需打开Sources选项,然后右击左边面板的任何一个地方,选择Add Folder To Worskpace,或者只是把你的整个工程文件夹拖放入Developer Tool。现在,无论在哪一个文件夹,被选中的文件夹,包括其子目录和所有文件都可以被编辑。为了让Workspaces更高效,你可以将页面中用到的文件映射到相应的文件夹,允许在线编辑和简单的保存。 收起阅读 »

    PHP异常的捕获及处理

    PHP
    系统自带异常处理 <?php header("Content-type:text/html;charset=utf-8"); try { //业务处理 错误时抛出异常。 $age = 130; if ($age...
    继续阅读 »
    系统自带异常处理
    <?php
    header("Content-type:text/html;charset=utf-8");
    try
    {
    //业务处理 错误时抛出异常。
    $age = 130;
    if ($age > 120) {
    throw new Exception('年龄不能大于120岁。', 1001);
    }
    } catch (Exception $e) {
    $err = [
    'code' => $e->getCode(),
    'msg' => $e->getMessage(),
    'file' => $e->getFile(),
    'line' => $e->getLine()
    ];
    echo json_encode($err);
    }

    输出:{"code":1001,"msg":"\u5e74\u9f84\u4e0d\u80fd\u5927\u4e8e120\u5c81\u3002","file":"\/data\/mi\/demo.php","line":11}
    自定义异常处理
    <?php
    header("Content-type:text/html;charset=utf-8");
    class proException extends Exception
    {
    //根据业务需求,自定义方法
    /**
    * 获取错误信息
    * @param int $type 类型 1=json 2=数组
    * @return array
    */
    public function getErrorInfo($type = 2)
    {
    $err = [
    'code' => $this->getCode(),
    'msg' => $this->getMessage(),
    'file' => $this->getFile(),
    'line' => $this->getLine()
    ];
    if ($type == 1) {
    return json_encode($err);
    }
    return $err;
    }
    }

    try
    {
    //业务处理 错误时抛出异常。
    $age = 130;
    if ($age > 120) {
    throw new proException('年龄不能大于120岁。', 1001);
    }
    } catch (proException $e) {
    $info = $e->getErrorInfo();
    var_dump($info);
    }

    输出:array(4) { ["code"]=> int(1001) ["msg"]=> string(27) "年龄不能大于120岁。" ["file"]=> string(17) "/data/mi/demo.php" ["line"]=> int(53) }
    捕捉多个异常​
    <?php
    header("Content-type:text/html;charset=utf-8");
    class proException extends Exception
    {
    //根据业务需求,自定义错误方法

    /**
    * 获取错误信息
    * @param int $type 类型 1=json 2=数组
    * @return array
    */
    public function getErrorInfo($type = 2)
    {
    $err = [
    'code' => $this->getCode(),
    'msg' => $this->getMessage(),
    'file' => $this->getFile(),
    'line' => $this->getLine()
    ];
    if ($type == 1) {
    return json_encode($err);
    }
    return $err;
    }
    }

    try
    {
    if ($_GET['age'] > 100) {
    throw new proException('自定义的异常处理', 1002);
    } else {
    throw new Exception('系统的异常处理', 1002);
    }
    } catch (proException $e) {
    $info = $e->getErrorInfo();
    var_dump($info);
    } catch (Exception $e) {
    echo $e->getMessage();
    }

    ?age=110 输出:array(4) { ["code"]=> int(1002) ["msg"]=> string(24) "自定义的异常处理" ["file"]=> string(17) "/data/mi/demo.php" ["line"]=> int(64) }
    ?age=20 输出:系统的异常处理。
    日志记录
    //禁止错误输出
    error_reporting(0);
    //设置错误处理器
    set_error_handler('errorHandler');
    //在脚本结束时运行的函数
    register_shutdown_function('fatalErrorHandler');

    /**
    * 错误处理
    * @param int $err_no 错误代码
    * @param string $err_msg 错误信息
    * @param string $err_file 错误文件
    * @param int $err_line 错误行号
    * @return string
    */
    function errorHandler($err_no = 0, $err_msg = '', $err_file = '', $err_line = 0)
    {
    $log = [
    '['.date('Y-m-d h-i-s').']',
    '|',
    $err_no,
    '|',
    $err_msg,
    '|',
    $err_file,
    '|',
    $err_line
    ];
    $log_path = '/data/mi/test.txt';
    error_log(implode(' ',$log)."\r\n",3, $log_path);
    //echo implode(' ',$log)."<br>";
    }

    /**
    * 捕捉致命错误
    * @return string
    */
    function fatalErrorHandler() {
    $e = error_get_last();
    switch ($e['type']) {
    case 1:
    errorHandler($e['type'], $e['message'], $e['file'], $e['line']);
    break;
    }
    }

    class DemoClass_1
    {
    public function index()
    {
    //这里发生一个警告错误,出发errorHandler
    echo $undefinedVarible;
    }
    }

    $demo_1 = new DemoClass_1();
    //这里发生一个警告错误,被errorHandler 捕获
    $demo_1->index();
    //发生致命错误,脚本停止运行触发 fatalErrorHandler
    $demo_2 = new DemoClass_2();
    $demo_2->index();

    打开echo后 输出:
    [2016-08-07 09-01-34] | 8 | Undefined variable: undefinedVarible | /data/mi/demo.php | 126
    [2016-08-07 09-01-34] | 1 | Class 'DemoClass_2' not found | /data/mi/demo.php | 134
    备注:
    • register_shutdown_function 也可以用于API调试中,记录每次请求值和返回值,方便调试。
    • 利用 “|” 分割的好处是,便于利用 awk 对日志进行分割处理。

     
    Thanks ~ 收起阅读 »

    环信移动客服v4.12产品更新--新增按对应渠道开启机器人,新增智能质检

    【新增】1.按对应渠道开启机器人 新增按对应渠道开启机器人的功能,让机器人客服的服务更精准。 前往“管理员模式 > 智能机器人 > 机器人设置”页面,对渠道进行设置。  【新增】 2.工作量报表新增接起、呼入、回呼会话数 2.1 接起会话数 ...
    继续阅读 »

    46958456.png



    【新增】1.按对应渠道开启机器人


    新增按对应渠道开启机器人的功能,让机器人客服的服务更精准。
    前往“管理员模式 > 智能机器人 > 机器人设置”页面,对渠道进行设置。


     【新增】 2.工作量报表新增接起、呼入、回呼会话数


    2.1 接起会话数 
    2.2 呼入、回呼会话数 


     【新增】3.工作量报表支持按会话类型筛选


    工作量报表支持按会话类型筛选,可以根据全部、呼入、呼出会话进行报表查询。


     【优化】4.工作量和排队统计报表重构


    工作量报表的“24小时进线量(均值)”移入排队统计报表中,位于“24小时排队统计”之前,便于管理员了解会话量和消息量在24小时时段内的分布、以及同样时段内的排队情况,合理安排客服人员。


     【新增】5.工作量、工作质量、访客统计、排队统计报表支持“全部导出”


    支持对工作量、工作质量、访客统计、排队统计报表的全部数据进行导出,便于数据整理和分析。


     【新增】6.智能质检(旗舰版客户专享)


    质量检查页面新增“智能质检”功能,开启该功能后,系统会自动检查访客和客服的历史消息,如果发现异常,则在“智能质检”一列提示“有问题”,并在质检详情页提示问题原因。

    有了智能质检的辅助,质检员可以扩大筛选范围,覆盖更多会话,提高质检效率,获得更准确的质检结果。


     体验环信移动客服http://kefu.easemob.com/
     查看历史版本请点击版本历史
     

    环信移动客服v4.12_产品更新说明/产品功能列表/产品使用指南  请点击下载↓↓↓ 
     
      收起阅读 »

    五“环”奥运,“信”运中国,为中国奥运健儿喝彩!

    四年磨一剑,试锋在里约!四年前辉煌依稀如昨,他们已在为新的荣誉而拼搏;成名已久的老将期待延续辉煌,初生牛犊的新秀同样雄心勃勃!这个夏天,谁将成就英雄传说?此刻,让我们为中国奥运健儿喝彩,点赞!加油!  
    四年磨一剑,试锋在里约!四年前辉煌依稀如昨,他们已在为新的荣誉而拼搏;成名已久的老将期待延续辉煌,初生牛犊的新秀同样雄心勃勃!这个夏天,谁将成就英雄传说?此刻,让我们为中国奥运健儿喝彩,点赞!加油!

    41期_社区活动.jpg


     

    Android studio汉化教程

    第一步 下载Android studio汉化包【文章末尾】 第二步 找到你Android studio的安装目录,并打开lib文件夹,把resources_en这个文件复制到另一个位置用来改装,这里我复制到了桌面。 第三步 将文件resources_en重...
    继续阅读 »

    1240.jpg


    第一步
    下载Android studio汉化包【文章末尾】

    第二步
    找到你Android studio的安装目录,并打开lib文件夹,把resources_en这个文件复制到另一个位置用来改装,这里我复制到了桌面。

    第三步
    将文件resources_en重命名为resources_cn

    第四步
    将下载好的Android studio汉化包里的所有文件全部复制

    BLJU9ROGUWO_V4SLO3`IXY9.png


     第五步
    将复制好的文件全部粘贴到resources_cn下的messages文件夹中,然后再把resources_cn文件放回到Android studio目录下lib文件中完成汉化。

    最后
    打开Android studio就是中文界面啦!

    T}M{S4VA{~(MQCPW(9@HD.png



    喜欢的话别忘了赞赏一波!作者it青年
     
    Android studio汉化包↓↓↓
      收起阅读 »

    环信移动客服与方案家强强联合 缔结战略伙伴关系

      2016年8月初,环信移动客服&方案家强强联合会暨互联网+战略合作签约仪式在上海普陀李子园大厦隆重举行。方案家CEO熊志宪、方案家COO葛冬冬、环信方代表赵总以及多名方案家服务商代表与会。会议中,环信移动客服与方案家正式达成战略合作伙伴关系,方案家...
    继续阅读 »
      2016年8月初,环信移动客服&方案家强强联合会暨互联网+战略合作签约仪式在上海普陀李子园大厦隆重举行。方案家CEO熊志宪、方案家COO葛冬冬、环信方代表赵总以及多名方案家服务商代表与会。会议中,环信移动客服与方案家正式达成战略合作伙伴关系,方案家成为环信移动客服在上海、江西总代。


    XBIGRW)2[A8AP{IX5~HAA@A.png


    (图:环信移动客服&方案家达成战略合作)
      据相关数据了解,中国移动端客服软件市场基本空白。传统客服软件巨头转型缓慢,并且移动客服所需要的可靠IM技术获取门槛较高。而环信移动客服软件的出现很好的弥补了移动端客服软件市场的空缺。同时,环信移动客服不仅可以整合多渠道的服务平台,还通过与包括传统CallCentre的合作和微博、微信、App、邮件等渠道的整合,最终把用户反馈汇集到同一个界面内,方便客服人员操作。正基于此,方案家平台充分考虑到目前互联网行业服务商开发客户成本高,获客难度大,无法精准抓取目标客户(PC端/移动端),为解决服务商问题,方案家与环信移动客服展开深度合作,双方充分发挥各自资源优势,协同合作提升联合体核心竞争力,优势互补建立“合作共赢”战略。




    ba60003559898be1f9c.jpg


    (图:环信授权书展示)
       据方案家CEO熊志宪透露,“2015年以来,互联网+发展异常迅猛,市场容量年年攀升,人们的消费理念也在逐步提升,这给互联网+行业带来了无限的市场机遇。截止目前,方案家平台已拥有千家服务商的活跃群体,形成了方案家独有的B2B大数据体系。方案家作为一站式网络服务平台,提供免费的互联网策划,监理,担保,金融,移动互联网及大数据分析等服务,帮助企业和互联网服务商最优选型配对,打造互联网+服务满意度100%的平台。” 随着本次签约仪式的圆满结束,我们坚信,通过环信移动客服与方案家的深度战略合作,必将推动行业更加深度的发展,为互联网+做出巨大贡献! 收起阅读 »

    环信联合客户世界推国内首本全媒体客服学术著作,客服行业迈向全媒体时代!

    ——《全媒体客户中心管理》读书沙龙在全国十大城市陆续举办    呼叫中心(客户中心)行业在中国近二十年来发展迅猛。在中国的发展路径是遵循呼叫、接触、互动 (call center -> contact center -> interaction ...
    继续阅读 »
    ——《全媒体客户中心管理》读书沙龙在全国十大城市陆续举办

       呼叫中心(客户中心)行业在中国近二十年来发展迅猛。在中国的发展路径是遵循呼叫、接触、互动 (call center -> contact center -> interaction center)的过程。而新时代的客户互动又注入了客户契合互动(engagement)的内涵,客户中心正在发生深刻的变革。随着国内以环信为典型代表的一批新一代全媒体智能SaaS客服企业的蓬勃发展,全媒体客服已经逐渐成为客服行业的标配。



    20160802083850_46603.jpg


    国内第一本“全媒体”客服学术著作《全媒体客户中心管理》


      8月3日,国内第一本“全媒体”客服学术著作《全媒体客户中心管理》读书沙龙将在包括北上广深等全国十大城市陆续举办。环信作为国内全媒体智能SaaS客服的倡领者一直致力于推动整个中国SaaS客服行业的发展,给企业提供最具效率和最佳用户体验的客服产品及服务。此次和客服行业权威媒体《客户世界》以及行业专家一起联合推出《全媒体客户中心管理》一书,环信提供了在全媒体客服领域包括产品技术和客户运营方面大量的最佳实践及成功案例。同时,环信参与了从前期图书主题的设定、相关最佳实践和成功案例的准备、中期文档图表的梳理、后期出版环节的编审和呈现,一直到各地读书沙龙的组织工作,目的也是推动整个SaaS客服行业和企业用户少走弯路,加速企业用户的信息化和用户体验进程,让呼叫中心(客户中心)提速迈向智能化和数据化时代。

      环信CEO刘俊彦表示:“环信有一整套的针对传统呼叫中心(客户中心)的全媒体智能客服升级方案,让传统呼叫中心在保留已有投资的同时,无缝升级到全媒体智能客服中心,全面拥抱移动互联网。”环信同时希望不仅是北上广深等一线城市的企业用户能够享受到SaaS智能客服所带来的生产力,更希望此次活动借助《客户世界》的影响力能够辐射至三四线城市,让那里的企业用户也能够同样享受到以环信为代表的一批中国最优秀SaaS厂商提供的服务。”

      呼叫中心(客户中心)经过多年的发展,单一的语音服务渠道进化成为多介质的复合服务渠道体,并最终将发展为整合传播服务、营销、销售和产品传为一体的互动中心的机制架构。作为企业数字化服务,电子商务中信息流和体验流的接入平台和整合载体,客户中心正在发生深刻的变革,展现出日益多元的价值。而随着全新的人机智能时代的到来, 深度学习,认知计算,服务机器人,增强现实空间又在深刻地改变客户交互的方式,能力与体验, 以致冲击客户中心现有的运营方式, 人力资源体系,和绩效指标等管理手段。 我们再一次目睹时代的风云正在奔来,我们有幸处在大变革时代的当口。

      移动互联网,客户体验革命, 新渠道/轻渠道/微渠道, 大数据,人工智能,认知计算,各种变化正在深刻改变着客户交互与服务领域的形态与内涵。伴随着客户互动的革命,从呼叫中心演变到的客户中心,并不断扩展的客户交互平台,本行业正经历着深刻的变革。运营日益规模化,精准化、多通路化、智能化和普适化。随着语音和文本, 多媒体渠道为一体,人工与智能服务共协同,物理与数字的通路大融合,随着以客户理念,人文为中心时代的来临,客户中心正从企业价值链的一侧走向价值传递的中央,与精艳的产品研发一起发挥着客户体验创造的核心角色。

      作为国内成立最早、影响最大的客户管理人俱乐部,“好客会”的创始成员包括客户世界研究院顾问专家、CC-CMM标准指导委员会委员、《客户世界》杂志编委等,现有企业高管及专家会员+500名,通过举办年会、行业/主题论坛及读书沙龙、编辑聚餐、禅修、户外健身运动等方式推动会员交流。已举办各类线下会员活动超过两百场。12年以来已累计与超过100万人次的会员进行研讨交流。

      顺应市场的发展及对行业热点的追踪,2016年“好客会”系列读书沙龙的主题确定为:全媒体客户中心管理。8-9月期间,其行程将包括国内十大客户中心聚集城市:北京、上海、广州、深圳、成都、南京、合肥、杭州、武汉、青岛。《全媒体客户中心》管理一书从一面市就得到了业界广泛的关注和追捧,全面提速了呼叫中心(客户中心)迈向智能化和数据化时代。 

    关于好客会:

      “好客会”系列活动自2004年起常年在全国各主要城市巡回举办,秉持其“远离商业广告的思想碰撞”的互动宗旨,自创立起即以其纯学术、高规范、行程广、参与众等特点在中国客户关怀及管理领域掀起了一股思想创新和实践变革的风潮。邀请业界领先的思想和实践领袖,汇集企业实践一线的同仁,采撷市场最新案例成果,引发本领域的思想碰撞。

    关于环信:

      环信——全媒体智能云客服的倡领者,于2016年荣膺“Gartner 2016 Cool Vendor”。环信支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。基于环信业界领先的IM长连接技术保证消息必达,并通过智能客服机器人技术降低人工客服工作量。同时,基于人工智能和大数据挖掘的客户旅程透析产品”环信客户声音”能够帮助企业优化运营,提高跨渠道客服体验。
     
     截至2016年上半年,环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、号码百事通等众多标杆企业。根据易观发布的《中国SaaS客服市场专题研究报告》显示,环信移动客服在SaaS移动端客服用户覆盖占比高达77.4%,稳居行业第一。
      收起阅读 »

    基于环信SDK 开发的iOS 通讯项目-附项目源码,喜欢就请star一下!

    一:效果图 支持语音,图片以及emoji 和文字.在这就是未读消息显示以及自动登录.再者就是从数据库中消息的读取.最后就是一个添加好友以及好友的一个展示列表;先来几张效果图吧: 大概效果图.png 信息的读取.png 附上 git...
    继续阅读 »
    一:效果图

    支持语音,图片以及emoji 和文字.在这就是未读消息显示以及自动登录.再者就是从数据库中消息的读取.最后就是一个添加好友以及好友的一个展示列表;先来几张效果图吧:



    1867963-aa9b837073452817.png


    大概效果图.png




    1867963-320f39af6728b6c6.png


    信息的读取.png


    附上 github 地址:https://github.com/OneWang/IM-WeiChat
    如果能够帮到您就 star 关注一下了,不胜感激(⊙o⊙)哦!;
     

    二:集成

    具体的集成流程环信官网上的开发文档我想步骤已经写得很详细了,如果还有不明白的可以私信我,具体可以查看官方文档;地址:http://docs.easemob.com

    再者就是 appkey 的申请了;到环信的开发者中心去注册一下 账户,这是免费的哦!然后创建自己的应用获取相应的应用标识(AppKey);在后面开发的时候会用到的,没有的话是没法进行开发的;

    三:开发流程
    1.初始化 SDK:


    第 1 步:引入相关头文件 #import “EMSDK.h”。
    第 2 步:在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法。
     //registerSDKWithAppKey:注册的appKey,开发者注册及管理后台。
    //apnsCertName:推送证书名(不需要加后缀),制作与上传推送证书。
    // [[EaseMob sharedInstance] registerSDKWithAppKey:@"437512311#chat-wang" apnsCertName:nil];

    //1.初始化SDK,并隐藏环信SDK的日志输出
    [[EaseMob sharedInstance] registerSDKWithAppKey:@"437512311#chat-wang" apnsCertName:nil otherConfig:@{kSDKConfigEnableConsoleLogger : @(NO)}];
    [[EaseMob sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];

    //app进入后台
    - (void)applicationDidEnterBackground:(UIApplication *)application {
    [[EaseMob sharedInstance] applicationDidEnterBackground:application];
    }

    //app将要从后台返回
    - (void)applicationWillEnterForeground:(UIApplication *)application {
    [[EaseMob sharedInstance] applicationWillEnterForeground:application];
    }
    - (void)dealloc
    {
    [[EaseMob sharedInstance].chatManager removeDelegate:self];
    }
    2.注册:

    注册模式分两种,开放注册和授权注册。
    • 只有开放注册时,才可以客户端注册。开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号。
    • 授权注册的流程应该是您服务器通过环信提供的 REST API 注册,之后保存到您的服务器或返回给客户端。
    //注册    [[EaseMob sharedInstance].chatManager asyncRegisterNewAccount:username password:password withCompletion:^(NSString *username, NSString *password, EMError *error) {        if (!error) {            [MBProgressHUD showSuccess:@"注册成功"];        }else{            [MBProgressHUD showError:@"注册失败"];            NSLog(@"注册失败:%@",error);        }    } onQueue:dispatch_get_main_queue()];
    3.登录以及自动登录
    • 自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。
    • SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。
     
    //让环信的SDK在第一次登录之后,自动从服务器获取好友列表,添加到本地数据库中(Buddy表)    [[EaseMob sharedInstance].chatManager setIsAutoFetchBuddyList:YES];    NSString * username = self.userNameField.text;    NSString * password = self.passWordField.text;    if (username.length == 0 || password.length == 0) {        [MBProgressHUD showError:@"账号或密码不能为空"];        return;    } //登录    [[EaseMob sharedInstance].chatManager asyncLoginWithUsername:username password:password completion:^(NSDictionary *loginInfo, EMError *error) {        //登录请求之后的block的回调        if (!error) {            /* 登录信息格式             LastLoginTime = 1462246275413;             jid = "437512311#chat-wang_wang@easemob.com";             password = 123456;             resource = mobile;             token = "YWMtOqAglhDfEeaq3zM2X-U7XgAAAVWpp1G2iB3Bmbp4pSTCxFiBv2EgsfS4xUc";             username = wang;             */            [MBProgressHUD showSuccess:@"登录成功"];            NSLog(@"用户信息:%@",loginInfo);           //设置自动登录            [[EaseMob sharedInstance].chatManager setIsAutoLoginEnabled:YES];            //来主界面            self.view.window.rootViewController = [UIStoryboard storyboardWithName:@"Main" bundle:nil].instantiateInitialViewController; }else{            [MBProgressHUD showError:@"登录失败"];            NSLog(@"登录错误信息:%@",error);            //User do not exist            /** 每一个应用都有自己的注册用户 */        }    } onQueue:dispatch_get_main_queue()];
    自动登录在以下几种情况下会被取消:
    • 用户调用了 SDK 的登出动作;
    • 用户在别的设备上更改了密码,导致此设备上自动登录失败;
    • 用户的账号被从服务器端删除;
    • 用户从另一个设备登录,把当前设备上登录的用户踢出。
    所以,在您调用登录方法前,应该先判断是否设置了自动登录,如果设置了,则不需要您再调用。通过代理监听自动登录状态:
         //2.监听自动登录的状态    //设置chatManager代理    [[EaseMob sharedInstance].chatManager addDelegate:self delegateQueue:dispatch_get_main_queue()];    //3.如果登录过,直接来到主界面    if ([[EaseMob sharedInstance].chatManager isAutoLoginEnabled]) {        self.window.rootViewController = [UIStoryboard storyboardWithName:@"Main" bundle:nil].instantiateInitialViewController;    }
    SDK 中,如果发生自动登录,会有以下回调:
    #pragma mark 自动登录的回调- (void)didAutoLoginWithInfo:(NSDictionary *)loginInfo error:(EMError *)error{    if (!error) {        [MBProgressHUD showSuccess:@"自动登录成功"];        NSLog(@"自动登录成功 %@",loginInfo);    }else{        [MBProgressHUD showError:@"自动登录失败"];        NSLog(@"自动登录失败 %@",error);    }}
    4.退出登录退出登录分两种类型:主动退出登录和被动退出登录。
    • 主动退出登录:调用 SDK 的退出接口;
    • 被动退出登录:1. 正在登录的账号在另一台设备上登录;2. 正在登录的账号被从服务器端删除。
    • logout:YES:是否解除 device token 的绑定,在被动退出时 SDK 内部处理,不需要调用退出方法。

     
    //isUnbind 是否推送
    [[EaseMob sharedInstance].chatManager asyncLogoffWithUnbindDeviceToken:YES completion:^(NSDictionary *info, EMError *error) {
    if (error) {
    NSLog(@"退出失败 %@",error);
    }else{
    NSLog(@"退出成功");
    //回到登录界面
    self.view.window.rootViewController = [UIStoryboard storyboardWithName:@"Login" bundle:nil].instantiateInitialViewController;
    }
    } onQueue:nil];
    使用回调方法监听被动退出登录。
    /*!
    @method
    @brief 用户注销后的回调
    @discussion
    @param error 错误信息
    @result
    */
    - (void)didLogoffWithError:(EMError *)error;

    /*!
    @method
    @brief 当前登录账号在其它设备登录时的通知回调
    @discussion
    @result
    */
    - (void)didLoginFromOtherDevice;

    /*!
    @method
    @brief 当前登录账号已经被从服务器端删除
    @discussion
    @result
    */
    - (void)didRemovedFromServer;
    五:构建消息并发送消息对象
    - (void)sendMesssage:(id<IEMMessageBody>)body{

    //2.构造消息对象
    EMMessage *msgObj = [[EMMessage alloc] initWithReceiver:self.buddy.username bodies:@[body]];
    //消息类型为单聊模式
    msgObj.messageType = eMessageTypeChat;

    //3.发送消息
    [[EaseMob sharedInstance].chatManager asyncSendMessage:msgObj progress:nil prepare:^(EMMessage *message, EMError *error) {
    NSLog(@"准备发送");
    } onQueue:nil completion:^(EMMessage *message, EMError *error) {
    NSLog(@"发送成功");
    } onQueue:nil];

    //把消息添加到数据源数组,然后刷新表格
    [self addDataArrayWithMessage:msgObj];
    [self.tableView reloadData];

    //把消息滚动显示在最上面
    [self scrollToBottom];
    }
    初始化一个会话对象
    EMConversation *conversation = [[EaseMob sharedInstance].chatManager conversationForChatter:self.buddy.username conversationType:eConversationTypeChat];
    六:获取好友列表
    //从服务器获取好友列表
    [[EaseMob sharedInstance].chatManager asyncFetchBuddyListWithCompletion:^(NSArray *buddyList, EMError *error) {
    //赋值给数据源
    self.buddyList = buddyList;
    //刷新
    [self.tableView reloadData];
    } onQueue:nil];
    // 获取好友列表的数据
    /* 注意
    1.好友列表buddyList需要在自动登录之后才有值
    2.buddyList数据是从本地数据库获取的
    3.要想从服务器获取好友数据调用这个方法- (void *)asyncFetchBuddyListWithCompletion:(void (^)(NSArray *buddyList, EMError *error))completion
    onQueue:(dispatch_queue_t)queue;
    4.如果当前有添加好友请求,环信的SDK内部会往数据库的buddy表添加好友记录
    5.如果程序删除或者用户第一次登录,buddyList表是没有记录的;
    解决方案:
    1.要从服务器获取好友列表记录
    2.用户第一次登录后,自动从服务器获取还有列表
    */

    //删除好友
    [[EaseMob sharedInstance].chatManager removeBuddy:username removeFromRemote:YES error:nil];

    //添加代理后好友列表更新监听
    #pragma mark 好友数据列表被更新
    - (void)didUpdateBuddyList:(NSArray *)buddyList changedBuddies:(NSArray *)changedBuddies isAdd:(BOOL)isAdd
    七:获取历史会话记录​
    //获取历史会话记录
    //1.从内存中获取历史会话记录
    NSArray *conversations = [[EaseMob sharedInstance].chatManager conversations];

    //2.如果内存中没有会话记录,从数据库中获取conversations
    if (conversations.count == 0) {
    conversations = [[EaseMob sharedInstance].chatManager loadAllConversationsFromDatabaseWithAppend2Chat:YES];
    }
    self.conversations = conversations;
    显示未读消息数目:
    //遍历所有的会话记录,将未读消息数进行类加
    NSInteger totalUnreadCount = 0;
    for (EMConversation *conversation in self.conversations) {
    totalUnreadCount += conversation.unreadMessagesCount;
    }
    if (totalUnreadCount > 0) {
    self.navigationController.tabBarItem.badgeValue = [NSString stringWithFormat:@"%ld",totalUnreadCount];
    }else{
    self.navigationController.tabBarItem.badgeValue = nil;
    }
    总结:


    [EaseMob sharedInstance].chatManager ; //这是会话管理者,获取该对象后, 可以做登录、聊天、加好友等操作;
    [EaseMob sharedInstance].callManager ;//这是即时通讯(语音聊天和视频聊天)的管理者.
    在开发过程中主要是这两个个对象在掌控所有会话消息等;


    作者:环信热心用户西风颂 收起阅读 »

    环信移动客服v4.11产品更新--当前会话支持筛选,让管理更高效

    1 Web客服工作台 1.1 当前会话支持筛选      1.2 支持客服昵称的模糊搜索      1.3 Iframe标题支持自定义      1.4 【优化】质检详情页面优化     1.5 【优化】排队时间包括转接时的等待时间  ...
    继续阅读 »

    WebIM.jpg


    1 Web客服工作台


    1.1 当前会话支持筛选  
      
    1.2 支持客服昵称的模糊搜索   
     
    1.3 Iframe标题支持自定义 
       
    1.4 【优化】质检详情页面优化    

    1.5 【优化】排队时间包括转接时的等待时间    

    1.6 【优化】支持排序的表格标题行增加更显眼的标志    


    2 Web插件    


    2.1 新增参数,可隐藏转接中、正在排队等提示    

    2.2 H5支持微信公众号信息并发送至客服端    


    3 商城Demo    


    3.1 商城Demo增加留言功能    

    第1步:设置留言接收方    
    第2步:发起留言    
    第3步:查看全部留言    
    第4步:查看留言详情    
    第5步:对留言进行评论    


     体验环信移动客服http://kefu.easemob.com/ 
     
    环信移动客服v4.11_产品更新说明/产品功能列表/产品使用指南  请点击下载↓↓↓
      收起阅读 »

    iOS 圆形图

    片段代码如下,全部代码请到文章末尾下载demo源码- (PieChartData *)setData{ double mult = 100; int count = 5;//饼状图总共有几块组成 //每个区...
    继续阅读 »
    片段代码如下,全部代码请到文章末尾下载demo源码
    - (PieChartData *)setData{



    double mult = 100;

    int count = 5;//饼状图总共有几块组成



    //每个区块的数据

    NSMutableArray *yVals = [[NSMutableArray alloc] init];

    for (int i = 0; i < count; i++) {

    double randomVal = arc4random_uniform(mult + 1);

    BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValue:randomVal xIndex:i];

    [yVals addObject:entry];

    }



    //每个区块的名称或描述

    NSMutableArray *xVals = [[NSMutableArray alloc] init];

    for (int i = 0; i < count; i++) {

    NSString *title = [NSString stringWithFormat:@"part%d", i+1];

    [xVals addObject:title];

    }



    //dataSet

    PieChartDataSet *dataSet = [[PieChartDataSet alloc] initWithYVals:yVals label:@""];

    dataSet.drawValuesEnabled = YES;//是否绘制显示数据

    NSMutableArray *colors = [[NSMutableArray alloc] init];

    [colors addObjectsFromArray:ChartColorTemplates.vordiplom];

    [colors addObjectsFromArray:ChartColorTemplates.joyful];

    [colors addObjectsFromArray:ChartColorTemplates.colorful];

    [colors addObjectsFromArray:ChartColorTemplates.liberty];

    [colors addObjectsFromArray:ChartColorTemplates.pastel];

    [colors addObject:[UIColor colorWithRed:51/255.f green:181/255.f blue:229/255.f alpha:1.f]];

    dataSet.colors = colors;//区块颜色

    dataSet.sliceSpace = 3;//相邻区块之间的间距

    dataSet.selectionShift = 8;//选中区块时, 放大的半径

    dataSet.xValuePosition = PieChartValuePositionInsideSlice;//名称位置

    dataSet.yValuePosition = PieChartValuePositionOutsideSlice;//数据位置

    //数据与区块之间的用于指示的折线样式

    dataSet.valueLinePart1OffsetPercentage = 0.85;//折线中第一段起始位置相对于区块的偏移量, 数值越大, 折线距离区块越远

    dataSet.valueLinePart1Length = 0.5;//折线中第一段长度占比

    dataSet.valueLinePart2Length = 0.4;//折线中第二段长度最大占比

    dataSet.valueLineWidth = 1;//折线的粗细

    dataSet.valueLineColor = [UIColor brownColor];//折线颜色



    //data

    PieChartData *data = [[PieChartData alloc] initWithXVals:xVals dataSet:dataSet];

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

    formatter.numberStyle = NSNumberFormatterPercentStyle;

    formatter.maximumFractionDigits = 0;//小数位数

    formatter.multiplier = @1.f;

    [data setValueFormatter:formatter];//设置显示数据格式

    [data setValueTextColor:[UIColor brownColor]];

    [data setValueFont:[UIFont systemFontOfSize:10]];



    return data;

    }
    收起阅读 »

    tableview 的圆角样式实现demo

    if ([cell respondsToSelector:@selector(tintColor)]) { if (tableView==self.tableView) { CGFloat cornerRadius = 1...
    继续阅读 »
     if ([cell respondsToSelector:@selector(tintColor)]) {

    if (tableView==self.tableView) {

    CGFloat cornerRadius = 15.f;

    cell.backgroundColor = UIColor.clearColor;


    // 创建一个shapeLayer

    CAShapeLayer *layer = [[CAShapeLayer alloc] init];

    // 创建一个可变的图像Path句柄,该路径用于保存绘图信息

    CGMutablePathRef pathRef = CGPathCreateMutable();

    // 获取cell的size

    CGRect bounds = CGRectInset(cell.bounds, 0, 0);

    // 这里要判断分组列表中的第一行,每组section的第一行,每组section的中间行

    BOOL addLine = NO;

    // CGPathAddRoundedRect(pathRef, nil, bounds, cornerRadius, cornerRadius);

    if (indexPath.row == 0) {

    // 初始起点为cell的左下角坐标

    CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));

    // 起始坐标为左下角,设为p1,(CGRectGetMinX(bounds), CGRectGetMinY(bounds))为左上角的点,设为p1(x1,y1),(CGRectGetMidX(bounds), CGRectGetMinY(bounds))为顶部中点的点,设为p2(x2,y2)。然后连接p1和p2为一条直线l1,连接初始点p到p1成一条直线l,则在两条直线相交处绘制弧度为r的圆角。

    CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds), CGRectGetMidX(bounds), CGRectGetMinY(bounds), cornerRadius);

    CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);


    CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds));

    addLine = YES;

    }else if (indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {

    // 初始起点为cell的左上角坐标

    CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds));

    CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds), CGRectGetMidX(bounds), CGRectGetMaxY(bounds), cornerRadius);

    CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);



    CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds));

    } else {

    // 添加cell的rectangle信息到path中(不包括圆角)

    CGPathAddRect(pathRef, nil, bounds);

    addLine = YES;

    }

    // 把已经绘制好的可变图像路径赋值给图层,然后图层根据这图像path进行图像渲染render

    layer.path = pathRef;

    // 注意:但凡通过Quartz2D中带有creat/copy/retain方法创建出来的值都必须要释放

    CFRelease(pathRef);

    // 按照shape layer的path填充颜色,类似于渲染render

    layer.fillColor = [UIColor redColor].CGColor;



    // 添加分隔线图层

    if (addLine == YES) {

    CALayer *lineLayer = [[CALayer alloc] init];

    CGFloat lineHeight = (1.f / [UIScreen mainScreen].scale);

    lineLayer.frame = CGRectMake(CGRectGetMinX(bounds), bounds.size.height-lineHeight, bounds.size.width, lineHeight);

    // 分隔线颜色取自于原来tableview的分隔线颜色

    lineLayer.backgroundColor = tableView.separatorColor.CGColor;

    [layer addSublayer:lineLayer];

    }



    // view大小与cell一致

    UIView *roundView = [[UIView alloc] initWithFrame:bounds];

    // 添加自定义圆角后的图层到roundView中

    [roundView.layer insertSublayer:layer atIndex:0];

    roundView.backgroundColor = UIColor.clearColor;



    //cell的背景view

    //cell.selectedBackgroundView = roundView;

    cell.backgroundView = roundView;
    收起阅读 »

    环信又双叒叕获奖了

    环信移动客服凭借其在电商领域的辛勤耕耘,以及在诸如国美在线,楚楚街等电商大客户方面的绝对优势一举夺得"2016思路电商服务商新锐奖",在一年多的时间里环信移动客服已经服务了近三万家企业客户,增速行业领先且获客优势明显。
    环信移动客服凭借其在电商领域的辛勤耕耘,以及在诸如国美在线,楚楚街等电商大客户方面的绝对优势一举夺得"2016思路电商服务商新锐奖",在一年多的时间里环信移动客服已经服务了近三万家企业客户,增速行业领先且获客优势明显。

    支付系统设计-发现场景与数据的价值|8 月 6 日 @ 北京

    随着流量红利的消失殆尽,人口红利也逐渐衰退,企业由增量市场转向存量市场,流量成本和人力成本节节攀升。一个专业、完善、强韧的支付系统将为企业注入持续性的鲜活动力,并借助更高效的精细化运营能力、更果断准确的决策能力,进一步解放人力。   如何科学地搭建专业的...
    继续阅读 »

    3_[``0MW@`}C2PUE3~({KJ.png


    随着流量红利的消失殆尽,人口红利也逐渐衰退,企业由增量市场转向存量市场,流量成本和人力成本节节攀升。一个专业、完善、强韧的支付系统将为企业注入持续性的鲜活动力,并借助更高效的精细化运营能力、更果断准确的决策能力,进一步解放人力。
     

    • 如何科学地搭建专业的支付系统?

    • 如何解析多元化的移动支付场景?

    • 如何实现数据的精细化运营?

    • 如何深入挖掘用户价值?



    8 月 6 日,Ping++ 带你解构支付系统设计的固有理念,了解热门支付场景的功能实现,发现用户数据背后的潜藏价值。
    演讲嘉宾



    APHI`279_QVN`PDZ4(MATWI.png


    赵宇
    Ping++ 联合创始人
     
    个人简介
    先后在华为、上海讯联数据任职。有多年的软件产品相关工作经验,是国内最早一批的智能 POS 产品先行者,对支付产品有着深厚的行业积累。




    WHAXQM6I1VIRNSK}3]I0ICP.png


    夏苏敏
    Ping++ 大数据总监
     
    个人简介
    毕业于纽约大学理工学院,曾就职于百度大数据部门任资深产品经理,负责百度预测、百度司南、百度大数据+等多款大数据产品。




    38ANORMA1}EJ~A1_CMC@TM.png


    周颢
    环信高级产品经理
     
    演讲主题
    环信社区共服务了近十万家企业用户。如何既能更好服务好这些用户,又能调动用户间的互助和分享?原本环信社区是有一套积分系统,为何又废弃了它改用 Ping++ 实现现金赞赏? 效果又如何? 本次活动将会为大家分享。


    Ping++ 简介
    Ping++ 是聚合支付的先行者,国内首家支付聚合解决方案提供商。Ping++ 支持所有主流支付渠道,覆盖全平台全语言,具备灵活的系统配置、专业的人力支持和强大的数据分析能力,让商户能够一点式无缝接入支付、一站式轻松管理交易。
    Ping++ 已帮助超 12000 家商户解决支付问题,提供电商、O2O、教育、旅游、医疗等众多领域的定制化支付服务方案,满足红包转账、报名收费、扫码签到、打赏抽奖、海淘报关、身份认证等丰富的场景需求。
    环信简介
    环信成立于2013年4月,是一家企业级服务软件提供商,并于2016年荣膺“Gartner 2016 Cool Vendor”。产品包括国内上线最早规模最大的即时通讯云平台——环信即时通讯云,以及移动端最佳实践的全媒体智能云客服平台——环信移动客服。截至2016年上半年,环信即时通讯云共服务了82149家App客户,SDK覆盖手机终端5.64亿,平台日发送消息5.57亿条。 环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、号码百事通等众多标杆企业。
    活动时间​


    2016 年 8 月 6 日


    活动地点


    北京海淀区中关村创业大街(海淀西大街 36 号)昊海楼 5 楼


    活动流程


    13:30 - 14:00 扫码签到入场

    14:00 - 14:40 让交易,更容易—场景下的支付设计方案

    14:40 - 15:20 基于交易闭环的大数据精准营销解决方案

    15:20 - 16:30 茶歇、深度交流和自由讨论

    15:20– 15:30 茶歇交流

    15:30 – 16:10 积分已经out了,用户要的是现金赞赏 - 环信imgeek社区赞赏实践

    16:10 – 16:30 互动交流


    报名须知

    点击「活动报名」填写报名表,由于与会名额有限,本次活动为邀请制,若您有活动邀请码可凭邀请码直接报名成功。若您无邀请码也可提交报名表,报名信息经主办方审核后,会收到邮件通知结果,认真填写报名表可提高审核通过率哦。
      收起阅读 »

    环信libHyphenateSDK.a和支付宝libcrypto.a冲突问题解决办法

    项目中需要继承支付宝和环信,编译的时候没有错误,但是在运行的时候报了duplicate symbol错误,从错误提示中发现新版的环信sdk中的静态库libHyphenateSDK.a与支付宝中的静态库libcrypto.a冲突了,这两个静态库中存在相同的对象文...
    继续阅读 »
    项目中需要继承支付宝和环信,编译的时候没有错误,但是在运行的时候报了duplicate symbol错误,从错误提示中发现新版的环信sdk中的静态库libHyphenateSDK.a与支付宝中的静态库libcrypto.a冲突了,这两个静态库中存在相同的对象文件(.o文件)。

        我的解决办法是在other linker flag中添加-force_load,并在后面配上两个静态库的路径,来按需加载静态库,然后编译、运行,即可通过。

        如下图:

    20160518134347471.jpg


    作者:Winzlee 收起阅读 »

    视频,呼叫中心最后的霓裳!

    视频从诞生的那一天便与开会结缘,从此会议便成为我们认识视频的载体,这个认知几十年没有动摇过,直到移动互联网出现。互联网出现之后,我们虽然有过Skype、Gmail、FaceTime、QQ、微信这些重量级视频试水。与消费应用的直播,追剧,交互、社交的火热相比,企...
    继续阅读 »

    @9VE9OA5F`[1LK3)6@N6PKW.png


    视频从诞生的那一天便与开会结缘,从此会议便成为我们认识视频的载体,这个认知几十年没有动摇过,直到移动互联网出现。互联网出现之后,我们虽然有过Skype、Gmail、FaceTime、QQ、微信这些重量级视频试水。与消费应用的直播,追剧,交互、社交的火热相比,企业级市场的视频应用却显得异常冷静,即使是视频在呼叫中心的应用,也只是浅尝辄止,回头,依然是深院朱红。

    一、视频,呼叫中心阳光灿烂的日子

    这一天我写下了这样的文字:在呼叫中心全渠道、全媒体已经轰轰烈烈的当下,视频,却像一个置身其外的看客,并不是视频不想拥入当下的时尚,也不是,我们忧郁视频的冲击力会淹没声音和信笺曾经带给我们的美好和温暖。是因为,我们一直在期待你的风情、惊艳来重新书写呼叫中心的温度。从Adobe Flash、到Microsoft SilverLight、到html5 WebRTC,追寻视频呼叫中心的足迹,我们付出了一代人的努力,何况,这一等就是20年。

    20年,我们从电话、ACD、CTI、IVR、录音、CMS、CRM、ACS一步一步走来,完成了从电话、留言、传真、短信、邮件、微博、微信、Webchat、到第9个App的苦旅。我每次数到9,我都会侧目看一下第十把椅子,那是,我心目中留给视频的位子。因为,只有视频的到来,我们才能与声音、文本一起携手,去完成真正意义的联络中心的断代。

    二、视频,呼叫中心沟通的艺术形式

    呼叫中心是一项研究沟通的艺术。当人类第一次仰望星空,发出一种叫做语言的声音,于是,事物与思想的连接就成了人类文明的原点。从这里出发,我们的祖先开始了与万千生物渐行渐远的史诗。人类并没有止于一代一代、口耳相传的平庸,他们的伟大在于把这种共同记忆的语言,用图形的形式记录下来。

    他们的一部分成为我们今天看到的文字,于是便出现了文学、诗歌和宗教。而他们的另一部分则成为无声的影像,于是便出现了美术、绘画和雕塑。这就是声音与文字的前世今生。可惜,非常遗憾,人类没有办法把动态影像留存于世。我们可以体会到感时花溅泪,恨别鸟惊心的情景和画面,但是,我们仍然无法拼接出舞蹈、戏剧、音乐的美妙、恢宏和璀璨。

    经过千万年岁月的荡涤,声音、文字、影像终于淬炼成人类三种最基本的沟通技能,它是人类文明与进步的驱动。就象呼叫中心,集千般宠爱于一身,有了电话、留言、传真、短信、邮件、微博、微信、Webchat、App的陪伴,和在呼叫中心中自由自在的交互。这些便捷、时尚、炫目和智能的工具,因为移动他给我们以自由的空间与时间、因为碎片他给我们缝合拼接和还原的快感。但是,即使是这样的科技成就,他们仍然只能归类于声音、文字的技术造化,并没有超出人类已有的认知。只有声音与文字,我们仍然没有办法更好的感受到彼此的理解、豁然与肯定,彼此的沟通、认同和接受,彼此的表达、强化和妥协,彼此的音容、笑貌和亲和,彼此的色彩、节奏和神情。当我们需要一种气氛、一种情境、一种感觉来表达彼此的真诚与信任,影像应该是最好的媒介。

    呼叫中心的视频座席应用,正是在这样一种场景下的呼之欲出!虽然,这些聊天与面对面相比,还是那么不尽如人意,但是它能够随时随地、跨越空间,把我们的友情、亲情、爱情在这一时间释放在手机的方寸之间。当你把这种美好体验寄托到呼叫中心应用,那么这种思想的本身已经代表了,你对呼叫中心最佳服务目标的追求,和对今天视频科技发展最高成就的渴望,科技与人文的跨界有时就是这么单纯的进入我们的视线。

    传统呼叫中心与所有的工业文明一样,是电话通信技术创造了呼叫中心产业,我们甚至可以通过KPI指标感觉工业革命的气息。但是视频加入呼叫中心,则是体验和需求推动,是移动互联网的催生。视频时代的到来是传统呼叫中心的服务升级,但是他无法去改变一个时代的决定,虽然他与迭代无关,但是,视频却是呼叫中心人与人连接的终极。没有文字,我们可以用声音。听不到声音,我们可以用文字。如果我们听不到声音、也看不到文字,或许我们只要一个眼神、一个微笑,这就是影像的魅力。

    但是视频的加入却经历了漫长的技术等待,我们要的这个微笑,如果没有乔布斯的智能手机的一场革命,没有4G的快速迭代,我们所有的小布尔乔亚会变得非常遥远。如果我们等过了摩托罗拉、爱立信、诺基亚、GPRS、2G,我们等到了iPhone、我们等到了4G,我们已经一千次憧憬过见面的美好,但是你等到的这个结局不是你想要的,我们往往只能用相见不如怀念来释怀这种悲催的心情。在长达20年的呼叫中心发展历程中,技术就是这样一次,又一次的扼杀了视频,直到今天,才慢慢有巨头来演绎这个影像的传奇。

    三、视频,呼叫中心价值再次重构

    视频呼叫中心不仅仅是单纯视频向呼叫中心跨界。与会议场景相比,视频呼叫中心具有与视频会议相比的不可替代的典型性。如果视频的出现是在电话之后,如果视频的出现是在文本之前,视频或许有机会能够成为一种独立的交流方式而存在。时空的转换,我们再也回不到从前。对于视频在客服中的应用,我们已经不能够离开全渠道、全媒体的背景。视频呼叫中心必须解决视频与其它通信方式整合、视频与核心业务整合、频呼叫与全媒体、全渠道交互整合。视频呼叫中心的监控、质检、评价、伦理等除了技术的创新之外,有别于声音、文字的视频评价体系需要重建。

    几十年的发展,视频会议的功能性应用,从视频会议扩展到视频教育和视频医疗。虽然,我们理解视频会议从原生态已经发生了重大变革。虽然,我们看到视频会议已经从纯粹会议发展到协作应用、从会场会议发展到桌面会议、从少数人享受开会到多数开会、从大会为主到以小会为主、从主要内部会议到外部参与会议、从会议预约到随机发起、从需要管理到自助服务。但是,视频会议仍然没有改变做为开会的工具性的基本属性。

    传统视频会议精英的视野里很难有互联网的冲动,与CC相关的实践是银行VTM应用,PBX+ACD+Video的体系构架,把客户赶到一个固定场所完成传统视频要求的视频交流,就象20年前把大家重新赶回到长途电话局,那个接电话的小小的房子。两者比较,他们的价值观并没有改变,改变的只是,一个是20年前,一个是20年后;一个是工业化,一个是互联网化;一个质补,一个闪耀着科技的光芒。

    在互联网非托管网络条件下,视频会议的创新者试图通过会议盒子硬件,在获得高视频质量与互联网之间做出一种妥协,这便是硬件互联网+思维,他们追求高品质会议室的画面质量,又兼顾了各会议室之间没有高品质线路的遗憾,这种设计应用为需要高品质的画面如远程会诊、精细手术提供了帮助。他们从云电视盒得到的灵感,但是这种改良是机会主义,与呼叫中心要求的移动性、交互性仍然不同属一个细分。

    我们也可以看到为数不多的视频SAAS先行者,向市场兜售他们的概念和产品,我们为他们的执着而感动,也为他们可能被资本碾压而为他们感到无奈。因为视频需要大资本、大技术、大资源的支撑。需要思想、需要技术、更需要国际观。视频的SAAS一定不是廉价经济,而呼叫中心的视频应用PAAS更为贴切。如果你相信更轻、更平、更薄、更便宜那么你就离死不远了。

    视频应用的最初实践,并不是由视频大牌驱动的一场技术变革,而是一场由业务驱动的自觉。这中间应该感谢向呼叫中心转变的视频SAAS中的少数,他们的实践为呼叫中心提供了最初的雏形。以至于我们今天能够在保险勘查、鉴证、理赔;应急指挥、调度;银行开户、回访,在线教育和智能设备等等测试版应用中看到他们的身影。虽然这仅仅是视频会议技术的一个小小的细分,但是他仍然折射出类似于阿里钉钉那样巨大的商业机会和视频技术上升的空间。

    四、视频呼叫中心应用

    视频呼叫中心从视频会议中细分。但是,原生态的视频会议系统很难为视频呼叫中心直接使用,细数视频会议目前的功能清单,真正属于呼叫中心能够用的功能并不多。20年电话呼叫中心建立起来的体系化经验,和5年来全渠道在线呼叫中心的实践对于全新的视频应用充满不确定性。在视频加入到呼叫中心前,就象当年让电话成为座席,让微信成为客服,让聊天成为工作,我们甚至一无所知。期待视频从会场来到职场,无论是视频技术适应呼叫中心应用功能的改造,还是视频呼叫中心本身场景、应用、评价的设计、运营都是一个全新课题。
    • 1、让视频进入秩序和制度,完成从玩具到工具的蜕变
    当座席轻轻声点击“开始视频”,你的声音和笑容就多了一份真诚和信任。但是,现实的技术和要比我们想象的复杂百倍。我们需要通过视频会议系统,让视频学习和建立呼叫概念。我们需要从视频会议原生态的SDK中梳理出属于呼叫中心使用的精采,通过不同的维度,封装成两个方向的应用。我们需要为视频建立影像与声音通道,使得他能够透过通信层、穿过中间层。我们需要分离出业务整合所需要的元素。我们借助前者建立队列、分配、会议、转移、预告、摘机、挂机;我们需要借助后者确认访客属性、级别、诉求类别、服务历史、服务心跳。我们所做的一切是让视频进入秩序和制度,让视频真正做为流程和业务的组成,完成从玩具到工具的蜕变。
    • 2、从此与全媒体并肩同行
    彼此协同到达业务层,并不意味服务行将结束,我们需要设计任何呼叫的服务都可能碎片化,视频的结束有可能是微信的开始,而文本亦有可能与视觉同行。在今天全媒体主导呼叫中心的当下,视频的加入意味着视频与电话、留言、传真、短信、邮件、微博、微信、Webchat、App从此将并肩同行,全媒体、全渠道、全交互因为视频的加入,服务从此充满阳光、色彩和温度。
    • 3、与传统呼叫中心整合
    视频呼叫中心的客户从PC通过桌面安装插件的浏览器或者支持WebRtc的浏览器直接发起呼叫。但是,从Pad、智能手机的App直接发起呼叫应该是视频客服最主流的应用场景,因为它符合移动、随机的呼叫典型性。在实际的服务链中,单纯性视频呼叫往往发生在固定的内部业务,和一对一服务。单纯的视频会议可以根据时间、空间、数据的要求进行分发,已经建立的视频呼叫可以被转移、会议和再次分发。由客户直接发起的视频呼叫的行为大多是伴生电话、文本的非单一性呼叫。在高等级服务中视频往往会通过问答、身份、等级和权限来过滤服务级别,以合理运用服务资源。座席被授权采用视频外呼服务往往会被要求符合技术伦理的公序良俗。所以视频外呼的本质是邀请,在征得同意后建立视觉通信。这种由座席发起的邀请对象可以是视频注册用户,但大多数是非视频注册用户,邀请可以通过邮件、短信等发起。
    • 4、视频呼叫中心更多个性应用


    视频过程中可以方便的共享双方的文件,让协同丰富多彩。与业务层连接,我们可以方便的建立工单,让视频成为独立工作发起动力。一点对多点的直播是呼叫中心自媒体,可能是未来视频呼叫中心的个性化应用。它通过视频交互直播、点播、评价、文本互动,广泛用于陪训、宣传、展示、交互。

    所有的视频管理过程都会被抽象成呼叫中心营运管理的节点和量化管理,包括视频呼叫报表、视频过程的监控和录制,视频后期处理的影像与声音分离,声音部分与录音合并纳入质量体系。(本文转载自“CTI论坛”) 收起阅读 »

    (iOS)名片。或称轨迹信息的做法(消息扩展3X)

    环信iOS版的名片怎么做尼?当你真正了解了。。你就会发现其实不是很难得东西。。。我先要感谢一个人他叫无双,。。谢谢你。。我也在这里发了很多问题。。现在是时候回报了。。希望可以帮助更多的人。。谢谢。。 如上图。。这是代表扩展信息的办法。。原理更头像的是...
    继续阅读 »
    环信iOS版的名片怎么做尼?当你真正了解了。。你就会发现其实不是很难得东西。。。我先要感谢一个人他叫无双,。。谢谢你。。我也在这里发了很多问题。。现在是时候回报了。。希望可以帮助更多的人。。谢谢。。

    30883222-5266-42B6-BCE0-56D13183041A.jpg

    如上图。。这是代表扩展信息的办法。。原理更头像的是一样的。。用的是消息携带的办法。。。我在这里就是把我的一些信息用消息携带的办法发送过去。要记住发送的对象名称和安卓的要一样哈。。收到就到了展示的时候了。。展示肯定要判断的。。这是肯定的。。- (UITableViewCell *)messageViewController:(UITableView *)tableView在这个方法里面写判断。。原因为什么这个不用我说吧。。。

    6B8E00AE-10C4-44D0-9F83-7478E5F38CCC.png




    40419A8D-91EE-4F57-9545-21EFBDD067CB.png




    4B73C851-0353-4E48-B0B8-EAE456FF5F03.png


    这就是判断的代码。见人见智哇。。还有就是cell也就是你的名片的高度是多少。。也要有判断

    20064AF4-6FCE-4D08-B754-8C7827F5F7C7.png


    大概的原理就是这样的了。。。此图仅供参考。。。我已经有一些备注的了。。。大概看起来不是什么问题的了。。希望对你们有帮助。 收起阅读 »

    第三期增长沙龙 ——【增长与变现】精益数据分析驱动产品和用户增长

    当流量为王的时代慢慢走远,获取用户成本越来越高, 如何用最少的成本获取流量,真正将用户留存下来? 如何用精益化方式提升转化,把现有流量快速变现? 如何打破用户只看不买的魔咒,把流量转化为注册和购买? LinkedIn、Facebook、...
    继续阅读 »

    30日活动小图副本副本.jpg



    当流量为王的时代慢慢走远,获取用户成本越来越高,

    如何用最少的成本获取流量,真正将用户留存下来?

    如何用精益化方式提升转化,把现有流量快速变现?

    如何打破用户只看不买的魔咒,把流量转化为注册和购买?

    LinkedIn、Facebook、Twitter 等硅谷公司如何不靠流量,用数据驱动产品和用户快速增长?

    精益数据分析如何帮你找到增长的魔法数字? 

    【活动时间】

      7月30日 (周六)14:00 - 17:00

    【活动地点】

      微软加速器(北京市海淀区丹棱街5号)

    【面向人群】

      管理者、产品经理(2年以上经验)及产品总监、用户增长等

    【活动报名】

      1、本次活动为免费沙龙,点此报名

      2、主办方将对报名人员进行一定筛选,在收到报名信息后1-2个工作日电话确认,敬请体谅;

      3、电话确认后,请根据确认短信中操作指引,加入活动群,获取更多活动资料;

    【嘉宾阵容】



    Jonathan1.png



    Jonathan 吴继业

       GrowingIO 联合创始人

       前 LinkedIn 商业分析部数据产品工程,

       曾就职于LinkedIn、eBay、HP、宝信软件等,

       十五年数据驱动产品的从业经历,强大的商业分析、数据产品等专业背景,

       对精益运营、数据分析、增长黑客等不仅有深刻的认知,亦有丰富的实战经验,

       从硅谷精英到国内创业,希望与国内的创业者和产品经理一起,

       通过技术、工具等方式获取最大的用户增长、留存和转化。  


    邵凯1.png



    邵凯

        回家吃饭 战略负责人

        拥有加拿大滑铁卢大学数学系计算机专业及精算专业双学士学位,

        MIT 休学后加入回家吃饭,

        曾就职于金沙江创投,

        对中美两国早期和成长期项目有着丰富的投资经验,

        归国前,就职于加拿大宏利金融,任高级金融工程师,

        负责金融衍生品定价模型开发工作。



    黄天文1.png



    黄天文

         360你财富运营总监

         曾就职于去哪儿网市场部,奇虎360电商部、影视部,百度糯米事业部,

         在百度糯米期间负责业务包括:

         产品运营部、用户运营部、城市运营部和服务运营部,

         对旅游、电商、硬件、软件、O2O、金融有独到见解,

         现服务于360你财富,负责你财富线上运营。



    【活动流程】

      14:00 - 14:30  签到   

      14:30 - 15:10  Jonathan 吴继业 —— 《一个优秀数据产品经理的增长实践》 

      15:10 - 15:20  互动 Q&A 

      15:20 - 16:00  邵凯 ——《回家吃饭如何用数据驱动增长》 

      16:00 - 16:10  互动 Q&A

      16:10 - 16:20  茶歇(回家吃饭提供茶歇美食) 

      16:20 - 16:50  黄天文 —— 《互联网金融的用户运营》

      16:50 - 17:00  互动 Q&A 

    【主办方】


    gro.png



     GrowingIO 是基于用户行为的新一代数据分析产品,无需埋点即可采集全量、实时用户行为数据,数据分析更精细。帮助管理者、产品经理、市场运营、数据分析师、增长黑客等提升转化率、优化网站/APP,实现用户快速增长和变现。




    墨加logo副本.jpg




     Mo+ 是一个面向互联网创业者的综合知识共享与社群服务平台,是中国首家受到 CCTV-NEWS 报道的知识共享经济类科技创业公司。在 Mo+,了解一线的互联网人都在自修哪些功课,收获真正有价值的经验、人脉和产业资源。

    【协办方】
     

    home.png



     全国领先的家庭美食外送平台,作为全国最大的家庭厨房共享平台,致力于挖掘美食达人,与身边饭友共享家庭美味。

     

    tb.png



     国内领先的团队协作工具,通过帮助团队轻松共享和讨论工作中的任务、文件、分享、日程等内容,让团队协作焕发无限可能。 目前,已经有超过一百万用户通过 Teambition 进行团队协作。

     

    hx.png



     环信成立于2013年4月,是一家企业级服务软件提供商,并于2016年荣膺“Gartner 2016 Cool Vendor”。产品包括国内上线最早规模最大的即时通讯云平台——环信即时通讯云,以及移动端最佳实践的全媒体智能云客服平台——环信移动客服。截至2016年上半年,环信即时通讯云共服务了82149家App客户,SDK覆盖手机终端5.64亿,平台日发送消息5.57亿条。 环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、号码百事通等众多标杆企业。 收起阅读 »

    android---------菜鸟集成环信(头像,昵称)

    环信版本:2.X   3.X没集成   不知道操作跟2.X是不是一样。 先声明下,本人也是菜鸟,在imgeek社区各方大神的帮助下才继承好,这个社区真不错! 头像 昵称集成方式有两种:一种是通过服务器,一种是通过message的拓展。自我感觉message拓展...
    继续阅读 »
    环信版本:2.X   3.X没集成   不知道操作跟2.X是不是一样。
    先声明下,本人也是菜鸟,在imgeek社区各方大神的帮助下才继承好,这个社区真不错!
    头像 昵称集成方式有两种:一种是通过服务器,一种是通过message的拓展。自我感觉message拓展这种方式简单一些.当然,服务器那种方式我也没用.
    在使用message拓展方式的时候只要注意几个地方,集成起来就比较简单。
     
    1.消息添加拓展。我们先找到发送消息的方法 ,在2.X的android里面是EaseChatFragment这个类里面的sendmessage这个方法.sendmessage这个方法里面传的参数是一个message,我们可以对这个message肆意的setAttribute.
     
    消息发送出去以后我们需要接收。在接收的时候,我们获取到message里面的Attribute,也就是我们的昵称和头像,接下来我们再怎么做就是我们自己的事了,跟环信没任何关系了。在我的项目中用到接收到的消息的地方有两处
     
    2.在聊天界面接收消息   这个接收的地方特别不好找,我花了好久才找到,改完以后直接关了,再找的时候又找不到了。在环信的demo里面有个叫chatrow的包,这个包里面放的东西好像全是聊天时的一些东西 比如文件,图片,音频什么的,在那个包下有个Easechatrow,然后找message出现的地方,再判断这个地方是不是我们设置头像昵称的地方。
     
    3.在会话列表界面接受消息   我们在看历史消息的时候,需要在界面上展示我们的头像和昵称,这个头像和昵称也可以在拓展中获取,这个地方比较好找,在EaseConversationAdapater的getview的时候我们获取到message以后直接对头像进行操作
     
    群聊跟单聊差不多   就多一个chatType
     
    环信终于弄的差不多了,这点小小收获拿出来跟大家分享下,给大家节省点时间。
      收起阅读 »

    一路有你,感谢环信 !

    一路有你,感谢环信 !  今天无比的开心,激动,兴奋. 入这行以来,集成过无数SDK,第一次收到这么精致,清凉的小礼物 ! 相信社区的小伙都想知道是什么小礼物吧,让我们一起来揭开神秘的面纱吧 ps:大家猜猜我叫什么名字 =(*^__^*) = 感谢环信,感...
    继续阅读 »
    一路有你,感谢环信 ! 
    今天无比的开心,激动,兴奋.
    入这行以来,集成过无数SDK,第一次收到这么精致,清凉的小礼物 !
    相信社区的小伙都想知道是什么小礼物吧,让我们一起来揭开神秘的面纱吧


    ps:大家猜猜我叫什么名字 =(*^__^*) =
    感谢环信,感谢社区的小伙伴 !
    一路有你,  幸福,么么哒O(∩_∩)O


      收起阅读 »

    基于环信SDK开发,开源的高仿ios微信项目--酷信

    写在前面的话(大伙在使用过程中遇到BUG请@我一下,我会去认真迭代这款高仿APP)  项目简介:  1.此版本是有史以来Github上最牛逼的高仿微信项目没有之一,采用MVVM和MVC两种开发架构思想,纯代码开发,这是你们在培训机构学不到的.仅供大家学习使用...
    继续阅读 »
    写在前面的话
    (大伙在使用过程中遇到BUG请@我一下,我会去认真迭代这款高仿APP)

     项目简介:

    •  1.此版本是有史以来Github上最牛逼的高仿微信项目没有之一,采用MVVM和MVC两种开发架构思想,纯代码开发,这是你们在培训机构学不到的.仅供大家学习使用,不得用于商业用途.最终解释权归作者二哥所有.

    •  2.如果各位下客能帮我点STAR,半个月STAR500+,我会陆陆续续发布待实现功能,其实已经做完,一个月STAR1000+我会把微信主要功能全部实现发布出来,两个月STAR2000+我会发布纯Swift版,纯Swift版采用纯代码开发已经做的差不多了.就看大伙的手能不能点STAR了.希望大家不要下完就跑了.作为作者的二哥会很心痛的.



    • 3.我之前接触过很多项目,就有一个项目中的朋友圈整个控制器4千行,尼玛4千行了这项目怎么迭代,二哥现在300行解决了朋友圈的问题,还在优化中...



    高仿微信计划:
    测试账号:

    nacker 123456
    h18 123456

     1.采用技术点

    * pod用于第三方库的管理

    * 环信SDK(V3.1.4 2016-07-08)作为此APP DEMO的IM功能

    * Masonry用于界面布局

    * FMDB用于数据存储

    * MJRefresh用于上拉下拉刷新

    * MJExtension用于字典转模型

    * SDWebImage用于图片展示下载

    * ReactiveCocoa用作响应式编程提高代码可读性

    * MLLabel用于Label的图文混排

    * IM部分采用MVC架构,朋友圈采用MVVM架构

    2.已经实现功能

    * 微信首页(列表数据展示、cell侧滑编辑、点击进入聊天详情界面、发送文字图片和语音)

    * 通讯录(联系人字母排序、添加联系人)

    * 发现(朋友圈、下拉刷新)

    * 我(界面、退出功能)

    3.待实现功能

    * 搜索好友

    * 朋友圈细节完善

    * 扫一扫

    * 相册、钱包

    * 其他细节实现

    * 摇一摇

    * 发送朋友圈信息

    * 其他

    部分截图



    LZEasemob3.png


    整体架构图




    LZ1.gif


    聊天界面


     



    LZ2.gif


    通讯录


     



    LZ3.gif


    发现




    LZ4.gif


    登录


     
    感恩
    感谢那些开源作者们,我在这里就不一一点名感谢了.有了你们在整个项目的开发进度上提升了不少.也让我学会了很多




    关于我

    • QQ群  : 527885963  




    me.png



    期待

    * 如果在使用过程中遇到BUG,希望你能Issues我,谢谢(或者尝试下载最新的框架代码看看BUG修复没有)
    * 如果在使用过程中发现功能不够用,希望你能Issues我,我非常想为这个框架增加更多好用的功能,谢谢
    * 如果你想为LZEasemob3输出代码,请拼命Pull Requests我
     
    项目git源码地址 喜欢请star:https://github.com/nacker/LZEasemob3
      收起阅读 »

    创业大咖第一期:一起来听大牛“崔牛皮”

    环信为了回报广大的粉丝,现推出30个限时免费门票。门票原价50元。参与7.23日周六,中关村创业大街拓荒族咖啡厅2层的《创业大咖:一起来听大牛“崔牛皮”》活动。活动嘉宾有猿圈ceo,PMCAFF产品社区ceo,微链ceo,百度推广美女讲师,开源中国商务总监等。...
    继续阅读 »

    303006024090592446.jpg


    环信为了回报广大的粉丝,现推出30个限时免费门票。门票原价50元。参与7.23日周六,中关村创业大街拓荒族咖啡厅2层的《创业大咖:一起来听大牛“崔牛皮”》活动。活动嘉宾有猿圈ceo,PMCAFF产品社区ceo,微链ceo,百度推广美女讲师,开源中国商务总监等。
     
    活动当天将有丰厚的创业大礼包 :
    PMCAFF学院试听名额1年(价值3000元)
    百度推广小熊冰激凌机价值450元(3台)
    PMCAFF咖啡价值300元(3件)
    PMCAFF学院试听名额1年(价值3000元)
     
    活动时间:
    7.23日 下午1:30--6:30

    活动流程:
    1:30-2:00签到入场
    2:00-6:00嘉宾分享

    活动地点:
    中关村创业大街  拓荒族咖啡厅2层

    抢票请联系Jack
    微信:iamjacker(暗号:创业大咖第一期) 收起阅读 »

    中关村创业大街起步 环信的远方是“甲骨文”

    来源:商业新星(微信ID:biz-star)独家授权 作者:于静 咖啡馆楼下的地下图书城大门紧锁,按斤称重的招牌已消失不见,对面的鞋店、衣服店、玉器店换成了咖啡馆、孵化器、训练营,再也听不到小喇叭里传出的打折促销的信息。短短几年,这个200米长的闹中取静的...
    继续阅读 »



    _A)9UHLSP(~I8NOD~WLG`6.png


    来源:商业新星(微信ID:biz-star)独家授权

    作者:于静


    咖啡馆楼下的地下图书城大门紧锁,按斤称重的招牌已消失不见,对面的鞋店、衣服店、玉器店换成了咖啡馆、孵化器、训练营,再也听不到小喇叭里传出的打折促销的信息。短短几年,这个200米长的闹中取静的小巷子,彻底融入了周围的闹市之中,人来人往,熙熙攘攘。

    在这里,刘俊彦迈出了人生中新的一步。从入驻这里的第一家创业咖啡馆、第一家孵化器,到拿到第一笔融资,获得第一批客户,刘俊彦和他创办的环信见证了中关村创业大街的成长,也从这条大街上成长起来。
    这是他第一次接受人物类专访,他希望这篇稿件能帮他感谢妻子的付出,这也是他第一次在媒体面前谈到家人,说这些话时,他手捂在胸口,眼圈泛着红,却最终也没有讲出具体的故事和需要捎带的话。他总体上话不多,不会寒暄,只有谈业务时口落悬河。

    采访那天,他穿着短裤、短袖、凉鞋,背着双肩包,比公司其他程序员打扮得还要随意。这些特点会让接触他的人形成一种判断,他本性不是进攻型人格的人,但是采访中,他多次把创业比喻成“打仗”。不管自觉还是无意,他站在了风口浪尖,形成了这样一种感受,“如果没有被风浪拍死,就有机会引领下一个浪潮”。

    环信成立于2013年4月,三年前的创业彻底改变了刘俊彦的生活和工作方式。那时候,创业大街还叫图书城,只有车库一个咖啡馆,刘在这里工作了一年一个月,三四个人一张桌子,每天点四杯咖啡,也有时候什么都不消费。那一年只做研发,完全用自己的钱,没有反馈,看不到成果,“这个过程其实挺痛苦”。

    R193S]PY]PKFKSYN8P0`W4X.png


    在车库创业,不仅能让他接触到开发移动应用的许多潜在客户,还让他发现一个好处,大家互相激励,不管前一晚多么沮丧,第二天早上来了之后,看到周围人都在奋斗,很容易进入工作状态。他听说过,有的创业者晚上回到家里,关上灯看着天花板,眼泪哗哗流,刘也有过痛苦的时候,但没有发生这样的事情,“我是工科出身,想的比较少”。

    车库老板也是一位有情怀的人,他能说出店里所有团队的名字、项目、资源,还经常帮忙对接项目。这个氛围能把创业者粘起来,刘认为,这是车库咖啡和创业大街做起来的原因。

    让他印象深刻的是,有个创业者租不起房子,晚上要么睡在咖啡厅,要么去权金城洗浴大厅,经常浑身馊味,很猥琐地跑过来跟他聊天,这是很多创业者的常态,如今,这位伙伴做的2B挖掘机交易平台“挺成功”。

    刘不仅见证了大街上的第一家创业咖啡馆,还见证了第一个创业孵化器36氪的入驻。这是一个很偶然的机会,那天他和车库咖啡几个人正闲的无聊,看对面正在装修,就去阳台上转了一下,抽了根烟,遇到了孵化器的负责人。

    这个负责人认为环信的业务很靠谱,邀请他们入驻。入驻36氪第二天,刘见到了经纬中国的投资人,很偶然拿到了500万元天使融资。后来的融资也很顺利,同年,他们拿到了SIG的A轮投资500万美元与红杉资本的A+轮投资300万美元,去年7月,他们完成B轮融资,红杉资本领投,经纬中国和SIG跟投,总金额1250万美元。

    环信是36氪孵化出的第一批公司,他们在这里工作了三个月,但这三个月让他们“变得不一样”。36氪每隔一段时间集合一批他们认为最好的创业公司,路演、宣传,环信的产品本来默默无名,但这些活动过后,百度指数流量“哗哗增长”,客户也逐渐增多。

    从入驻第一家创业咖啡馆,入驻第一家孵化器,到拿到第一笔融资,第一次得到媒体的宣传推广,获得第一批用户,环信的成长与创业大街分不开。随着团队成员的增加,他们又搬了两次家,附近的1+1大厦和现在的公司所在地中关村南大街数码大厦。数码大厦的办公环境优雅别致,废旧电子元器件装饰成的背景墙,木质装饰墙上展示的图书、图片、信件,以及一整面墙上跃动着的性感手绘,很难让人相信这是程序员工作的地方,他若无其事地说,“这都是设计师设计的”。不过,公司选址是他的意愿,虽然从大街离开了,但他不想距离太远。

    H(XT90BXOLXVAHP0JMVHYY.png


    在车库时,央视采访刘,评价他们是“老年创业”的典型代表,以及“只要有梦想,什么时候行动都不晚”的代表,刘认可这个定位,那时,他40岁,创始人团队平均年龄38岁,他说老年创业有优势,不是为了创业而创业,也不是为了钱,而是为了做成一件事,这样才能耐得住寂寞。

    过去三年,他们一直坚持早九晚九一周六天的作息制度,一直到今年6月,个别部门刚刚叫停。“没有办法,就是要用比别人少一半的人,干两倍的事。”他知道创业者鱼龙混杂,也见到许多年轻创业者,每三五个月换一次方向,过去两三年一起创业的公司,留下来的基本不多。“创业是件挺残酷的事情。”

    王方帅也曾是车库咖啡的创业者,他的创业偶像不是IT界企业家,而是刘俊彦,他曾亲眼见到过刘的奋斗,在接受媒体采访时,用了“龟缩”一词形容环信四个合伙人和两个员工在一个角落里搞研发的状态。

    刘没有自己的专属办公室,他坐在一间没有空调的小会议室里,讲述着自己的创业经历,一根长长的白色电线连进来一个落地扇,闷热的天气下,扇着若有若无的风。
     
    创业太辛苦了,挣不到钱又特别累,没有家里人支持做不好,你可以帮我隔空喊话,鸣谢一下我老婆这几年的支持和付出”,刘说自己不会煽情,也讲不出具体的故事,说这些话的时候,眼圈泛红,在车库的日子,他的女儿出生,这是他的第一个孩子,却天天不在家。对了,那位帮他装修办公室的设计师是他妻子。
     

    有些人的业余爱好是看韩剧,有些人的业余爱好是旅游逛街,刘俊彦的业余爱好是写程序。即时通讯是他擅长的领域,这项技术简称IM,是移动社交的基础技术,QQ、微信、阿里旺旺、米聊、陌陌等都采用了这种技术。

    微信和陌陌火起来的那段时间,经常有朋友找他做具有这种功能的社交工具,能够单聊、群聊,发语音、发图片,在对别人一个一个指点的时候,刘发现这是一个新趋势,于是想到了做一个服务,Pass即时通讯云成了环信推出的第一个产品。客户自己开发很难,但是嵌入环信的产品,半天就能拥有互联网沟通能力。环信专注服务微信覆盖不了的沟通场景,比如同性恋交友、二手物品交易、母婴交友、房产中介等平台,用户为了保护隐私,一般在微信之外沟通,他相信这些平台的总体量甚至比微信还大。

    即时通讯天然有两个场景,一个是社交,连接人和人,一个是客服,连接人和商业。如果说社交的成功在他们预料之内,客服的成功则是他们完全没有想到的,很多客户用环信的社交能力做客服,很短时间内,刘俊彦就发现,这两个场景的使用比率变成一半一半了。于是,他们顺势推出了环信的第二个产品SaaS移动客服,无论客户请求来自传统电话话务中心、网页,还是微信公号或App,环信都可以为客户提供一个统一的处理平台。

    V1B7FAKDEX]8})UVO3F{M]U.png


    也是因为在移动客服方面的努力,今年5月,环信入选了Gartner2016Cool Vendor in China名单,Gartner是全球权威的IT研究与顾问咨询公司,它曾预测,移动端客户服务将成为趋势,但这一趋势没有在欧美实现,“我们重新定义了如何在移动设备上做客服。”这一名单的评选原则是,新颖、创新、有市场潜力,Snapchat、Instagram等明星企业都曾入选过此榜单。

    “优秀公司应时代而生”,中国人跳过了PC时代,直接进入移动时代。刘认为,他们最成功的风口是抓住了移动端这个浪潮。根据环信最新统计,他们目前有8万多家用户,58到家、快牙、楚楚街、猎聘、海尔智慧生活、国美在线、神州专车等App都使用了他们的服务。 “如果没有海量用户,我们不可能凭空发明出产品。”

    “人工智能是一个新风口”,环信现在正投入研发力量做智能客服机器人和环信客户声音,这比竞争对手早了一步。见过很多企业的死,让他对“死”很敏感,“创业公司之间也有差距,有的死掉,有的持续发展下去。”

    环信还赶上了“大众创业,万众创新”的时机,北京市科技型中小企业促进专项创新基金、南京321基金两支政府性基金曾为他们提供过帮助,他们用这些钱招了更好的工程师,做了更大规模的市场推广和宣传。现在,刘发现一个变化,政府主导的投资基金开始增多,他们也在积极申请。不过,获得政府基金很难,需要经过很多轮答辩,对这位“宅男”是不小的挑战,由于经常出差,半年前,他暂停了程序开发工作。

    他还发现一个变化,创业这股风越来越猛了,以前是一批最不安分的人出来创业,现在连最安分的人都出来创业了。刘毕业于伦敦大学国王学院计算机硕士专业,先后任职于IONA,RedHat,他认为自己是一个安分的人,这种人创业的特点是,更注重技术创新,更回归商业本质。

    P6JOR8P]XERXJQ)]{QF87N.png


    雷军曾说,风口上的猪也能飞起来。刘认为这种说法有些负面,“我们是站在风口浪尖上,也用实力把握住了风口”。不管以后风怎么吹,“我知道自己要做什么,有足够规模的资本支持,锻炼了一支好的团队,我要做的是看准方向。”

    刘俊彦认为,这个行业还要打两场仗,第一场在半年或一年后,决出客服跑道前三名,第二场仗在两年后,决出综合性软件前三名,这场仗打完,这个市场就定了,打赢了的成为中国的微软、Salesforce、Oracle,打输了的就在历史河流中销声匿迹了。

    “我们还要持续地小步快跑。” 收起阅读 »

    环信移动客服v4.10产品更新--新增排队统计,将所有客户一网打尽

    Web版环信移动客服  【新增】 排队统计 筛选排队统计数据  排队统计总览小时排队趋势排队趋势导出排队统计报表【新增】消息中心支持详情页面显示 当客服或管理员在“消息中心”查询消息时,点击某条消息,可以查看该消息的详情。涉及页面包括客服模式和管理员模式的“消...
    继续阅读 »

    11258PICnHQ.jpg


    • Web版环信移动客服
     【新增】 排队统计

    筛选排队统计数据  排队统计总览小时排队趋势排队趋势导出排队统计报表

    【新增】消息中心支持详情页面显示

    当客服或管理员在“消息中心”查询消息时,点击某条消息,可以查看该消息的详情。涉及页面包括客服模式和管理员模式的“消息中心”。

    【优化】发送图片/文件大小限制变更为10MB【优化】转接客服和技能组列表显示完整名称【优化】搜索客服成员时,显示搜索关键字【优化】新增/修改/删除APP关联错误时,显示对应提示语【优化】企业信息增加租户ID【优化】质检评分采用下拉列表的形式【优化】筛选结果分页时,显示结果总数【优化】重置密码页面优化 
    •  iOS/Android客服工作台


     【新增】Android版增加管理员模式 

     【新增】 管理员首页 

     【新增】当前会话 

     【新增】历史会话

    【新增】统计查询

    【优化】在线状态

    【优化】新消息提醒

    【优化】常用语自动匹配
     
    详情 请下载  ↓↓↓ 收起阅读 »

    玩过微信直播吗?---凡信3.0携直播和红包而来

    凡信3.0携直播和红包而来   资源相关:APK体验地址:http://fir.im/wy79   github工程源码(主要更新源):https://github.com/huangfangyi/FanXin3.0   二维码安装:   作者QQ:...
    继续阅读 »
    凡信3.0携直播和红包而来

      资源相关:APK体验地址:http://fir.im/wy79
      github工程源码(主要更新源):https://github.com/huangfangyi/FanXin3.0
      二维码安装:

    下载.png


      作者QQ:84543217(QQ也只处理外包开发需求)
      凡信开发者讨论群:366135448
      APP红包功能讨论群(android+ios):437758366(1500名小伙伴等着你哦!)

    凡信背景介绍

      对于凡信项目的背景在此不再赘述,不了解的前往:https://github.com/huangfangyi/FanXin2.0_IM
    或者:http://www.imgeek.org/article/825307627

    前言:
       由于凡信的1.0和2.0都是基于环信SDK 2.x系列开发,而当前环信官方力推的是3.x的系列SDK,在此背景下,作者决定将凡信迁移至3.x的demo上。迁移的同时,对存储机制和网络接口做了一定的优化。与此同时,针对时下火热的直播APP,结合环信的聊天室功能和ucloud,做了两个模块-观看直播和进行直播;针对IM场景中常见的发红包/抢红包,集成了由环信提供的红包SDK,对于想做红包以及账户管理的开发者,是一种非常值得推荐的解决方案,一是开发者不用头疼于安全问题,以及开发中逻辑不严谨导致的资金转移丢包的问题。


    此次更新分三个部分进行详细介绍
    • 直播功能
    • 红包功能
    • 对凡信2.0已有功能的重构以及优化
     一.直播功能:直播间的开发涉及三个要点:
    • 一是观看的视频来源(拉流)
    • 二是主播直播的实时视频的推送(推流)
    • 三是直播间:主播与粉丝之间、粉丝和粉丝之间的字幕互动
     凡信中的解决方案是:
    • 观看直播(拉流)和开始直播(推流)只需要传入一个rtmp视频流即可,本项目用了一个香港卫视的电台直播视频流方便大家测试,另外一种就是通过设置直播间id进行推流,然后输入对应id进行拉流的方式,开发者可以通过两部手机进行测试。前提是保证网络环境良好。
    • 直播间的互动,一般直播直播平台会有打字弹幕、赠送礼物、私聊等功能,综合起来也就是通信问题。目前凡信中基于环信的聊天室功能,完成了打字互动的部分,其他部分可以依据这个原理实现,无非就是对消息进行分类(聊天消息、礼物消息、私聊消息)。
    相关APP截图如下:

    QQ图片20160716231610.png


    QQ图片20160716231623.png


    QQ图片20160716231631.png


    Screenshot_20160716-233111.png


    Screenshot_20160716-233114.png


    Screenshot_20160716-233118.png

    二、红包功能:-采用云账户提供的红包SDK实现  红包在社交APP中的需求越来越多,对于这块的自主开发涉及问题至少会包含以下两点:一是安全问题--支付安全和资金安全。二是丢包问题,如红包玩法中,发红包的资金涉及冻结资金,领取的要结算,过期的要回账,还例如领取状态的通知回调等等。越是复杂高频的收发红包及转账场景,怎么在移动端及服务端保证每笔交易都有完善的跟踪和容错机制,都是开发者必须要考虑的问题。然而设计一个完整的解决方案并研发成功,需要投入的技术成本和时间成本是非常高的,然而红包仅仅是APP的一个辅助模块而已,占据过高的成本得不偿失。为此,环信联合云账户推出了适用各种应用场景的红包SDK,帮助解决这个效率问题,开发者可以利用简单的几个小时完成一套红包解决方案。如果有小伙伴对红包或者账户资金管理功能感兴趣的,可以加入红包功能讨论QQ群:366135448,一起探讨APP变现模式,以及红包的新玩法。 部分APP截图如下:

    Screenshot_20160717-013204.png


    Screenshot_20160717-013228.png


    Screenshot_20160717-013339.png


    Screenshot_20160717-013859.png


    Screenshot_20160717-013902.png


    Screenshot_20160717-013910.png


    Screenshot_20160717-014025.png


    Screenshot_20160717-014032.png

    三、针对凡信2.0已有功能的优化[list=1]
  • 注册接口中,注册环信账号采用授权注册,放置于后端处理
  • 原先的凡信服务端接口的访问机制改成用okhttp处理。
  • 环信SDK由2.x系列转至3.x,采用的版本(版本 V3.1.3 R2 2016-6-15)
  • 朋友圈:a.点击头像查看用户资料。b.大图加载库从ImageLoader转至Glide。c.点击评论图标弹出的popwindow错位问题修复。
  • 个人中心->资料更新接口合并
  • 增加二维码、扫一扫
  • 钱包--原先设置全部删除,采用云账户的红包SDK处理
  • 当前用户资料处理机制----封装在JSONObject类中,在内存层和Perference双层管
  • 群头像--由5种组合转至9种组合。
  • 好友资料管理增加userInfo字段,用于可扩展的用户资料系统
  • 提取出几个工具类
  • 凡信相关的核心代码目录:com.fanxin.app.main.*;资源相关以fx_为前缀

  •  
    部分APP相关截图
    1.朋友圈相关


    Screenshot_20160717-180219.png


    Screenshot_20160717-180517.png


    Screenshot_20160717-180529.png


    Screenshot_20160717-180539.png


    Screenshot_20160717-180628.png


    Screenshot_20160717-180638.png


    Screenshot_20160717-180955.png


    Screenshot_20160717-181131.png


    Screenshot_20160717-181155.png


     
    2.主页相关


    Screenshot_20160717-173709.png


    Screenshot_20160717-173720.png


    Screenshot_20160717-174859.png


    Screenshot_20160717-174904.png


    Screenshot_20160717-181229.png


    Screenshot_20160717-170834.png


    Screenshot_20160717-181215.png


     
      收起阅读 »

    趋势•变革--2016中国企业互联网技术论坛

    地点:北京市海淀区板井路69号 地铁10号线“车道沟”A口出,直走步行15分钟 时间:2016年07月30日 08:00 参会报名:立即报名 会议简介这是有史以来第一场专为企业级服务领域量身打造的技术论坛; 大咖云集,也是洞察TO B领域技术的豪门盛宴!...
    继续阅读 »

    636038542955158007.jpg



    地点:北京市海淀区板井路69号 地铁10号线“车道沟”A口出,直走步行15分钟
    时间:2016年07月30日 08:00

    参会报名:立即报名

    会议简介
    这是有史以来第一场专为企业级服务领域量身打造的技术论坛;

    大咖云集,也是洞察TO B领域技术的豪门盛宴!

    7月30日北京世纪金源大酒店,崔牛会夏季论坛精彩呈现……

    你可以与行业技术大咖零距离探讨,可以感受这群正在改变未来企业服务领域的幕后英雄;

    与他们一起去思考不断涌现的新技术会对未来企业级市场的影响。

    CEO,应该关注,因为技术会决定未来的商业模式;

    CTO,更应该关注,他可以让你站在技术的最前端;小技术大场景,透过趋势看变革,你值得参与 TO B豪门盛宴……

     

    191562648002333609.jpg


     附:论坛日程

    273110465342599848.jpg


      收起阅读 »

    产品经理千人峰会--环信邀您共探大变革时代的产品设计创新

    由中国最大的产品经理社群PMCamp和易观联合主办的第六届中国产品经理大会((PMCon2016)将于2016年7月23日-24日在上海举行。 本届大会主题为: “大变革时代的产品设计创新”。我们正处于一个过度竞争、注意力过度分散、变化太快、资本市场太冷的艰...
    继续阅读 »

    QQ截图20160714160414.jpg


    由中国最大的产品经理社群PMCamp和易观联合主办的第六届中国产品经理大会((PMCon2016)将于2016年7月23日-24日在上海举行。

    本届大会主题为: “大变革时代的产品设计创新”。我们正处于一个过度竞争、注意力过度分散、变化太快、资本市场太冷的艰难时代。也是一个机会超多,用户基数巨大,好产品能快速脱颖而出的幸运时代。大会将邀请来自互联网、传统行业、服务业、新型创新企业的CEO、产品总监/VP、战略专家们,产品实战派专家们,将邀请各个领域的专家来分享如何在大变革时代进行产品设计创新,如何在资本狂潮消退后理性地看待产品价值,通过良好的产品设计和卓越的产品增长运营获得成功,如何抓住大航海时代的机会出海淘金等话题。围绕大变革时代的各种机会和问题,探讨产品商业模式、产品设计方法、产品运营、数据分析,展示产品成果,为CEO,产品经理,一切关注产品创新、创业的人搭建一个学习交流、思想碰撞的干货分享平台。

    自2010年起,PMCamp已经举办过五届产品经理大会,三届互联网运营大会、两届数字营销大会、五届人本设计大会,以及近百场的产品经理工作坊、设计工作坊、产品经理沙龙等线下聚会活动。正在筹办互联网产品增长大会。5年来,已经有超过10万人关注PMCamp,1万多人参加过PMCamp的活动,600家企业代表参加过PMCamp组织的活动。届时将会有数十家媒体报道,国内著名门户网站、社交网站、O2O、移动互联网等各个领域产品和设计专家参与,无论您处于互联网行业的哪个领域,这都将是让您受益匪浅不可错过的一次盛会
     
    大会日程


    7月23日是大会,全天共有8个演讲,2个圆桌论坛,1次茶歇。

    08:15-08:50 签到

    08:50-09:00 开场演讲和日程介绍 大会主持人

    09:00-09:40 演讲1

    09:40-10:20 演讲2

    10:20-10:25 休息

    10:25-10:55 演讲3

    10:55-11:25 演讲4

    11:25-12:05 圆桌论坛

    12:05-13:30 午餐

    13:30-14:10 圆桌论坛

    14:10-14:50 演讲5

    14:50-15:30 演讲6

    15:30-15:45 茶歇

    15:45-16:25 演讲7

    16:25-17:05 演讲8

    17:05-17:10 合影、抽奖


    大会嘉宾:


    1 苏杰,良仓孵化器创始合伙人,B12合伙人,前阿里巴巴产品专家

    2 laladu(杜娟),滴滴国际部负责人,曾任腾讯微信事业部品牌广告第一人

    3 蒋越,平安好医生医疗线资深产品总监,前阿里巴巴产品专家

    4 季毅华,携程旅行网基础业务产品总监,11年+产品经理

    5 郭炜,易观 CTO,曾任联想研究院大数据总监,曾在IBM任职

    6 姜沈励,1号店产品总监,1号店产品大学创始人和负责人,曾在新浪、安居客等负责产品

    7 张溪梦,GrowingIO创始人及CEO,前LinkedIn高级总监

    8 百度地图 产品总监 (确认中)

     

    移动互联网产品出海淘金论坛嘉宾:

    1 Summer Xia,夏雯,谷歌开发技术推广部中国谷歌开发者社区项目经理

    2 范路,猎豹移动投资总监

    3 袁潜龙,乐蛙科技联合创始人兼COO,前龙旗控股VP

    4 王佳梁,触宝科技联合创始人兼CEO(确认中)


    互联网金融圆桌论坛嘉宾:


    1 孔令欣,点融网 CTO,美国斯坦福大学计算机学和心理学双学位,四次互联网公司创业

    2 蚂蚁金服 产品总监(确认中)

    3 唐灏,陆金所 产品研发部副总经理(确认中)

    4 挖财 产品总监(确认中)


    报名连接  PMCamp 收起阅读 »

    分享 iOS 使用消息扩展集成头像和昵称的方法

    虽然文档里有提到,但没说具体怎么实现,demo 看着很绕也不知道有没有...社区里关于这个提问也很多,回答也都不明确,刚上手完全是各种不明白。所以分享一个简单粗暴的办法... 1、找到 EaseUI 里的 EaseMessageViewController.m...
    继续阅读 »
    虽然文档里有提到,但没说具体怎么实现,demo 看着很绕也不知道有没有...社区里关于这个提问也很多,回答也都不明确,刚上手完全是各种不明白。所以分享一个简单粗暴的办法...
    1、找到 EaseUI 里的 EaseMessageViewController.m
    2、给所有的 sendXXXMessage 里添加消息扩展,如下图:

    图中是图片消息和语音消息的示例,其他消息都是一样的。
    3、在 modelForMessage 里将消息的扩展取出,给 model 的 avatarURLPath 和 nickname 赋值即可。

      收起阅读 »