【问题标题】:ngrok server doesn't connect with dialogfowngrok 服务器未与对话流连接
【发布时间】:2018-09-23 15:26:13
【问题描述】:

我是聊天机器人的绝对初学者。我正在自学并继续使用 Dialog flow 开发一个非常简单的聊天机器人。我有一个 python 代码来响应我的对话流机器人的请求。我在履行中启用了“webhook”,也在“Intent”中启用。我的 ngrok url 是 http://ae3df23b.ngrok.io/。我在我的 python 代码中编写了一个函数,它响应连接 Dialog 流的 ngrok。现在的问题是它显示错误“404 not found”并且在服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。请帮帮我。提前致谢。

我的代码是

    #import necessary packages and libraries
import urllib
import os
import json
from flask import Flask
from flask import request
from flask import make_response

app=Flask(__name__)

@app.route('/webhook', methods=['POST'])

def webhook():
    req=request.get_json(silent=True, force=True)
    print("Request:")
    print(json.dumps(req, indent=4))
    res=makeWebhookResult(req)
    res=json.dumps(res, indent=4)
    print(res)
    r=make_response(res)
    r.headers['Content-Type']='application/json'
    return r

def makeWebhookResult(req):
    if req.get("result").get("action")!="interest":
        return {}
    result=req.get("result")
    parameters=result.get("parameters")
    name=parameters.get("Banknames")
    bank={'SBI':'10%', 'HDFC Bank':'9%', 'Bank of Baroda':'11', 'Federal Bank':'8.9%', 'ICICI Bank': '11.5%'}
    speech='The interest rate of '+ name + "is" + str(bank[name])
    print("Response:")
    print(speech)
    return {
    "speech":speech,
    "displayText":speech,
    "source":"BankInterestRates"
    }
if __name__ == "__main__":
    port=int(os.getenv('PORT', 80))
    print("Starting app on port %d", (port))

    app.run(debug=True, port=port, host='0.0.0.0')

【问题讨论】:

  • 你能从 Postman 或 Rest Console 中访问服务吗?
  • 在我的系统中从命令行运行
  • 您能否更新您的问题以显示您使用什么命令来启动 ngrok 以及运行 python 脚本时命令行上显示的内容?

标签: python nlp dialogflow-es chatbot ngrok


【解决方案1】:

我认为你应该使用https://ae3df23b.ngrok.io/webhook。你错过了路径。此外,使用https 并生成新的 ngrok URL 并更新履行。

【讨论】:

  • 我也试过了...但还是同样的错误@abhinav
  • 尝试将端口更改为 8080 或其他
  • 好的,我将更改端口并让您知道。每次获得新的 URL 隧道时,我已经更新了履行情况
  • 好的,我将更改端口并让您知道。每次获得新的 URL 隧道时,我已经更新了履行情况
  • 首先检查您是否能够通过邮递员或休息控制台进行通信。有一个服务器 ping 的 GET 方法
【解决方案2】:

尝试改用这种格式https://ae3df23b.ngrok.io/[replace-with-your-project-id]/us-central1/dialogflowFirebaseFulfillment

并确保您使用端口 5000 启动 ngrok 并使用“firebase serve”命令托管您的函数

【讨论】:

    猜你喜欢
    • 2018-10-09
    • 2021-02-11
    • 2019-11-12
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2019-05-23
    相关资源
    最近更新 更多