I’m currently developing a chatbot and everything - at least it seems - is working fine when running directly on my machine. Today, I tried to run the same chatbot in Docker and I get a strange error.
Here’s my docker-compose.yml
services:
rasa-api:
build: ./rasa-test
ports:
- "5005:5005"
command: rasa run --enable-api
rasa-actions:
build: ./rasa-test
ports:
- "5055:5055"
command: rasa run actions
And the dockerfile
FROM python:3.6
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
The error appears when I try to POST on http://localhost:5005/webhooks/rest/webhook with the following content
{
"sender": "99",
"message": "hi"
}
When running directly on my machine, I get the expected response. However, with Docker, I’m receiving an empty array as a response and the following error appears:
PS C:\xxx\code> docker-compose up
Starting code_rasa-actions_1 ... done Starting code_rasa-api_1 ... done Attaching to code_rasa-api_1, code_rasa-actions_1
rasa-actions_1 | 2020-12-10 10:23:26 INFO rasa_sdk.endpoint - Starting action endpoint server...
rasa-actions_1 | 2020-12-10 10:23:26 INFO rasa_sdk.executor - Registered function for 'validate_info_form'.
rasa-actions_1 | 2020-12-10 10:23:26 INFO rasa_sdk.executor - Registered function for 'action_check_barcode'.
rasa-actions_1 | 2020-12-10 10:23:26 INFO rasa_sdk.executor - Registered function for 'action_check_rating'.
rasa-actions_1 | 2020-12-10 10:23:26 INFO rasa_sdk.endpoint - Action endpoint is up and running on http://localhost:5055
rasa-api_1 | 2020-12-10 10:23:27 INFO root - Starting Rasa server on http://localhost:5005
rasa-api_1 | 2020-12-10 10:23:27 INFO rasa.model - Loading model models/20201207-152250.tar.gz...
rasa-api_1 | 2020-12-10 10:23:50 INFO root - Rasa server is up and running.
rasa-api_1 | 2020-12-10 10:23:57 ERROR rasa.core.channels.rest - An exception occured while handling user message 'hi'.
rasa-api_1 | Traceback (most recent call last):
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/channels/rest.py", line 126, in receive
rasa-api_1 | metadata=metadata,
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/channels/channel.py", line 85, in handler
rasa-api_1 | await app.agent.handle_message(*args, **kwargs)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/agent.py", line 521, in handle_message
rasa-api_1 | return await processor.handle_message(message)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 98, in handle_message
rasa-api_1 | await self._predict_and_execute_next_action(message.output_channel, tracker)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 628, in _predict_and_execute_next_action
rasa-api_1 | action, prediction = self.predict_next_action(tracker)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 355, in predict_next_action
rasa-api_1 | prediction = self._get_next_action_probabilities(tracker)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 898, in _get_next_action_probabilities
rasa-api_1 | tracker, self.domain, self.interpreter
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ensemble.py", line 721, in probabilities_using_best_policy
rasa-api_1 | winning_prediction = self._best_policy_prediction(tracker, domain, interpreter)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ensemble.py", line 601, in _best_policy_prediction
rasa-api_1 | for i, p in enumerate(self.policies)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ensemble.py", line 601, in <dictcomp>
rasa-api_1 | for i, p in enumerate(self.policies)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ensemble.py", line 633, in _get_prediction
rasa-api_1 | tracker, domain, interpreter
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ted_policy.py", line 385, in predict_action_probabilities
rasa-api_1 | [tracker], domain, interpreter
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/tracker_featurizers.py", line 181, in create_state_features
rasa-api_1 | return self._featurize_states(trackers_as_states, interpreter)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/tracker_featurizers.py", line 74, in _featurize_states
rasa-api_1 | for tracker_states in trackers_as_states
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/tracker_featurizers.py", line 74, in <listcomp>
rasa-api_1 | for tracker_states in trackers_as_states
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/tracker_featurizers.py", line 72, in <listcomp>
rasa-api_1 | for state in tracker_states
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/single_state_featurizer.py", line 227, in encode_state
rasa-api_1 | self._extract_state_features(sub_state, interpreter, sparse=True)
rasa-api_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/single_state_featurizer.py", line 178, in _extract_state_features
rasa-api_1 | if self._use_regex_interpreter and not isinstance(
rasa-api_1 | AttributeError: 'SingleStateFeaturizer' object has no attribute '_use_regex_interpreter'
I don’t think the problem is related to my chatbot configuration since everything works on my machine. Therefore, I didn’t find it necessary to include it.
Thank’s in advance