ホームページ  >  記事  >  WeChat アプレット  >  LayuiAdmin&LayIM&Thinkphp&Gateway を介したミニ プログラム用の複数の顧客サービス アクセス システムを実装する方法の例

LayuiAdmin&LayIM&Thinkphp&Gateway を介したミニ プログラム用の複数の顧客サービス アクセス システムを実装する方法の例

不言
不言オリジナル
2018-08-25 09:25:105553ブラウズ

この記事では、LayuiAdmin&LayIM&Thinkphp&Gateway を介して複数の顧客サービス アクセス システムを実装する方法の例を紹介します。必要な方は参考にしていただければ幸いです。

まずレンダリングを見てみましょう。

LayuiAdmin&LayIM&Thinkphp&Gateway を介したミニ プログラム用の複数の顧客サービス アクセス システムを実装する方法の例 実装された機能:

1. ミニ プログラムのカスタマー サービスの会話はリアルタイムで受信され、Layim にプッシュされます
2. ミニ プログラムのカスタマー サービスの会話は Layim を通じてリアルタイムで応答できます
3.サービス会話を追加できます
4、オンラインカスタマーサービスは会話を順番に割り当てます。カスタマーサービスがオンラインでない場合、メッセージに従って処理されます
5. 自動返信機能

実装ロジック:

のopenidを使用します。 WeChat 訪問者を一意の識別子として、新しい一般ユーザーを作成し、カスタマー サービスの友人にします。バックエンド TP は、メッセージの受信と転送の中間層として機能します。

実装手順 (ゲートウェイ部分に注目):

1. TP をインストールし、コンポーザーがワーカーとゲートウェイをインストールします

2. TP のルート ディレクトリに server.php を作成します (他の名前でも構いません) #!/usr/ bin/env php

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

3. tp のアプリケーション ディレクトリにモジュール チャットを作成し、Events の名前空間を除いて、その他は少し変更する必要はありません。デフォルトのゲートウェイ

class Run
{
    public function __construct()
    {
        //注册register
        new Register(&#39;text://0.0.0.0:1236&#39;);
        //初始化 bussinessWorker 进程
        $worker = new BusinessWorker();
        $worker->name = &#39;WebIMBusinessWorker&#39;;
        $worker->count = 4;
        $worker->registerAddress = &#39;127.0.0.1:1236&#39;;
        //设置处理业务的类,此处制定Events的命名空间
        $worker->eventHandler = &#39;\app\chat\controller\Events&#39;;
        // 初始化 gateway 进程
        $gateway = new Gateway("websocket://0.0.0.0:8282");
        $gateway->name = &#39;WebIMGateway&#39;;
        $gateway->count = 4;
        $gateway->lanIp = &#39;127.0.0.1&#39;;
        $gateway->startPort = 2900;
        $gateway->registerAddress = &#39;127.0.0.1:1236&#39;;
        $gateway->pingInterval = 55;
        $gateway->pingNotResponseLimit = 1;
        $gateway->pingData = &#39;{"emit":"ping"}&#39;;//此处为心跳包数据
        //运行所有Worker;
        if(!defined(&#39;GLOBAL_START&#39;))
        {
            Worker::runAll();
        }
    }
}
を使用することをお勧めします

4. Event.php のコントローラー クラスを作成します。ここでは、onmessage メソッドについて簡単に説明します。 jwt 検証を使用しているため、ここでは多くの回り道があります。最初のレベルでは、最初にトークンを介してlayuiadmin の uid を見つけ、次に uid を介してカスタマー サービス ID を見つけ、そのカスタマー サービス ID を client_id にバインドします。 Gateway::sendToUid を直接使用して、バックエンド PHP にメッセージをプッシュできます。

5. バックエンドでは、GatewayClient を使用して、メッセージをプッシュする必要がある場所にメッセージをアクティブにプッシュします。

これはメッセージを受信するプロセス全体です: WeChat オープン インターフェイスがメッセージ プッシュ インターフェイス URL をリクエストします→ php がデータを取得して保存し、GatewayClient を通じて指定された顧客サービスにアクティブにプッシュします→ フロントエンドがデータを取得してレンダリングします実際、このイベントでは php で 2 つのことだけを実行しました。1 つはハートビートの検出、もう 1 つはログイン後のカスタマー サービス ID と client_id のバインドです。

メッセージを送信するには、WebSocket を使用せずに、ajax http メソッドを使用します。

未実装の機能:

メッセージステータスの処理、未読/既読

非表示/オンライン

現在はテキストメッセージのみで、写真やカードメッセージはありません

関連する推奨事項:

WeChatアプレットロボット自動顧客サービス機能

WeChatパブリックプラットフォーム開発:マルチ顧客サービスインターフェースの説明

以上がLayuiAdmin&LayIM&Thinkphp&Gateway を介したミニ プログラム用の複数の顧客サービス アクセス システムを実装する方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。