rasa:asyncio-动作正常执行时从未检索到任务异常

时间:2019-12-02 01:57:54

标签: python-3.x rasa-core

上下文

我正在使用https://rasa.com

构建聊天机器人
  1. ScoresController不会产生错误
  2. rasa data validate不会产生错误
  3. rasa train开始行动
  4. rasa run actions -vv运行助手

问题

    当我运行启用身份验证的意图时,在rasa shell -vv中出现
  • 错误
    • shell
    • asyncio - Task exception was never retrieved future: <Task finished coro=<configure_app.<locals>.run_cmdline_io() done, defined at c:\app\miniconda2\envs\my_ens\lib\site-packages\rasa\core\run.py:124> exception=TimeoutError()>
    • asyncio - Task exception was never retrieved future: <Task finished coro=<RestInput.on_message_wrapper() done, defined at c:\app\miniconda2\envs\my_envs\lib\site-packages\rasa\core\channels\channel.py:392> exception=AttributeError("'dict' object has no attribute 'split'") created at c:\app\miniconda2\envs\my_envs\lib\site-packages\rasa\core\channels\channel.py:432>
  • 该操作可以完美运行并从REST API中获取api_token

问题

当操作检索身份验证令牌并将其发送回Rasa时,为什么会出现这些错误?

文件:actions.py

AttributeError: 'dict' object has no attribute 'split'

rasa运行操作-vv

from rasa_core_sdk.forms import FormAction
from rasa_core_sdk import Action, Tracker
from rasa_core_sdk.events import SlotSet
from rasa_core_sdk.executor import CollectingDispatcher
from typing import Any, Text, Dict, List, Union
import inspect
import json
import logging
import os
import sys
sys.path.append(os.path.join(os.getcwd(), "a_submodule"))
from dunningcashflow import Transactions, Authentication


class ActionUserLogin(Action):

    def name(self) -> Text:

        logging.debug(
            "%s %s - %s",
            "="*10,
            "ActionUserLogin",
            inspect.currentframe().f_code.co_name
        )
        return "action_user_login"

    def run(
        self,
        dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]
    ) -> List[Dict[Text, Any]]:

        authentication_back_end = tracker.get_slot(
            "authentication_back_end"
        )
        authentication_api_token = tracker.get_slot(
            "authentication_api_token"
        )
        authorization = GetAuthorization(
            authentication_back_end,
            authentication_api_token
        )

        logging.info("authorization : %s", authorization)

        dispatcher.utter_message(
            authorization
        )

        if authorization is None:
            # TODO: indicate that the authorization code or the URL is incorrect
            return [SlotSet("authorization", None)]
        elif hasattr(authorization, "code"):
            return [SlotSet("authorization", authorization["code"])]
        elif hasattr(authorization, "Authorization"):
            return [SlotSet("authorization", authorization["Authorization"])]
        elif hasattr(authorization, "message"):
            return [SlotSet("authorization", authorization["message"])]
        else:
            return [SlotSet("authorization", authorization)]

def GetAuhorization(authentication_back_end, authentication_api_token):
    """
    GetAuthorization retrieves the authorization code
    from the REST API
    """

    url = BACK_ENDS[authentication_back_end]['resource']

    authentication = Authentication()

    authentication.login(api_token=authentication_api_token, url=url)

    return authentication.authorization

rasa shell -vv

2019-12-02 02:31:54.667761: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
2019-12-02 02:31:58 INFO     rasa_sdk.endpoint  - Starting action endpoint server...
c:\app\miniconda2\envs \my-envs\lib\site-packages\rasa_core_sdk\__init__.py:12: UserWarning: The 'rasa_core_sdk' package has been renamed. You should change your imports to use 'rasa_sdk' instead.
  UserWarning,
2019-12-02 02:31:58 DEBUG    root  - ========== ActionUserLogin - name
2019-12-02 02:31:58 INFO     rasa_sdk.executor  - Registered function for 'action_user_login'.
2019-12-02 02:31:58 DEBUG    root  - ========== FindBackEnds - name
2019-12-02 02:31:58 INFO     rasa_sdk.executor  - Registered function for 'find_back_ends'.
2019-12-02 02:31:58 DEBUG    root  - ========== ActionHelloWorld - name
2019-12-02 02:31:58 INFO     rasa_sdk.executor  - Registered function for 'action_hello_world'.
2019-12-02 02:31:58 INFO     root  - ========== AuthenticationLoginForm - name
2019-12-02 02:31:58 INFO     rasa_sdk.executor  - Registered function for 'authentication_form'.
2019-12-02 02:31:58 DEBUG    rasa_sdk.utils  - Using the default number of Sanic workers (1).
2019-12-02 02:32:50 DEBUG    rasa_sdk.executor  - Received request to run 'action_user_login'
2019-12-02 02:32:50 DEBUG    root  - ========== ActionUserLogin - run
2019-12-02 02:32:50 DEBUG    root  - ========== Authentication - login
2019-12-02 02:32:50 DEBUG    urllib3.connectionpool  - Starting new HTTPS connection (1): api.a_working_domain.com:443
2019-12-02 02:32:50 DEBUG    urllib3.connectionpool  - https://api.a_working_domain.com:443 "POST /creditor HTTP/1.1" 200 None
{"Authorization":"<auth_code>"}
2019-12-02 02:32:50 INFO     root  - authorization : {'Authorization': '<auth_code>'}
2019-12-02 02:32:50 DEBUG    rasa_sdk.executor  - Finished running 'action_user_login'

0 个答案:

没有答案