Chatbot z Pytonem : Napisanie skryptu dla własnego kanału chatbota

https://szkolazpieklarodem.pl/

Ten skrypt jest podobny do tego, czego nauczyliśmy się i napisaliśmy do tej pory, ale wymaga zastąpienia niektórych istniejących metod rasa_core, abyśmy mogli zdefiniować własną regułę uwierzytelniania API. W poniższym kodzie wykonałem podstawowe sprawdzenie ciągu w celu weryfikacji tokena. Nie jest to zalecane w przypadku systemów na poziomie produkcyjnym, więc pamiętaj, aby napisać tę część ostrożnie, jeśli budujesz chatbota dla większych systemów. Utwórz nowy plik o nazwie myown_chatbot.py i dodaj do niego następującą zawartość:

import os

from rasa_core.channels.rasa_chat import RasaChatInput

from rasa_core.agent import Agent

from rasa_core.interpreter import RasaNLUInterpreter

from rasa_core.utils import EndpointConfig

# load your trained agent

interpreter = RasaNLUInterpreter(“models/nlu/default/horoscopebot/”)

MODEL_PATH = “models/dialogue”

action_endpoint = EndpointConfig(url=”https://horoscopebot1212-actions.

herokuapp.com/webhook”)

agent = Agent.load(MODEL_PATH, interpreter=interpreter, action_endpoint=

action_endpoint)

class MyNewInput(RasaChatInput):

def _check_token(self, token):

if token == ‘mysecret’:

return {‘username’: 1234}

else:

print(“Failed to check token: {}.”.format(token))

return None

input_channel = MyNewInput(url=’https://horoscopebot1212.herokuapp.com’)

# set serve_forever=False if you want to keep the server running

s = agent.handle_channels([input_channel], int(os.environ.get(‘PORT’,

5004)), serve_forever=True)

Należy tutaj zwrócić uwagę na kilka punktów:

  • Metoda _check_token w rasa_core zasadniczo wygląda jak poniżej i powoduje wywołanie API w celu pobrania obiektu użytkownika. Wykonuje to przede wszystkim zadanie uwierzytelniania/uwierzytelniania na poziomie użytkownika. We wcześniejszej zastąpionej metodzie uproszczono jej działanie i zrozumieliśmy jej użycie.

def _check_token(self, token):

url = “{}/users/me”.format(self.base_url)

headers = {“Authorization”: token}

logger.debug(“Requesting user information from auth server {}.”

“”.format(url))

result = requests.get(url,

headers=headers,

timeout=DEFAULT_REQUEST_TIMEOUT)

if result.status_code == 200:

return result.json()

else:

logger.info(“Failed to check token: {}. “

“Content: {}”.format(token, request.data))

return None

  • Użycie własnej metody _check_token Rasy może wymagać napisania jednego interfejsu API lub usługi internetowej, która zaakceptuje żądanie i zwróci odpowiedź w określony sposób.
  • Pamiętaj o zmianie punktu końcowego serwera akcji na własny adres URL.

• Pamiętaj, że ciąg mysecret w kodzie zostanie później użyty do wywołań API.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *