国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim WeChat-Applet WeChat-Entwicklung Die Entwicklung der ?ffentlichen WeChat-Plattform bietet mehrere Kundendienstm?glichkeiten

Die Entwicklung der ?ffentlichen WeChat-Plattform bietet mehrere Kundendienstm?glichkeiten

Feb 24, 2017 pm 05:05 PM

In diesem Tutorial zur Entwicklung ?ffentlicher WeChat-Plattformen stellen wir vor, wie Sie das Entwicklungsmodell verwenden, um ein Servicesystem für mehrere Kunden zu implementieren.

Dieser Artikel ist in die folgenden drei Teile unterteilt:

Auf mehrere Kundendienstnachrichten antworten

Mehrere Kundendienstsitzungen ausl?sen

Weitere Anweisungen

1. Auf mehrere Kundendienstnachrichten antworten

Im neuen WeChat-Protokoll kann der Entwicklungsmodus auch mit dem Kundendienstsystem verbunden werden. Wenn der Entwickler Benutzern die Nutzung des Kundendienstsystems gestatten muss, muss er beim Empfang der vom Benutzer gesendeten Nachricht eine Nachricht mit dem MsgType ?transfer_customer_service“ zurückgeben. Wenn der WeChat-Server diese Nachricht empf?ngt, übertr?gt er die vom Benutzer gesendete Nachricht Diesmal und innerhalb eines bestimmten Zeitraums in der Zukunft wird die gesendete Nachricht an das Kundendienstsystem weitergeleitet.

Ein Beispiel für die zurückgegebene Nachricht ist wie folgt

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

Die Implementierung dieser Nachricht ist wie folgt

//回復(fù)多客服消息
    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;
    }

2. Ausl?sen mehrerer Kundendienstsitzungen

Wenn Benutzer Fragen stellen m?chten, stellen sie im Allgemeinen h?ufig Fragen wie ?Hallo“ und ?Sind Sie da?“

Wir verwenden diese W?rter als Trigger-Schlüsselw?rter. Wenn der Inhalt der vom Benutzer gesendeten Textnachricht diese W?rter enth?lt, werden mehrere Kundendienstnachrichten an den Benutzer zurückgegeben (der Benutzer kann keinen Inhalt auf WeChat spüren, aber Das ?ffentliche WeChat-Konto leitet dieses Mal und in Zukunft alle Nachrichten des Benutzers an den Kundendienst weiter.

Der Implementierungscode lautet wie folgt:

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

        return $result;
    }

3. Vollst?ndiger Code

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;
        }
    }

    //響應(yīng)消息
    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" =>"歡迎關(guān)注方倍工作室", "Description" =>"使用方法:\n1.發(fā)送快遞單號,例如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);
        }
        //觸發(fā)多客服模式
        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 = "    
        <![CDATA[%s]]>
        
        
        
    
";
        $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 = "
    <![CDATA[%s]]>
    
    
    
";

        $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;
    }
    
    //回復(fù)多客服消息
    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);
        }
    }
}
?>

Weitere Hinweise

1. Im Definitionsmenü werden mehrere Kundendienstmeldungen zurückgegeben, und der Benutzer kann nicht in den Status ?Mehrkundenservice“ wechseln.

2. Nach der Verwendung mehrerer Kundendienstnachrichten werden alle nachfolgenden Nachrichten für einen bestimmten Zeitraum als Kundendienstnachrichten weitergeleitet und die automatischen Antworten im ursprünglichen Entwicklungsmodus sind ungültig! ! !

Weitere Artikel zur Entwicklung der ?ffentlichen WeChat-Plattform und zum Multi-Kundenservice finden Sie auf der chinesischen PHP-Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276