国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

小程序接入客服消息,客服消息轉發到網頁版客服工具。

Lycheeee / 1312人閱讀

摘要:小程序接入客服消息消息推送配置填寫等。特別要注意的是數據格式的選擇為了后續其他信息能夠轉發回微信自有網頁版客服消息平臺,建議選擇格式。

小程序接入客服消息 1、消息推送配置

填寫URL、Token等。

特別要注意的是:數據格式的選擇;

為了后續其他信息能夠轉發回微信自有網頁版客服消息平臺,建議選擇xml格式。
json格式現在還有bug(2018.3.5),

bug主要原因返回的頭部不符合http標準。
返回json格式header頭應該是

Content-Type:application/json,

而微信的選json還是

Content-Type:text/xml,
2、代碼如下,直接改改就能用(這里用的php)
checkSignature()) {
            echo $echoStr;
            exit;
        }
    }
    
    public 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 send($data){
        $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$this->getAccessToken();
        $data = urldecode(json_encode($data));
        $this->curl_post($url,$data);
    }
    
    //xml數據轉數組
    public function xml2Array($contents = NULL, $encoding = "UTF-8", $get_attributes = 1, $priority = "tag"){
        if (!$contents) 
        {
            return array();
        }
        if (!function_exists("xml_parser_create"))
        {
            return array ();
        }
        $parser = xml_parser_create("");
        xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $encoding);
        xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
        xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
        xml_parse_into_struct($parser, trim($contents), $xml_values);
        xml_parser_free($parser);
        if (!$xml_values)
            return array(); 
        $xml_array = array ();
        $parents = array ();
        $opened_tags = array ();
        $arr = array ();
        $current = & $xml_array;
        $repeated_tag_index = array (); 
        foreach ($xml_values as $data)
        {
            unset ($attributes, $value);
            extract($data);
            $result = array ();
            $attributes_data = array ();
            if (isset ($value))
            {
                if ($priority == "tag")
                    $result = trim($value);
                else
                    $result["value"] = trim($value);
            }
            if (isset ($attributes) && $get_attributes) {
                foreach ($attributes as $attr => $val)
                {
                    if ($priority == "tag")
                        $attributes_data[$attr] = $val;
                    else
                        $result["attr"][$attr] = $val; //Set all the attributes in a array called "attr"
                }
            }
            if ($type == "open")
            { 
                $parent[$level -1] = & $current;
                if (!is_array($current) || (!in_array($tag, array_keys($current)))) {
                    $current[$tag] = $result;
                    if ($attributes_data)
                        $current[$tag . "_attr"] = $attributes_data;
                    $repeated_tag_index[$tag . "_" . $level] = 1;
                    if (isset($tag) && $tag && isset($current[$tag])) {
                        $current = & $current[$tag];
                    }
                }
                else
                {
                    if (isset ($current[$tag][0]))
                    {
                        $current[$tag][$repeated_tag_index[$tag . "_" . $level]] = $result;
                        $repeated_tag_index[$tag . "_" . $level]++;
                    }
                    else
                    { 
                        $current[$tag] = array (
                            $current[$tag],
                            $result
                        ); 
                        $repeated_tag_index[$tag . "_" . $level] = 2;
                        if (isset ($current[$tag . "_attr"]))
                        {
                            $current[$tag]["0_attr"] = $current[$tag . "_attr"];
                            unset ($current[$tag . "_attr"]);
                        }
                    }
                    $last_item_index = $repeated_tag_index[$tag . "_" . $level] - 1;
                    $current = & $current[$tag][$last_item_index];
                }
            }
            elseif ($type == "complete")
            {
                if (!isset ($current[$tag]))
                {
                    $current[$tag] = $result;
                    $repeated_tag_index[$tag . "_" . $level] = 1;
                    if ($priority == "tag" && $attributes_data) {
                        $current[$tag . "_attr"] = $attributes_data;
                    }
                }
                else
                {
                    if (isset ($current[$tag][0]) && is_array($current[$tag])) {
                        $current[$tag][$repeated_tag_index[$tag . "_" . $level]] = $result;
                        if ($priority == "tag" && $get_attributes && $attributes_data) {
                            $current[$tag][$repeated_tag_index[$tag . "_" . $level] . "_attr"] = $attributes_data;
                        }
                        $repeated_tag_index[$tag . "_" . $level]++;
                    }
                    else
                    {
                        $current[$tag] = array (
                            $current[$tag],
                            $result
                        ); 
                        $repeated_tag_index[$tag . "_" . $level] = 1;
                        if ($priority == "tag" && $get_attributes) {
                            if (isset ($current[$tag . "_attr"]) && is_array($current[$tag]))
                            { 
                                $current[$tag]["0_attr"] = $current[$tag . "_attr"];
                                unset ($current[$tag . "_attr"]);
                            }
                            if ($attributes_data)
                            {
                                $current[$tag][$repeated_tag_index[$tag . "_" . $level] . "_attr"] = $attributes_data;
                            }
                        }
                        $repeated_tag_index[$tag . "_" . $level]++; //0 and 1 index is already taken
                    }
                }
            }
            elseif ($type == "close")
            {
                $current = & $parent[$level -1];
            }
        }
        return ($xml_array);
    }



    //獲取accesstoken
    public function getAccessToken() {
        $tokenFile = "access_token.txt";
        $data = json_decode(file_get_contents($tokenFile,FILE_USE_INCLUDE_PATH));
        //accesstoken有效期是7200秒,這里用到的文件緩存
        //注意:文件權限問題
        if (!$data->expire_time || $data->expire_time < time()) {
          
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".self::APP_ID."&secret=".self::APP_SECRET;
            
            $res =  json_decode(file_get_contents($url));
            if($res) {
                $arr = array();
                $access_token = $res->access_token;
                $arr["expire_time"] = time() + 7000;
                $arr["access_token"] = $access_token;
                $fp = fopen($tokenFile, "w");
                fwrite($fp, json_encode($arr));
                fclose($fp);
            }
        } else {
            $access_token = $data->access_token;
        }
        
        return $access_token;
    }
    //post發送json數據
    public function curl_post($url,$post_data){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        $res = curl_exec($ch);
        
        if(!$res){
            throw new Exception("發送消息失敗:".curl_error($ch));
        }
        curl_close($ch);
    }

    

  
};


$wechatObj = new wechatAPI();

//注意:第一步驗證時打開,驗證完成之后就可以注釋了
// $wechatObj->isValid();

if($wechatObj->checkSignature() === true){

    $xmlstring = file_get_contents("php://input");
    $accept_info = $wechatObj->xml2Array($xmlstring)["xml"];
    
    if($accept_info){
        $ToUserName = $accept_info["ToUserName"];
        $FromUserName = $accept_info["FromUserName"];
        $CreateTime = $accept_info["CreateTime"];
        $MsgType = $accept_info["MsgType"];
        //$MsgId = $accept_info["MsgId"];
        // $Encrypt = $accept_info["Encrypt"];
        
        $data = array();
        if($MsgType == "text"){//接收文本
            
            $Content = $accept_info["Content"];//文本內容
    
            // "touser": "OPENID",
            // "msgtype": "link",
            // "link": {
            //       "title": "Happy Day",
            //       "description": "Is Really A Happy Day",
            //       "url": "URL",
            //       "thumb_url": "THUMB_URL"
            // }
            if($Content === "圖文") {
                $data["touser"] = $FromUserName;
                $data["msgtype"] = "link";
                $data["link"]["title"] = urlencode("文章標題");
                $data["link"]["description"] = urlencode("好文章要分享");
                $data["link"]["url"] = "https://segmentfault.com";
                $data["link"]["thumb_url"] = "https://static.segmentfault.com/v-5a7c12fe/global/img/logo-b.svg";
                $wechatObj->send($data);exit;
            }
            //else if 可以做好多事
            
        }else if($MsgType === "image") {//接收圖片

        }else if($MsgType === "event") {//進入客服窗口事件
            $Event = $accept_info["Event"];
            $SessionFrom = $accept_info["SessionFrom"];
            if($Event == "user_enter_tempsession") {
                $data["touser"] = $FromUserName;
                $data["msgtype"] = "text";
                $data["text"]["content"] = urlencode("您好很高興為您服務");//urlencode 解決中文亂碼問題
                $wechatObj->send($data);exit;
            }
        }
        
        echo "".$CreateTime."";
    }

}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28330.html

相關文章

  • 京東咚咚架構演進

    摘要:自從京東開始為第三方賣家提供入駐平臺服務后,咚咚也就隨之誕生了。之后開始接手了京東咚咚,并持續完善這個產品,進行了三次技術架構演進。涅槃至今年京東的組織架構發生了很大變化,從一個公司變成了一個集團,下設多個子公司。 showImg(https://segmentfault.com/img/remote/1460000009083941); 咚咚是什么?咚咚之于京東相當于旺旺之于淘寶,它...

    marser 評論0 收藏0
  • 每天服務600萬用戶不疲憊 阿里云推智能客服機器人

    摘要:在杭州云棲大會上,阿里云正式發布云小蜜一款智能會話客服機器人。阿里巴巴推出云小蜜是開放智能服務能力賦能客服行業生態的舉措。阿里巴巴于年底正式推出無線端多領域私人助理阿里小蜜,一款人工智能購物助理虛擬機器人。在2017杭州云棲大會上,阿里云正式發布云小蜜 —— 一款智能會話客服機器人。據介紹,智能客服機器人云小蜜具備36個預置的細分領域知識包,支持中文英文會話,可以7*24小時在線工作。目前,...

    leiyi 評論0 收藏0
  • 【實戰教程】使用知曉云完成程序客服消息的自動回復

    摘要:此次教程將再次帶領大家體驗消息推送,實現另一個微信消息推送的觸發器,關于自動回復小程序客服消息的。我們需要通過控制臺引擎觸發器添加創建一個觸發器,這個觸發器將幫助我們在設置好的條件被觸發的情況下運行云函數來實現用戶消息的自動回復。 在上次推送完「卡券核銷消息推送」的教程后,我們決定再多出點教程。 此次教程將再次帶領大家體驗「消息推送」,實現另一個「微信消息推送」的觸發器,關于自動回復小...

    ytwman 評論0 收藏0

發表評論

0條評論

Lycheeee

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<