Menu

  • 博客
  • 关于唯我&博客
  • 唯我DIY
  • 讨论区

Copyright © VIIIO.COM | Theme by Theme in Progress | 基于 WordPress

千里之行,始于足下唯我 - 梦想从此起航

iOS 环信移动客服集成扩展

2016年5月23日iOS Standard
Views: 2,059

显示用户信息

当访客咨询客服时,客服可以在会话窗口旁边看到该访客的用户信息,包括:昵称、名字、手机、QQ、邮箱、公司名称、备注等。

具体实现方法如下:

调用EMMessage的扩展消息,关键字段为visitor,Demo中代码的具体位置是:com.easemob.helpdeskdemo.activity.ChatActivity.java →setUserInfoAttribute()。

APP传递消息格式:

//例如:有个真名叫李明,昵称小明的访客,已经提供了QQ号,公司名和联系方式等信息。
{ ext:{
    weichat:{
      visitor:{
        trueName:"李明",
        qq:"13512345678",
        companyName:"环信",
        userNickname:"小明",
        description:"",
        email:"abc@123.com"
        tags: ["vip1", "vip2"]
      }
    }
  }
}

显示客服头像和昵称

访客发起咨询时,可以在APP聊天界面显示正在接待的客服头像和昵称。进入“管理员模式→设置→系统开关”,打开“访客端显示客服头像和昵称”开关。

开关打开后,在客服发向访客的消息里面就会包含agent信息的扩展字段,具体如下:

   ext: {
        weichat: {
            agent: {
                userNickname:*,
                avatar:*
            },
            visitor: {},
            ...
        }
    }

APP端可以获取昵称(userNickname)和头像(avatar),然后在UI上做展示。

显示转接提示

客服转接会话时,APP访客端显示转接提示(如转接中,请稍候…),以便用户知道客服服务状态,UI需APP自定义。

在客服人员进行会话转接时,在消息ext里面增加了事件(event)字段,并监听会话转接,在收到会话转接的事件时,把这个事件通过透传消息发送给访客端。

发给访客端的透传消息格式如下:

{
    "msg":{  //消息内容
        "type":"cmd",  // 消息类型
        "action":"transfer"
    },
    "from":"test",  //表示这个消息是谁发出来的, 可以没有这个属性, 那么就会显示是admin, 如果有的话, 则会显示是这个用户发出的。
    ext: {
        weichat: {
            agent: {
                userNickname:*,
                avatar:*
            },
            event: {
                eventName:ServiceSessionTransferedEvent,
                eventObj:null
            },
            ...
        }
    }
}

指定客服

为APP的“联系客服”按钮指定一位明确的客服人员,当用户从该按钮发起的会话将只分配给该客服。

指定规则由APP自定义。

具体实现方法如下:

调用EMMessage的扩展消息,关键字段为agentUsername。

消息格式:

{"ext":{
    "weichat":{
        "agentUsername":"xxx@xxx.com"
              }
        }
}

其中,agentUsername为客服登录邮箱或手机号码。

注:当会话同时指定了客服和技能组时,以指定客服为准,指定技能组失效。

指定技能组

为APP的“联系客服”按钮指定一个技能组,当用户从该按钮发起的会话将只分配给该技能组内的客服。可以添加多个按钮,分别指定不同技能组。

具体实现方法如下:

调用EMMessage的扩展消息,关键字段为queueName,Demo中代码的具体位置是:com.easemob.helpdeskdemo.activity.ChatActivity.java →setUserInfoAttribute()。

消息格式:

例如:在环信客服系统设置一个技能组名称为shouqian,当APP客户端发送带有扩展字段shouqian的消息到服务器时,系统会将此会话自动分配给shouqian技能组处理。

  {"ext":{
    "weichat":{
        "queueName":"shouqian"
              }
        }
  }

注:

  • 当没有指定技能组时,系统默认将会话分配给未分技能组的客服。
  • 当会话同时指定了客服和技能组时,以指定客服为准,指定技能组失效。

VIP访客插队

当客服全忙时,VIP访客可插队到队首,有空闲坐席出现时,优先接入。

访客发起会话时,APP端通过消息扩展中的”tags”字段标出VIP用户,凡是”tags”字段非空的访客都会直接排在待接入队列的最前面。当有多个访客包含非空的”tags”字段时,这些访客单独按会话发起时间排队。

具体实现方法如下:

在EMMessage扩展消息的visitor关键字段内,增加tags属性,其值可以为零到多个。当访客发起会话时,通过该扩展消息将访客tags属性传到客服系统,系统即可把该访客放在待接入队列的最上面。

消息格式:

{ ext:{
    weichat:{
      visitor:{
        trueName:"李明",
        qq:"13512345678",
        companyName:"环信",
        userNickname:"小明",
        description:"",
        email:"abc@123.com"
        tags: ["vip1", "vip2"]
      }
    }
  }
}

显示满意度评价邀请

APP需做以下集成,才能正常显示由客服发送的满意度评价邀请。UI需APP自定义。

具体实现方法如下:

调用EMMessage的扩展消息,关键字段为weichat和ctrlType。

客服端发给访客端的评价邀请

ctrlType:inviteEnquiry
ctrlArgs:

inviteId 必选 服务端发送会话相关ID。
serviceSessionId 必选 服务端发送会话相关ID。
detail 可选 在客户端默认显示在对话框中的内容。
summary 可选 客户端默认显示的满意度级别。

消息示例:

{ "ext": {
        "weichat": {
            "ctrlType": "inviteEnquiry",
            "ctrlArgs": {
                "inviteId": 1,
                "serviceSessionId": "5e7e8815-99d9-45fd-9bef-4918795a0885",
                "detail": null,
                "summary": null
            }
        }
    }
}

访客端返回给客服端的评价结果

ctrlType:enquiry
ctrlArgs:

inviteId 必选 返回服务端发送过来的相应内容即可,客户端主动发起时设置为““。
serviceSessionId 必选 返回服务端发送过来的相应内容即可,客户端主动发起时设置为”“。
detail 必选 用户在客户端输入框输入的相应内容。
summary 必选 用户选择的级别。注:目前仅有1~5是有效数据,超出此范围会被识别为无效评价,不计入平均分也不会统计进有效评价

消息示例:

{ "ext": {
        "weichat": {
            "ctrlType": "enquiry",
            "ctrlArgs": {
                "inviteId": 1,
                "serviceSessionId": "5e7e8815-99d9-45fd-9bef-4918795a0885",
                "detail": "非常好",
                "summary": "1"
            }
        }
    }
}

发送轨迹消息

当APP用户浏览某个商品页时点击“联系客服”,APP可自动将该商品链接发送给客服。

要实现该功能,需在消息中增加扩展字段msgtype。

消息格式:

{ ext:{
    msgtype:{
      // 用户轨迹消息
      track:{
        // 消息标题
        title:       "我正在看:",
        // 商品价格
        price:       "¥: 235.00",
        // 商品描述
        desc:        "女装小香风气质蕾丝假两件短袖",
        // 商品图片链接
        img_url:     "http://yourdomain.com/img/a.jpg",
        // 商品页面链接
        item_url:    "http://yourdomain.com/item/a.html"
      }
    }
  }
}

iOS代码示例:

NSString *title = [info objectForKey:@"title"];
NSString *desc = [info objectForKey:@"desc"];
NSString *price = [info objectForKey:@"price"];
NSString *imageUrl = [info objectForKey:@"img_url"];
NSString *itemUrl = [info objectForKey:@"item_url"];
 
NSMutableDictionary *itemDic = [NSMutableDictionary dictionary];
if (title) {
  [itemDic setObject:title forKey:@"title"];
}
if (desc) {
  [itemDic setObject:desc forKey:@"desc"];
}
if (price) {
  [itemDic setObject:price forKey:@"price"];
}
if (imageUrl) {
  [itemDic setObject:imageUrl forKey:@"img_url"];
}
if (itemUrl) {
  [itemDic setObject:itemUrl forKey:@"item_url"];
}
NSDictionary *extDic = @{@"msgtype":@{type:itemDic}};
EMChatText *text = [[EMChatText alloc] initWithText:@"客服图文混排消息"];
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithChatObject:text];
EMMessage *message = [[EMMessage alloc] initWithReceiver:@"username" bodies:[NSArray arrayWithObject:body]];
message.ext = extDic;
[[EaseMob sharedInstance].chatManager asyncSendMessage:message progress:nil];

Android代码示例:

EMMessage message = EMMessage.createTxtSendMessage("客服图文混排消息", toChatUsername);
JSONObject jsonMsgType = new JSONObject();
JSONObject jsonTrack = new JSONObject();
try{
  jsonTrack.put("title", title_new);
  jsonTrack.put("price", price_new);
  jsonTrack.put("desc", desc_new);
  jsonTrack.put("img_url", img_url_new);
  jsonTrack.put("item_url", item_url_new);
  jsonMsgType.put("track", jsonTrack);
}
catch(JSONException e){
  e.printStackTrace();
}
message.setAttribute("msgtype", jsonMsgType);
sendMessage(message);

发送订单消息

当APP用户浏览某个订单页时点击“联系客服”,APP可自动将该订单链接发送给客服。

要实现该功能,需在消息中增加扩展字段msgtype。

消息格式:

{ ext:{
    msgtype:{
      // 订单消息
      order:{
        // 消息标题
        title:       "我的订单",
        // 订单标题
        order_title: "订单号:a110083",
        // 商品价格
        price:       "¥: 235.00",
        // 商品描述
        desc:        "女装小香风气质蕾丝假两件短袖",
        // 商品图片链接
        img_url:     "http://yourdomain.com/img/a.jpg",
        // 商品页面链接
        item_url:    "http://yourdomain.com/item/a.html"
      }
    }
  }
}

显示机器人菜单消息

APP需做以下集成,才能正常显示由机器人发送的菜单消息。UI需APP自定义。

具体实现方式:

调用EMMessage的扩展消息,关键字段为msgtype和choice,可以对回复的机器人菜单进行识别。

消息格式:

{"ext":{"msgtype":{"choice":{"items":[{"id":"xxx","name":"1.列表内容"},{"id":"xxx","name":"2.列表内容"}],"title":"列表的标题"}}}}

显示机器人转人工客服按钮

转人工按钮:在后台配置显示转人工按钮时,机器人发送过来的消息包含特定的扩展,需要检查并把转人工按钮显示出来。

Android-Demo代码具体位置:com.easemob.easeuix.widget.chatrow.ChatRowTransferToKefu.java →isTra sferToKefuMsg(…)

实现方式:

调用EMMessage的扩展消息,关键字段为TransferToKfHint。

消息格式:

{"ext":{"weichat":{"ctrlType":"TransferToKfHint","ctrlArgs":{"id":"xxx","serviceSessionId":"xxx-xxx-xxx","lable":"转人工客服"} }}}

当点击转人工客服时,发送一条透传消息,并把id、serviceSessionId和ctrlArgs通过扩展带过去。

格式如下:

 {"ext":{"weichat":{"ctrlArgs":{"id":"xxx","serviceSessionId":"xxx-xxx-xxx"}}}}

发表评论或回复 取消回复

邮箱地址不会被公开。

50 − = 43

近期文章

  • OC UIWindow setRootViewController切换界面引发的内存问题
  • iOS证书、AppId、PP文件之间的关系
  • SVN服务器搭建、备份及多服务器同步方案(Windows)
  • [转]iOS多线程-各种线程锁的简单介绍
  • Mac 下Apache2 配置多虚拟主机

近期评论

  • NARYTHY288954NEYRTHYT发表在《ASP.NET整合Discuz PHP站 并实现用户同步》
  • nym402059flebno发表在《ASP.NET整合Discuz PHP站 并实现用户同步》
  • nem2182758krya发表在《ASP.NET整合Discuz PHP站 并实现用户同步》
  • aresgrb.se发表在《ASP.NET整合Discuz PHP站 并实现用户同步》
  • Vincenturbam发表在《ASP.NET整合Discuz PHP站 并实现用户同步》

分类目录

  • ASP.NET (15)
  • Git (2)
  • HTML (1)
  • iOS (31)
  • Javascript (7)
  • Oracle (8)
  • SQL (3)
  • SQLSERVER (2)
  • SVN (1)
  • 一行代码系列 (5)
  • 微信小程序 (1)
  • 正则表达式 (2)
  • 网站建设 (5)

文章归档

  • 2018年12月 (1)
  • 2018年4月 (1)
  • 2017年12月 (2)
  • 2017年7月 (3)
  • 2017年6月 (1)
  • 2017年4月 (1)
  • 2017年1月 (1)
  • 2016年12月 (3)
  • 2016年10月 (1)
  • 2016年7月 (1)
  • 2016年6月 (1)
  • 2016年5月 (3)
  • 2016年4月 (5)
  • 2016年3月 (4)
  • 2016年2月 (2)
  • 2016年1月 (3)
  • 2015年12月 (11)
  • 2015年11月 (7)
  • 2015年10月 (3)
  • 2015年9月 (1)
  • 2015年8月 (1)
  • 2015年7月 (1)
  • 2015年6月 (1)
  • 2015年5月 (1)
  • 2015年4月 (1)
  • 2014年7月 (1)
  • 2014年6月 (1)
  • 2014年5月 (2)
  • 2014年4月 (2)
  • 2014年3月 (2)
  • 2014年2月 (2)
2025年5月
一 二 三 四 五 六 日
« 12月    
 1234
567891011
12131415161718
19202122232425
262728293031