jQuery Ajax チャットボットの実装事例

jQuery Ajax チャットボットの実装事例

チャットボットは多くの手作業を省くことができ、顧客サービス、天気予報対応など、さまざまな状況で使用できます。この記事では、jQuery Ajax チャットボットを次のように詳しく紹介します。

'

実装手順:

1. ケースのコード構造を整理する

a. ページのUIレイアウトを整理する

b. ビジネスコードをchat.jsに抽出する

c. resetui() の機能を理解する: スクロールバーの位置をリセットする

<link rel="スタイルシート" href="css/reset.css" rel="外部nofollow" />
<link rel="スタイルシート" href="css/index.css" rel="外部nofollow" />
<script src="js/jquery-1.12.4.min.js"></script>
<script src="js/jquery-ui.min.js"></script>
<script src="js/jquery.mousewheel.js"></script>
        <div class="wrap">
      <!--ヘッダー領域-->
      <div class="header">
        <h3>シャオシャンのクラスメイト</h3>
        <img src="images/person01.png" alt="アイコン" />
      </div>
 
      <!-- チャットコンテンツエリア-->
      <div class="main">
        <ul class="トークリスト" style="top: 0px" id="トークリスト">
          <li class="left_word">
            <img src="images/person01.png" /> <span>こんにちは、最近会えなくて寂しかったですか? </span>
          </li>
          <!-- <li class="right_word">
            <img src="images/person02.png" /> <span>こんにちは</span>
          </li> -->
        </ul>
        <div class="drag_bar" style="display: none;">
            <div
              クラス="drager ui-draggable ui-draggable-handle"
              スタイル="表示: なし; 高さ: 412.628px;"
            </div>
          </div>
      </div>
 
      <!-- 音声を再生 -->
      <audio src="" id="voice" 自動再生 style="display: none;"></audio>
 
      <!-- メッセージ編集領域-->
      <div class="footer">
          <img src="images/person02.png" alt="">
          <input type="text" placeholder="何か言ってください..." class="input_txt" id="ipt" />
          <input type="button" value="送信" class="input_sub" id="btnSend">
      </div>
    </div>
 
    <!-- ページスクロールを実装する -->
    <script src="js/scroll.js"></script>
    <script src="js/chat.js"></script>

インデックス.css、

体 {
    フォントファミリ: 'Microsoft YaHei';
}
 
。包む {
    位置: 固定;
    幅: 450ピクセル;
    左: 50%;
    左マージン: -225px;
    上: 20px;
    下: 20px;
    境界線: 1px 実線 #ebebeb;
    背景色: #fff;
    境界線の半径: 10px;
    ボックスの影: 0 0 30px rgba(0, 0, 0, 0.1);
    オーバーフロー: 非表示;
}
 
.ヘッダー{
    高さ: 55px;
    背景: linear-gradient(90deg, rgba(246, 60, 47, 0.6), rgba(128, 58, 242, 0.6));
    オーバーフロー: 非表示;
}
 
.ヘッダー h3 {
    色: #faf3fc;
    行の高さ: 55px;
    フォントの太さ: 標準;
    フロート: 左;
    文字間隔: 2px;
    左マージン: 25px;
    フォントサイズ: 18px;
    テキストシャドウ: 0px 0px 5px #944846;
}
 
.ヘッダー画像{
    フロート: 右;
    マージン: 7px 25px 0 0;
    境界線の半径: 20px;
    ボックスの影: 0 0 5px #f7f2fe;
}
 
。主要 {
    位置: 絶対;
    左: 0;
    右: 0;
    上: 55px;
    下: 55px;
    背景色: #f4f3f3;
    ボックスのサイズ: 境界線ボックス;
    パディング: 10px 0;
    オーバーフロー: 非表示;
}
 
.トークリスト{
    位置: 絶対;
    幅: 100%;
    左: 0px;
    上: 0px;
}
 
.トークリスト li {
    オーバーフロー: 非表示;
    マージン: 20px 0px 30px;
}
 
.talk_list .left_word 画像 {
    フロート: 左;
    左マージン: 20px;
}
 
.talk_list .left_word span {
    フロート: 左;
    背景色: #fe9697;
    パディング: 10px 15px;
    最大幅: 290px;
    境界線の半径: 12px;
    フォントサイズ: 16px;
    色: #fff;
    左マージン: 13px;
    位置: 相対的;
    行の高さ: 24px;
}
 
.talk_list .left_word span:before {
    コンテンツ: '';
    位置: 絶対;
    左: -8px;
    上: 3px;
    幅: 13px;
    高さ: 12px;
    背景: url('../images/corner01.png') 繰り返しなし;
}
 
.talk_list .right_word 画像 {
    フロート: 右;
    右マージン: 20px;
}
 
.talk_list .right_word span {
    フロート: 右;
    背景色: #fff;
    パディング: 10px 15px;
    最大幅: 290px;
    境界線の半径: 12px;
    フォントサイズ: 16px;
    色: #000;
    右マージン: 13px;
    位置: 相対的;
    行の高さ: 24px;
}
 
.talk_list .right_word span:before {
    コンテンツ: '';
    位置: 絶対;
    右: -8px;
    上: 3px;
    幅: 13px;
    高さ: 12px;
    背景: url('../images/corner02.png') 繰り返しなし;
}
 
.ドラッグバー{
    位置: 絶対;
    右: 0px;
    上: 0px;
    背景色: #fff;
    高さ: 100%;
    幅: 6px;
    ボックスのサイズ: 境界線ボックス;
    下境界線: 1px 実線 #f4f3f3;
}
 
.drager {
    位置: 絶対;
    左: 0px;
    上: 0px;
    背景色: #cdcdcd;
    高さ: 100px;
    幅: 6px;
    境界線の半径: 3px;
    カーソル: ポインタ;
}
 
.フッター{
    幅: 100%;
    高さ: 55px;
    左: 0px;
    下: 0px;
    背景色: #fff;
    位置: 絶対;
}
 
.footer画像{
    フロート: 左;
    マージン: 8px 0 0 20px;
}
 
.input_txt {
    フロート: 左;
    幅: 270ピクセル;
    高さ: 37px;
    境界線: 0px;
    背景色: #f4f3f3;
    マージン: 9px 0 0 20px;
    境界線の半径: 8px;
    パディング: 0px;
    アウトライン: なし;
    テキストインデント: 15px;
}
 
.input_sub {
    フロート: 左;
    幅: 70ピクセル;
    高さ: 37px;
    境界線: 0px;
    背景色: #fe9697;
    マージン: 9px 0 0 15px;
    境界線の半径: 8px;
    パディング: 0px;
    アウトライン: なし;
    色: #fff;
    カーソル: ポインタ;
}

効果は以下のとおりです。

2. ユーザー入力をチャットウィンドウにレンダリングする

チャット.js、

    //スクロールバーの位置をリセットします resetui();
 
    //マウスクリックイベントを送信ボタンにバインドします$("#btnSend").on('click', function () {
        let text = $("#ipt").val().trim(); //送信するコンテンツ//送信するコンテンツが空かどうかを判定します if (text.length <= 0) {
            $("#ipt").val(''); を返します。
        }
 
        //ユーザーがチャット内容を入力した場合、チャット内容をページに追加して表示します $("#talk_list").append(`<li class="right_word"><img src="images/person02.png" /> <span>${text}</span></li>`);
        
        //送信後に入力ボックスをクリアします$("#ipt").val('');
        
        //スクロールバーの位置をリセットします resetui();
    }); 

3. チャットメッセージを取得するためのリクエストを開始する

チャット.js、

    //サーバーからデータを要求する関数を定義します -- チャットボット関数から返されたデータを取得します getMsg(text){
        $.ajax({
            メソッド: 'GET'、
            URL: 'http://www.liulongbin.top:3006/api/robot',
            data:{// ユーザーが送信したメッセージをサーバーに送信する。spoke: text
            },
            成功: function(res){
                // コンソールログ(res);
 
                //リクエストが成功したかどうかを判断する data.info.text
                if(res.message === "成功"){
                    // サーバーから返されたチャット メッセージを受信します。let msg = res.data.info.text;
                    // コンソールログ(メッセージ);
 
                    // サーバーから返されたチャット メッセージをチャット インターフェイスにレンダリングします $("#talk_list").append(`<li class="left_word"><img src="images/person01.png" /> <span>${msg}</span></li>`);
                    //スクロールバーの位置をリセットします resetui();
                }
            }
        })
    } 

4. ロボットのチャット内容を音声に変換する

5. <audio> でオーディオを再生する

    //ロボットのチャット内容を音声に変換する function getVoice(text){
        $.ajax({
            メソッド: 'GET'、
            URL: 'http://www.liulongbin.top:3006/api/synthesize',
            データ: {
                テキスト: テキスト
            },
            成功: function(res){
                // コンソールログ(res);
 
                //リクエストが成功したかどうかを判断します if (res.status === 200) {
                    //音声を再生$("#voice").attr("src",res.voiceUrl);
                }
            }
        })
    } 

6. Enterキーを使ってメッセージを送信します

    //テキスト入力ボックスにイベントをバインドします。Enter キーが押されて放されたときにチャットコンテンツを自動的に送信します。$("#ipt").on('keyup',function(e){
        // console.log(e.keyCode); // 13
 
        //ユーザーがEnterキーを押したかどうかを判定します if(e.keyCode === 13){
            //ボタン要素のクリック関数を呼び出してそのコンテンツを送信します $("#btnSend").click();
        }
    }) 

jQuery を使用した Ajax チャットボットの実装の完全なケースに関するこの記事はこれで終わりです。より関連性の高い jQuery Ajax チャットボットのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • jQuery チャットボットの実装

<<:  MySQL query_cache_type パラメータと使用方法の詳細

>>:  HTML コメント HTML 内のテキストコメントをマークするための記号

推薦する

Alibaba Cloud ECS サーバーでポート 8080 を開く方法

セキュリティ上の理由から、Alibaba Cloud Server ECS にはデフォルトで独自のセ...

MySQL マスタースレーブレプリケーション構成プロセス

メインライブラリの構成1. MySQLを設定する vim /etc/my.cn # ファイルに次の内...

ElementUI コンポーネント el-dropdown (落とし穴)

選択して変更: クリックすると現在の値が表示され、ページ UI が表示され、CSS スタイルが変更さ...

Windows で MySQL 5.7.17 圧縮バージョンをインストールするときに遭遇する落とし穴

まず、Windows 64 ビット用の最新の MySQL 5.7.17 コミュニティ圧縮バージョンを...

Vue が Bibibili のホームページを模倣する際の問題

エンジニアリング構造プロジェクトは2つの部分に分かれています。bilibili-apiはAPIインタ...

JavaScript で最も高速なループはどれですか?

どの for ループまたは反復子がニーズに適しているかを知ることで、アプリケーションのパフォーマンス...

WeChatアプレットの下部にあるタブバーがコンテンツをブロックする問題に対処する簡単な方法

WeChatアプレットでタブバーを設定すると、重要なコンテンツがブロックされ、iPhoneXなどの異...

MYSQL SERVER のログファイルを縮小する方法

トランザクション ログには、関連するデータベースに対する操作が記録され、データベースの回復に関連する...

Linux ファイル操作でよく使われるコマンドのまとめ

0. 新しい操作: mkdir abc #新しいフォルダを作成 touch abc.sh #新しいフ...

iframeを使用してページを呼び出すとページがキャッシュされるかどうかの簡単な分析

最近、毎日変更されるページを iframe を使用して呼び出す必要があるプロジェクトがあります。その...

JavaScript の setTimeout と setTimeinterval の使用例の説明

どちらの方法も、一定時間後に JavaScript コードを実行するために使用できますが、それぞれに...

IdeaはリモートDockerをデプロイし、ファイルを構成する

1. LinuxサーバーのDocker構成ファイルを変更する vim /usr/lib/system...

Nest.js パラメータ検証とカスタム戻りデータ形式の詳細な説明

0x0 パラメータ検証Nest.jsでは、パラメータ検証業務のほとんどをパイプライン方式で実装してい...

シンプルな HTML ビデオ プレーヤーを実装する方法

この記事では、シンプルな HTML ビデオ プレーヤーを実装する方法を紹介し、皆さんと共有します。詳...

Apache Log4j2 が核レベルの脆弱性と迅速な修正を報告

Apache Log4j2 が核レベルの脆弱性を報告し、スタックリーダーの友人たちは大騒ぎになりまし...