【问题标题】:Can I create an IBM Watson Conversation client application in Javascript without using Node.js?我可以在不使用 Node.js 的情况下使用 Javascript 创建 IBM Watson Conversation 客户端应用程序吗?
【发布时间】:2018-09-11 15:02:22
【问题描述】:

我能否在不使用 Node.js 的情况下使用 Javascript 创建 IBM Watson Conversation 客户端应用程序?我正在使用的 ERP 软件不允许使用 Node.js。对 Watson 的 POST 请求在纯 JavaScript 中会是什么样子?我看到我需要一些用户/密码凭据,即 POST URL。但是如何发送 Watson 服务数据?数据对象需要是什么样的?所有 API 文档都使用 Node。

【问题讨论】:

    标签: ibm-watson watson-conversation


    【解决方案1】:

    只要您有某种在服务器上运行 javascript 的方法,您就可以使用 javascript 向 IBM Watson 发出请求,因为对 Watson 的 POST 请求必须使用代理在服务器端运行。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        如果您遵循此处的 CURL 文档,我相信您可以: https://www.ibm.com/watson/developercloud/assistant/api/v1/curl.html?curl#message

        curl -X POST -u "{username}":"{password}" --header "Content-Type:application/json" -- 
        data "{\"input\": {\"text\": \"Hello\"}}" 
        "https://gateway.watsonplatform.net/assistant/api/v1/workspaces/9978a49e-ea89-4493- 
        b33d-82298d3db20d/message?version=2018-07-10"
        

        在以下请求中,确保您提供在对前一个请求的响应中返回的上下文 JSON 这是(第一个)响应的示例

        {
          "intents" : [ {
            "intent" : "hello",
            "confidence" : 0.9755029201507568
          } ],
          "entities" : [ ],
          "input" : {
            "text" : "Hello"
          },
          "output" : {
            "generic" : [ {
              "response_type" : "text",
              "text" : "Hello! What can I do for you?"
            } ],
            "text" : [ "Hello! What can I do for you?" ],
            "nodes_visited" : [ "greeting" ],
            "log_messages" : [ ]
          },
          "context" : {
            "conversation_id" : "a96ec62f-773c-4e84-8be9-f9dbca9f83d0",
            "system" : {
              "dialog_stack" : [ {
                "dialog_node" : "root"
              } ],
              "dialog_turn_counter" : 1,
              "dialog_request_counter" : 1,
              "_node_output_map" : {
                "greeting" : {
                  "0" : [ 0, 0 ]
                }
              },
              "branch_exited" : true,
              "branch_exited_reason" : "completed"
            }
          }
        }
        

        【讨论】:

        • 如何在浏览器中执行此操作而不向最终用户公开凭据?
        • @MarkMeyer,要隐藏您需要代理/中间人的凭据。 IBM 有 API Connect,它用密钥替换了凭证。该密钥在 javascript 中仍然可见,但您可以通过此代理仅公开消息端点(而不是修改助手的所有其他操作)来最大限度地减少“滥用”。如果您的 ERP 系统允许执行服务器端代码,这也可能是代理/中间人...
        • 另外,我相信 CURL 是一个仅限 PHP 的服务。我正在使用的 ERP 只允许使用普通的 javascript。
        • 好的,我可以使用 ERP 中的代理服务器并发送 HTTP Post 请求。现在我没有收到 CORS 错误,但我仍然收到 403 Forbidden 错误。
        • 我想通了。 HTTP Post 请求的格式不正确。我没有包含 URL 的“/message?version=xxxx”部分。答案是肯定的。 ERP 允许服务器端 javascript,因此它可以调用 IBM Watson。客户端 javascript 不能。
        猜你喜欢
        • 2020-07-11
        • 1970-01-01
        • 2016-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-22
        • 1970-01-01
        • 2015-06-15
        相关资源
        最近更新 更多