1

我正在使用RASA和创建一个聊天机器人Flask

我有一个奇怪的要求,对于同一个问题,我必须根据请求配置 2 个不同的响应。

在请求中有一个键customer,它可以是 1 或 0。

说我有一个问题:

what is refund policy?

如果客户提出问题(其中键值为 1)

它将返回您将在 3 天内获得退款

否则它将返回您将在 7 天内获得退款

所以我被困在如何传递这个为我的问题生成响应的customer值。handle_text

有没有办法做到这一点Rasa

我的代码:

from rasa_core.interpreter import RasaNLUInterpreter
from rasa_core.utils importEndpointConfig
from flask import FLASK, request
import json

nlu_interpreter = RasaNLUInterpreter(NLU_MODEL)
action_endpoint = EndpointConfig(url=ACTION_ENDPOINT) 
agent = Agent.load(DIALOG_MODEL, interpreter=nlu_interpreter, action_endpoint=action_endpoint)

@app.route("/chatbot", methods=["POST"])
def bot():
    data = json.loads(request.data)
    msg = data["msg"]  # the question by user
    is_customer = data["customer"]

    response = agent.handle_text(msg, sender_id=data["user_id"])

    return json.dumps(response[0]["text"])
4

1 回答 1

1

您需要在操作文件中配置该操作并运行单独的操作服务器来为您处理。

例如,在自定义方法的 run 方法中,您可以获取 customer 的 slot 值,然后根据该 slot 值,您可以返回所需的消息。

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

      customer = tracker.get_slot('customer')
      if customer:
          dispatcher.utter_message("You will get refund in 3 days.")
      else:
          dispatcher.utter_message("You will get refund in 7 days.")

文档链接:https ://rasa.com/docs/rasa/core/actions/#custom-actions

希望有帮助。

于 2019-09-19T14:15:57.923 回答