微信开发模式接入客服系统,PHP实现消息转发与触发方法
承接微信开发模式对接客服系统的此番创新,确切地舒缓了开发者手动切换形态遭遇的麻烦。曾经 用户企望寻求客服支持,用户必须自行编制繁琐逻辑以便分流,如今官方协定一锤定音,所节省的时间足以满足您多品尝几回咖啡。
开发模式客服接入原理
新协议里最为核心的那种改变,存在于消息响应的机制当中,开发者不用再自行去搭建繁杂的消息路由,在微信服务器把用户消息推送至你所处的开发地址之后,你只要于特定条件之下回复一个特定格式的XML数据包,微信便会自动接手后续对话。
1399197672
这个被称作“转发客服系统”的消息类别,实际上是一个由官方所规定的开关哟。你将这个开关予以返回后,微信服务器会把用户当下的这条以及后续一段时期内的全部消息,都径直推送给微信公众平台官方的客服系统,而不会再经由你的开发服务器啦。
触发的关键词设计
于实际运营期间,用户咨询常常起始于某些试探性词语。举例而言,晚上八九点属于咨询高峰时段,用户会首先发送“你好”,以此来试探是否存在人员在线,或者径直询问“在吗”,进而确认客服是否处于活跃状态。
//回复多客服消息
private function transmitService($object)
{
$xmlTpl = "
%s
";
$result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());
return $result;
}
将这些高频咨询词用作触发关键词最为实用,在用户发送涵盖“人工”、“客服”、“投诉”这类具有明确意图的词汇之际,系统能够马上返回多条客服消息,从而使得用户能够毫无阻碍地进入人工服务,其体验相较于机械的自动回复优胜许多。
具体代码实现细节
依照方倍工作室的由PHP制作的软件开发工具包来达成实属格外简单。你只需在收纳消息的处在开始部分的文件里,增添一个针对关键的字词进行判断的逻辑分支。于觉察到使用者的消息与预先设定好的词汇库相吻合之际,就把特定针对性的客服消息的XML结构给予返回。
留意这个XML结构,其中关键字段呢是MsgType,它务必得被设置成为transfer_customer_service。而其他字段例如FromUserName 、ToUserName什么的,就径直去沿用所接收到的数据,后续的转发逻辑将会由微信服务器自行来进行处理,标点符号得明确无误。
完整代码测试经验
有这么一个有趣现象,是经过实际测试才发现的:从自定义菜单那儿直接返回多客服消息,没法使用户进入多客服状态啊。必须得是在用户主动发送消息的那种场景情形下,你回复这种特定消息,才能够激活转发机制呢。
万一用户凭借关键词顺利引发客服会话,接下来的几分钟当中,用户所发送的全部消息,都会自动被转至客服系统。截至此刻,你开发模式内部的自动回复将会暂且失效,一直持续到客服会话超出规定时间或者结束。
业务场景应用建议
一旦你的公众号同时有着自助服务以及人工客服,这时相当倾向认为建议将触发词设置得精确一些,比如说电商类型的账号,能够去设置“退货”,还有“换货”,以及“投诉”这些具备强烈意图的词汇,防止用户随意发送一个“你好”便把人员转接到人工,进而增添客服的压力。
//接收文本消息
private function receiveText($object)
{
$keyword = trim($object->Content);
if (strstr($keyword, "投诉") || strstr($keyword, "你好") || strstr($keyword, "在吗")){
$result = $this->transmitService($object);
}
return $result;
}
从事教育类的账号,能够将“报名”以及“咨询课程”作为触发其中关联的要点。在2025年时,那些做知识付费工作的同行给出反馈表明,就这样设置后续得知,人工客服的转换有效率得到提升,往上增长的幅度是30%,这是由于主动进入所开展会话的用户,对应的要求趋向于更为清晰明确的状态所引发而成的情况。
开发者避坑指南
需留意的是,在向客服消息进行返回之后,用户接下来所发的消息将不会再经由你的服务器,这所表明的寓意是,你没办法于客服对话的这段期间对用户行为予以记录或者做数据分析。要是存在这样的需求的话,能够结合客服接口去拉取聊天记录借此来补充数据。
此外,进行测试之际,需将不同版本微信客户端的表现纳入考量范围。安卓用户与iOS用户,在触发客服会话之后,其界面提示存在少许差异,然而核心功能保持一致。在上线之前,提议运用多台设备,对触发关键词以及会话转接的流畅度予以测试。
responseMsg();
}else{
$wechatObj->valid();
}
class wechatCallbackapiTest
{
//验证消息
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
//检查签名
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if($tmpStr == $signature){
return true;
}else{
return false;
}
}
//响应消息
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$this->logger("R ".$postStr);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);
switch ($RX_TYPE)
{
case "event":
$result = $this->receiveEvent($postObj);
break;
case "text":
$result = $this->receiveText($postObj);
break;
}
$this->logger("T ".$result);
echo $result;
}else {
echo "";
exit;
}
}
//接收事件消息
private function receiveEvent($object)
{
switch ($object->Event)
{
case "subscribe":
$content[] = array("Title" =>"欢迎关注方倍工作室", "Description" =>"使用方法:\n1.发送快递单号,例如6367532560,可查询快递详情", "PicUrl" =>"http://www.3856.cc/weixin/weixin/logo.jpg", "Url" =>"");
break;
default:
$content = "receive a new event: ".$object->Event;
break;
}
if(is_array($content)){
if (isset($content[0])){
$result = $this->transmitNews($object, $content);
}else if (isset($content['MusicUrl'])){
$result = $this->transmitMusic($object, $content);
}
}else{
$result = $this->transmitText($object, $content);
}
return $result;
}
//接收文本消息
private function receiveText($object)
{
$keyword = trim($object->Content);
if($keyword == "时间" || $keyword == "测试"){
$content = date("Y-m-d H:i:s",time());
$result = $this->transmitText($object, $content);
}
//触发多客服模式
else if (strstr($keyword, "您好") || strstr($keyword, "你好") || strstr($keyword, "在吗") || strstr($keyword, "有人吗")){
$result = $this->transmitService($object);
return $result;
}
return $result;
}
private function transmitText($object, $content)
{
$textTpl = "
%s
";
$result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);
return $result;
}
private function transmitNews($object, $newsArray)
{
if(!is_array($newsArray)){
return;
}
$itemTpl = " -
";
$item_str = "";
foreach ($newsArray as $item){
$item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);
}
$newsTpl = "
%s
%s
$item_str
";
$result = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray));
return $result;
}
private function transmitMusic($object, $musicArray)
{
$itemTpl = "
";
$item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);
$textTpl = "
%s
$item_str
";
$result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time());
return $result;
}
//回复多客服消息
private function transmitService($object)
{
$xmlTpl = "
%s
";
$result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());
return $result;
}
private function logger($log_content)
{
if(isset($_SERVER['HTTP_APPNAME'])){ //SAE
sae_set_display_errors(false);
sae_debug($log_content);
sae_set_display_errors(true);
}else if($_SERVER['REMOTE_ADDR'] != "127.0.0.1"){ //LOCAL
$max_size = 10000;
$log_filename = "log.xml";
if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}
file_put_contents($log_filename, date('H:i:s')." ".$log_content."\r\n", FILE_APPEND);
}
}
}
?>
实际开发期间,你可曾碰到用户发送来怪异词汇从而触发客服的情形呢?在评论区分享些你的奇葩触发词案例吧,若觉得有用,就点个赞,好让更多开发者瞧见。
同类文章排行
- 松阳县人大创新机制解民忧,聚焦民生领域促发展
- 台风博罗依最新消息:已登陆越南,海南调整应急响应及预警
- 青海门源6.9级地震最新消息:暂无伤亡,启动II级响应
- 奇瑞艾瑞泽系列动作不断,今年还会有啥新动作?改款消息有吗?
- 名家计划再推进,UC的焦虑能够得到缓解吗?
- 上海二手房价格首跌!楼市未来走向,专家这样看
- 上游新闻客户端迎上线10周年,7.0版全新改版升级
- 新闻从业者必看!这样写新闻评论标题,吸引读者不是梦
- QQ消息铃声哪里找?超全铃声设置攻略和自定义方法全揭秘
- 微信开发模式接入客服系统,PHP实现消息转发与触发方法
最新资讯文章
- 河池化工终止重大资产重组原因及投资者说明会情况
- 4月2-8日房企土地储备与投融资情况:拿地融资动态全知道
- 河池化工重组背后故事曝光!十余年前股权转让纷争不断
- 第十三届校运会开幕,艺术与设计学院风采尽显
- 周庄古镇元旦开庄仪式启幕,上演精彩民俗活动迎新年
- 古韵今风共织华章:七夕传承创新,焕发传统与爱情新魅力
- 周庄古镇门票价格调整引发热议,游客咋看?
- 七夕节:古老传说与当代传承,内涵拓展与多元庆祝方式
- 平谷区举行文化高质量发展政策发布会,多项措施助力产业融合
- 开学季大学生状态调查:超九成新生期待,多规划新起点
- 2021年徐州地铁二号线乘客满意度调查结果出炉及系列行动新闻
- 平谷区扎实推动精神文明建设,多举措提升城市温度与风尚
- 徐州地铁2号线一期工程通过安全评估及多项服务活动开展情况
- 微信人工客服消息转发指南及多客服操作说明(含php代码)
- 借贷宝惊现高利贷套路,实际借3.2万却签12万多合同
- 微信开发模式接入客服系统,PHP实现消息转发与触发方法
- 免费QQ群引流软件 自动加群推送广告 挖掘老客户
- 上海二手房价格首跌!楼市未来走向,专家这样看
- 深圳警方开展打击走私行动,多部门联动战果丰硕
- 上海二手房价格首跌,市场观望情绪浓厚,成交量或保持低位





