亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

如何使用微信公眾平臺開發模式實現多客服

2024-05-04 23:41:57
字體:
來源:轉載
供稿:網友
其實微信公眾平臺的多客服功能已經出來好久了,并且一出來的時候我就已經為自己的公眾號實現了,原本以為大家都已經會了,但是今天還是有人問起這個多客服功能怎么使用,我找了下網上也沒什么好的教程,今天我就給大家發一篇比較簡單易懂的教程吧
 

其實微信公眾平臺的多客服功能已經出來好久了,并且一出來的時候我就已經為自己的公眾號實現了,原本以為大家都已經會了,但是今天還是有人問起這個多客服功能怎么使用,我找了下網上也沒什么好的教程,今天我就給大家發一篇比較簡單易懂的教程吧!

在這篇微信公眾平臺開發教程中,我們將介紹如何使用開發模式實現多客服系統。

一、回復多客服消息

在新的微信協議中,開發模式也可以接入客服系統。 開發者如果需要讓用戶使用客服系統,需要在接收到用戶發送的消息時,返回一個MsgType為transfer_customer_service的消息,微信服務器在收到這條消息時,會把用戶這次發送的和以后一段時間內發送的消息轉發客服系統。

返回的消息舉例如下

<xml>  <ToUserName><![CDATA[touser]]></ToUserName>  <FromUserName><![CDATA[fromuser]]></FromUserName>  <CreateTime>1399197672</CreateTime>  <MsgType><![CDATA[transfer_customer_service]]></MsgType></xml> 

該消息的實現如下(以方倍工作室的微信公眾平臺PHP SDK為基礎)

   //回復多客服消息  private function transmitService($object)  {    $xmlTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>";    $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());    return $result;  } 

二、觸發多客服會話

一般情況下,用戶想要咨詢問題是,經常會問“你好”,“在嗎”,這樣的問題。

我們以這些詞為觸發關鍵詞,當用戶發送的文本消息內容中包含這些詞的時候,就返回多客服消息給用戶(用戶在微信端感覺不到任何內容,但微信公眾賬號會將用戶本次及以后一段時間的消息都轉發到客服)。

實現代碼如下:

 //接收文本消息  private function receiveText($object)  {    $keyword = trim($object->Content);    if (strstr($keyword, "投訴") || strstr($keyword, "你好") || strstr($keyword, "在嗎")){      $result = $this->transmitService($object);    }    return $result;  }

三、完整代碼

<?php/*  方倍工作室  CopyRight 2014 All Rights Reserved*/define("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();if (!isset($_GET['echostr'])) {  $wechatObj->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 = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>";    $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);    return $result;  }  private function transmitNews($object, $newsArray)  {    if(!is_array($newsArray)){      return;    }    $itemTpl = "  <item>    <Title><![CDATA[%s]]></Title>    <Description><![CDATA[%s]]></Description>    <PicUrl><![CDATA[%s]]></PicUrl>    <Url><![CDATA[%s]]></Url>  </item>";    $item_str = "";    foreach ($newsArray as $item){      $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);    }    $newsTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>%s</ArticleCount><Articles>$item_str</Articles></xml>";    $result = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray));    return $result;  }  private function transmitMusic($object, $musicArray)  {    $itemTpl = "<Music>  <Title><![CDATA[%s]]></Title>  <Description><![CDATA[%s]]></Description>  <MusicUrl><![CDATA[%s]]></MusicUrl>  <HQMusicUrl><![CDATA[%s]]></HQMusicUrl></Music>";    $item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);    $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[music]]></MsgType>$item_str</xml>";    $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time());    return $result;  }  //回復多客服消息  private function transmitService($object)  {    $xmlTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>";    $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);    }  }}?> 

本段代碼經過測試,在自定義菜單中返回多客服消息,無法讓用戶進入多客服狀態,使用多客服消息后,后續所有消息在一段時間內都將作為客服消息轉發,原來的開發模式下的自動回復都將失效。

本文寫的不好,還望海涵,有好的意見歡迎分享,大家共同學習進步。同時,感謝大家一直以來對VeVb武林網網站的支持。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女999| 亚洲国产精品va在线| 日韩高清a**址| 久久福利视频导航| 亚洲综合国产精品| 97视频免费看| 国产美女高潮久久白浆| 91在线免费视频| 久久精品国产96久久久香蕉| 国产精品夜间视频香蕉| xxav国产精品美女主播| 91av在线不卡| 日韩精品在线电影| 欧美日韩国产精品一区二区三区四区| 欧美日韩国产成人高清视频| 国模视频一区二区| 久久精品亚洲国产| 欧美日韩精品在线视频| 国产精品都在这里| 欧美孕妇毛茸茸xxxx| 57pao国产精品一区| 97视频在线观看免费| 精品国产视频在线| 欧美精品在线视频观看| 久久影院中文字幕| 日韩电影在线观看永久视频免费网站| 91精品视频专区| 国产精品成人在线| 日韩美女写真福利在线观看| 91干在线观看| 国产精品丝袜久久久久久高清| 亚洲精品国产综合久久| 92国产精品久久久久首页| 国产亚洲免费的视频看| 日韩美女av在线| 欧美激情女人20p| 欧美在线观看一区二区三区| 亚洲国内精品在线| 久久综合国产精品台湾中文娱乐网| 91亚洲精品视频| xxx欧美精品| 欧美亚洲一级片| 九九精品视频在线观看| 日韩第一页在线| 91精品中文在线| 韩国三级电影久久久久久| 欧美一级大胆视频| 91在线免费看网站| 色综合久久精品亚洲国产| 亚洲精品福利免费在线观看| 夜色77av精品影院| 日韩精品视频免费专区在线播放| 久久精品国产91精品亚洲| 亚洲天堂成人在线| 日韩精品视频三区| 亚洲性av网站| 黑人巨大精品欧美一区免费视频| 91精品啪aⅴ在线观看国产| 亚洲欧洲在线看| 久久天天躁狠狠躁夜夜躁2014| 欧美日韩另类在线| 亚洲综合在线中文字幕| 成人福利视频网| 亚洲综合最新在线| 欧美在线xxx| 亚洲综合社区网| 国产激情视频一区| 91亚洲人电影| 中文字幕亚洲欧美一区二区三区| 久久亚洲成人精品| 亚洲精品白浆高清久久久久久| 国产在线视频91| 久久免费在线观看| 日韩精品免费综合视频在线播放| 国产mv免费观看入口亚洲| 91av在线播放视频| 日本精品一区二区三区在线播放视频| 亚洲最新在线视频| 国产国语videosex另类| 日韩激情视频在线播放| 欧美黑人性猛交| 一区二区日韩精品| 精品高清美女精品国产区| 国产热re99久久6国产精品| 欧美专区第一页| 久久91亚洲精品中文字幕奶水| 中文字幕视频一区二区在线有码| 久久精品在线播放| 中文字幕自拍vr一区二区三区| 亚洲精品福利视频| 成人国产在线激情| 欧美日韩国产专区| 日韩中文字幕免费视频| 亚洲a一级视频| 国产精品美女在线观看| 亚洲国产精品久久久久秋霞蜜臀| 成人免费xxxxx在线观看| 久久精品中文字幕免费mv| 日韩免费不卡av| 亚洲美女久久久| zzjj国产精品一区二区| 91精品91久久久久久| 亚洲人成电影网站色| 国产精品视频yy9099| 久久国产精品久久久久| 欧美激情一区二区三区成人| 国产精品91一区| 亚洲成人久久一区| 91免费看片网站| 亚洲国产一区自拍| 国产精品久久久久久久久男| 日韩欧亚中文在线| 国产精品电影久久久久电影网| 亚洲综合小说区| 精品视频在线观看日韩| 久久久av免费| 91精品中文在线| 青青久久av北条麻妃黑人| 日韩免费在线播放| 日韩高清不卡av| 精品久久久久久国产| 色av中文字幕一区| 久久久国产精品一区| 亚洲肉体裸体xxxx137| 久久伊人精品视频| 久久综合色88| 欧美性猛交xxxx免费看漫画| 欧美一乱一性一交一视频| 韩国精品久久久999| 国产一区二区丝袜| 亚洲无亚洲人成网站77777| 日韩av在线免费观看| 亚洲精品久久久久国产| 久色乳综合思思在线视频| 91国内产香蕉| 亚洲国产成人久久| 欧美大片在线免费观看| 欧美精品videossex88| 国产精品成人一区二区三区吃奶| 久久人人爽人人爽人人片av高清| 欧美视频一区二区三区…| 久久久久久久久久亚洲| 欧美性生交大片免费| 国产精品白嫩初高中害羞小美女| 91精品国产高清久久久久久| 亚洲日本成人网| 亚洲专区在线视频| 中文字幕亚洲欧美日韩高清| 久久久久久久久久久成人| 国产日韩欧美91| 亚洲影视中文字幕| 91久久久精品| 欧美老女人xx| 国产主播喷水一区二区| 一区三区二区视频| 色婷婷av一区二区三区久久| 亚洲人成电影在线观看天堂色| 亚洲一区二区免费在线| 美女啪啪无遮挡免费久久网站| 国产精品草莓在线免费观看| 国产精品黄页免费高清在线观看| 国产精品久久久久久久9999| 日韩av一区二区在线| 92国产精品久久久久首页|