从 Python v4 botframework 连接 LUIS 平台时出现问题

Issue in connecting with LUIS platform from Python v4 botframework

我正在尝试 运行 下面的 github 项目 :-

Python Core Bot

在 main_dialog.py 下面的行 (70-73) 是相关的:

# Call LUIS and gather any potential booking details. (Note the TurnContext has the response to the prompt.)
        intent, luis_result = await LuisHelper.execute_luis_query(
            self._luis_recognizer, step_context.context
        )

配置 config.py 使用 Luis 应用程序 ID、密钥和主机名

当我 运行 python 应用程序时 :- pythonapp.py

并启动聊天机器人模拟器,它无法识别 LUIS 意图,我也遇到错误。

更多错误描述,我在下面提供了link:

Chatbot v4 issue raised github

Steps 重现: 使用 Luis 应用程序 ID、密钥和主机配置 config.py。 运行 应用使用 python app.py 启动聊天机器人模拟器并使用 http://localhost:3978/api/messages url 打开机器人。 根据屏幕截图输入您的消息。

案例 1. Luis 主机 ID 配置为以 https:// 开头的值,即 config.py

中的 https://XXXX.XXXX.XXX

发生吹气错误: 请求中发生错误,ConnectionError: HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: /southcXXX.api.XXXXX.microsoft.com/luis/v2.0/ap ps/?log=true (Caused by NewConnectionError(': Failed to establish a 新连接:[Errno 11001] getaddrinfo 失败'))

情况 2. 当 luis host 配置没有 https:// 即 XXXX.XXXX.XXXX

然后 luis 意图在 main_dialog.py 中无法识别。它最终进入 didnt_understand_message 部分,即抱歉,我没听懂。请尝试在聊天机器人中以不同的方式提问(附在屏幕截图中)

# Call LUIS and gather any potential booking details. (Note the TurnContext has the response to the prompt.)
intent, luis_result = await LuisHelper.execute_luis_query(
    self._luis_recognizer, step_context.context
)

if intent == Intent.BOOK_FLIGHT.value and luis_result:
    # Show a warning for Origin and Destination if we can't resolve them.
    await MainDialog._show_warning_for_unsupported_cities(
        step_context.context, luis_result
    )

    # Run the BookingDialog giving it whatever details we have from the LUIS call.
    return await step_context.begin_dialog(self._booking_dialog_id, luis_result)

if intent == Intent.GET_WEATHER.value:
    get_weather_text = "TODO: get weather flow here"
    get_weather_message = MessageFactory.text(
        get_weather_text, get_weather_text, InputHints.ignoring_input
    )
    await step_context.context.send_activity(get_weather_message)

else:
    didnt_understand_text = (
        "Sorry, I didn't get that. Please try asking in a different way"
    )
    didnt_understand_message = MessageFactory.text(
        didnt_understand_text, didnt_understand_text, InputHints.ignoring_input
    )
    await step_context.context.send_activity(didnt_understand_message)

return await step_context.next(None)

请帮忙。 提前致谢。

此问题现已解决。 在 config.py 文件中添加了 Luis 主机格式,该文件具有导致问题的 https://。 我刚刚从 url 中删除了它,对我来说效果很好。

https://xxx.xxx.xxx - 此 Python 项目的格式错误。 xxxx.xxxx.xxx - 格式正确。