• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

        如何通過LayuiAdmin&LayIM&Thinkphp&Gateway完成小程序多客服接入系統(tǒng)的例子

        如何通過LayuiAdmin&LayIM&Thinkphp&Gateway完成小程序多客服接入系統(tǒng)的例子

        更新時間:2025-09-20 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

        微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一...
        微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創(chuàng)新,經(jīng)過將近兩年的發(fā)展,已經(jīng)構(gòu)造了新的小程序開發(fā)環(huán)境和開發(fā)者生態(tài)。
        本篇文章給大家?guī)淼膬?nèi)容是關(guān)于如何通過LayuiAdmin&LayIM&Thinkphp&Gateway實現(xiàn)小程序多客服接入系統(tǒng)的例子,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

        先看下效果圖吧。

        006WbsF3gy1fuh4te7eb8j31ha0q8qa3.jpg實現(xiàn)的功能:

        1、小程序客服對話實時接收并推送到Layim
        2、通過Layim可以實時回復小程序客服對話
        3、可以添加多個小程序、可以添加多個客服
        4、在線客服順序分配對話,客服不在線則按照留言處理
        5、自動回復功能

        實現(xiàn)邏輯:

        以微信訪客的openid作為唯一標識符,新建一個layim用戶并將其作為客服的好友。后端TP作做消息接收和轉(zhuǎn)發(fā)的中間層。

        實現(xiàn)步驟(重點說gateway部分):

        1、安裝TP,composer安裝workerman、gateway

        2、在tp的根目錄創(chuàng)建server.php(其他名字都行)#!/usr/bin/env php

        <?php
        ini_set('display_errors', 'on');
        if(strpos(strtolower(PHP_OS), 'win') === 0)
        {
            exit("start.php not support windows.\n");
        }
        // 檢查擴展
        if(!extension_loaded('pcntl'))
        {
            exit("Please install pcntl extension. See http://doc3.workerman.net/appendices/install-extension.html\n");
        }
        if(!extension_loaded('posix'))
        {
            exit("Please install posix extension. See http://doc3.workerman.net/appendices/install-extension.html\n");
        }
        define('APP_PATH', __DIR__ . '/application/');//如果修改了也要跟著修改,tp的application
        define('BIND_MODULE','chat/Run');//這個位置是你唯一要自定義的
        // 加載框架引導文件
        require __DIR__ . '/thinkphp/start.php';

        3、在tp的application目錄下創(chuàng)建一個模塊chat,創(chuàng)建Run的控制器,這里除了Events的命名空間,其他基本不需要改動,改動端口有點坑,建議就用gateway默認的

        class Run
        {
            public function __construct()
            {
                //注冊register
                new Register('text://0.0.0.0:1236');
                //初始化 bussinessWorker 進程
                $worker = new BusinessWorker();
                $worker->name = 'WebIMBusinessWorker';
                $worker->count = 4;
                $worker->registerAddress = '127.0.0.1:1236';
                //設置處理業(yè)務的類,此處制定Events的命名空間
                $worker->eventHandler = '\app\chat\controller\Events';
                // 初始化 gateway 進程
                $gateway = new Gateway("websocket://0.0.0.0:8282");
                $gateway->name = 'WebIMGateway';
                $gateway->count = 4;
                $gateway->lanIp = '127.0.0.1';
                $gateway->startPort = 2900;
                $gateway->registerAddress = '127.0.0.1:1236';
                $gateway->pingInterval = 55;
                $gateway->pingNotResponseLimit = 1;
                $gateway->pingData = '{"emit":"ping"}';//此處為心跳包數(shù)據(jù)
                //運行所有Worker;
                if(!defined('GLOBAL_START'))
                {
                    Worker::runAll();
                }
            }
        }

        4、創(chuàng)建Event.php的控制器類,Event.php是主要的邏輯處理類,這里我只簡單說下我的onmessage方法:

        public static function onMessage($client_id, $data){
                $message = json_decode($data, true);
                $message_type = $message['emit'];
                
                switch($message_type) {
                    case 'init':
                        // uid
                        //根據(jù)token獲取uid
                        $tokenCache =   new TokenCache();
                        $user   =   $tokenCache->where('token','eq',$message['token'])->order('id DESC')->find();
                        if(!$user->uid||$user->date+$user->lifetime<time()){
                            self::onClose($client_id);
                        }
                        $wechatMsgUser  =   new WechatMsgUser();
                        $msgUser    =    $wechatMsgUser->where('openid','eq',$user->uid)->where('type','eq',0)->find();
                        if(!$msgUser->id){
                            self::onClose($client_id);
                        }
                        //*客服上線,設置數(shù)據(jù)庫狀態(tài)字段為在線狀態(tài)
                        $msgUser->status    =   1;
                        $msgUser->save();
                        $uid    =   $msgUser->id;
                        // 設置session,這個$_SESSION我是為了下面的onclose方法里設置客服離線狀態(tài)
                        $_SESSION = [
                            'id'       => $uid,
                        ];
                        // 將當前$client_id與uid綁定
                        Gateway::bindUid($client_id, $uid);
                        $msgService = new MsgService();
                        $msgService->checkLeavedMessage($uid);
                        return;
                        break;
                    case 'ping':
                        $pingData=[
                            'emit'=>'pong',
                            'data'=>$client_id
                        ];
                        Gateway::sendToClient($client_id, json_encode($pingData));
                        return;
                    default:
                        echo "unknown message $data" . PHP_EOL;
                }
            }

        這里因為我用的是jwt驗證,所以多繞了一層,先通過token找到layuiadmin的uid,再通過uid找到客服ID,把客服ID和client_id綁定,這樣在后端php里就可以直接使用gateway::sendToUid來推送消息了。

        5、tp后端,在需要推送消息的地方使用GatewayClient來主動推送消息。

        這是接收消息的整個流程:微信開放接口請求消息推送接口url→php拿到數(shù)據(jù),存庫,通過GatewayClient主動推送到指定客服→前端拿到數(shù)據(jù)通過layim渲染到視圖

        其實這個Event.php我只做了兩件事,一個是心跳檢測,另一個就是登陸后將客服的ID和client_id綁定。

        發(fā)送消息我用的是ajax的http方式發(fā)送,沒有使用websocket。

        未能實現(xiàn)的功能:

        消息狀態(tài)的處理,未讀/已讀

        layim隱身/在線

        目前只有文字消息,沒有圖片和卡片消息

        相關(guān)推薦:

        微信小程序機器人自動客服功能

        微信公眾平臺開發(fā):多客服接口說明

        以上就是如何通過LayuiAdmin&LayIM&Thinkphp&Gateway實現(xiàn)小程序多客服接入系統(tǒng)的例子的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


        小程序是一種不需要下載安裝即可使用的應用,它實現(xiàn)了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 美女黄色免费网站| 亚洲va久久久噜噜噜久久男同| 亚洲成A人片在线观看中文| 永久黄色免费网站| 免费鲁丝片一级在线观看| 国产成人啪精品视频免费网| 在线观看免费人成视频| 啊v在线免费观看| 亚洲精品在线观看视频| 久久亚洲色WWW成人欧美| 亚洲免费在线视频观看| 亚洲天堂视频在线观看| 亚洲欧美国产欧美色欲 | 久久成人无码国产免费播放| 人人鲁免费播放视频人人香蕉| 亚洲中久无码不卡永久在线观看| 亚洲精品乱码久久久久久不卡 | 黄色免费在线观看网址| 国产在线观看免费av站| 亚洲AV无码AV吞精久久| 免费精品久久天干天干| 巨胸喷奶水视频www网免费| 国产一卡2卡3卡4卡无卡免费视频| 国产又黄又爽又猛的免费视频播放| 亚洲av中文无码乱人伦在线r▽| 亚洲女子高潮不断爆白浆| 日韩视频免费在线观看| 亚洲 自拍 另类小说综合图区| 久久精品国产亚洲AV无码娇色| 国产成人va亚洲电影| 国产精品视频免费| 亚洲色中文字幕无码AV| 色欲色欲天天天www亚洲伊| 无码av免费毛片一区二区| 亚洲福利视频一区| GOGOGO免费观看国语| 曰批全过程免费视频免费看 | 最近中文字幕免费mv在线视频| 亚洲伊人成无码综合网 | 美女免费精品高清毛片在线视| 全免费毛片在线播放|