您现在的位置是:网站首页> HTML&JS

chatUI Pro开发智能聊天工具

  • HTML&JS
  • 2023-06-16
  • 729人已阅读
摘要

<!DOCTYPE html>

<html>

<head>

    <meta name="renderer" content="webkit" />

    <meta name="force-rendering" content="webkit" />

    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

    <meta charset="UTF-8" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0, viewport-fit=cover" />

    <title>滴答小爱</title>

    <link rel="stylesheet" href="//g.alicdn.com/chatui/sdk-v2/0.2.4/sdk.css">

</head>

<body>

<div id="root"></div>

<script src="//g.alicdn.com/chatui/sdk-v2/0.2.4/sdk.js"></script>

<script src="//g.alicdn.com/chatui/extensions/0.0.7/isv-parser.js"></script>

<script src="js/setup.js"></script>

<script src="js/jquery-3.6.3.min.js"></script>

<script src="//g.alicdn.com/chatui/icons/0.3.0/index.js" async></script>

</body>

</html>

创建setup.js实现chatUI Pro与后端通信交换

var bot = new ChatSDK({

    config: {

        // navbar: {

        //     title: '滴答小爱'

        // },

        robot: {

            avatar: 'images/chat.png'

        },

        // 用户头像

        user: {

            avatar: 'images/user.png',

        },

        // 首屏消息

        messages: [

            {

                type: 'text',

                content: {

                    text: '您好,小爱为您服务,请问有什么可以帮您的?'

                }

            }

        ],

        // 快捷短语

        // quickReplies: [

        //     { name: '健康码颜色',isHighlight:true },

        //     { name: '入浙通行申报' },

        //     { name: '健康码是否可截图使用' },

        //     { name: '健康通行码适用范围' },

        // ],

        // 输入框占位符

        placeholder: '输入任何您想询问的问题',

    },

    requests: {

        send: function (msg) {

            if (msg.type === 'text') {

                return {

                    url: '/ask',

                    data: {

                        question: msg.content.text

                    }

                };

            }

        }

    },

    handlers: {

        /**

         *

         * 解析请求返回的数据

         * @param {object} res - 请求返回的数据

         * @param {object} requestType - 请求类型

         * @return {array}

         */

        parseResponse: function (res, requestType) {

            // 根据 requestType 处理数据

            if (requestType === 'send' && res.code==0) {

                // 用 isv 消息解析器处理数据

                $.ajaxSettings.async=false;

                var answer="";

                var isOK=false;

                while(!isOK){

                    $.get("/answer",{uuid:res.data},function(result){

                        console.log(result.data)

                        if(null != result.data){

                            isOK=true;

                            answer=result.data;

                        }

                    },"json");

                    if(!isOK){

                        sleep(5000);

                    }

                }

                $.ajaxSettings.async=true;

                return [{"_id":res.data,type:"text",content:{text:answer},position:"left"}];

            }

        },

    },

});

function sleep(n) { //n表示的毫秒数

    var start = new Date().getTime();

    while (true) {

        if (new Date().getTime() - start > n) {

            break;

        }

    }

}

bot.run();


Top