无法将 Amazon lex 集成到我的网站中

Not able to integrate Amazon lex into my website

我开发了一个 aws lex 聊天机器人。现在,我想使用 pre-built UI 组件库将我的网站集成到 EC2 实例上,作为已经可用的可嵌入 iframe在 github.This 中是它的 link:https://github.com/aws-samples/aws-lex-web-ui#iframe。下面是来自 github 的 iframe 的代码:

<html>
  <head>
    <title>My Parent Page</title>
  </head>
  <body>
    <h1>Welcome to my parent page</h1>
    <!-- loader script -->
    <script src="./lex-web-ui-loader.js"></script>
    <script>
      /*
        The loader library creates a global object named ChatBotUiLoader
        It includes the IframeLoader constructor
        An instance of IframeLoader has the load function which kicks off
        the load process
      */

      // options for the loader constructor
      var loaderOptions = {
        // you can put the chatbot UI config in a JSON file
        configUrl: './chatbot-ui-loader-config.json',

        // the full page chatbot UI that will be iframed
        iframeSrcPath: './chatbot-index.html#/?lexWebUiEmbed=true'
      };

      // The following statement instantiates the IframeLoader
      var iframeLoader = new ChatBotUiLoader.IframeLoader(loaderOptions);

      // chatbot UI config
      // The loader can also obtain these values from other sources such
      // as a JSON file or events. The configUrl variable in the
      // loaderOptions above can be used to put these config values in a file
      // instead of explicitly passing it as an argument.
      var chatbotUiConfig = {
        ui: {
          // origin of the parent site where you are including the chatbot UI
          // set to window.location.origin since hosting on same site
          parentOrigin: window.location.origin,
        },
        iframe: {
          // origin hosting the HTML file that will be embedded in the iframe
          // set to window.location.origin since hosting on same site
          iframeOrigin: window.location.origin,
        },
        cognito: {
          // Your Cognito Pool Id - this is required to provide AWS credentials
          poolId: xxx
        },
        lex: {
          // Lex Bot Name in your account
          botName: yyy
        }
      };

      // Call the load function which returns a promise that is resolved
      // once the component is loaded or is rejected if there is an error
      iframeLoader.load(chatbotUiConfig)
        .then(function () {
          console.log('iframe loaded');
        })
        .catch(function (err) {
          console.error(err);
        });
    </script>
  </body>
</html>

当我集成此代码并托管我的网站时,我只能看到“欢迎来到我的父页面”。我看不到我的 lex 组件 here.I 放置了我的 index.html 和 lex -web-ui 文件夹与两个单独的文件夹在同一目录中 files.Should 我更改了我的脚本 src 位置?我不确定我哪里错了

样本:

cd /var/www/html    
ls
index.html lex-web-ui(github folder)

问题在于此内联 javascript(在您的 html 文件中)需要 loader.js 文件才能 运行 它正在调用的一些函数。

<!-- loader script -->
<script src="./lex-web-ui-loader.js"></script>

此处的这一行告诉 html 文件在哪里可以找到 javascript 加载程序文件。文件名前的 ./ 表示该文件应与此 html 文件位于同一父文件夹中。


所以你有两个选择,都很简单:
要么
(1) 更改代码以指向实际存放 js 加载程序文件的文件夹。

(2) 将 html 文件移动到与 js 加载程序文件相同的父文件夹中。


对于第一个选项,只需将 ./ 更改为 ./lex-web-ui/

<!-- loader script -->
<script src="./lex-web-ui/lex-web-ui-loader.js"></script>

对于第二个选项,您可以随意移动文件和文件夹,只需确保 .html 文件与 loader.js 文件位于同一文件夹中即可。这样您就不需要更改任何代码。

[www]
  |
  |--[html]
       |
       |--[lex-web-ui]
              |
              |--lex-web-ui-loader.js
              |--index.html
              |--(other lex-web-ui files)

注意:做一个或另一个,不要两个都做。