Create a bot using composer(v1.0.0 installed form DMG on mac), choosing Echo Bot template.
Clone echo skill sample from the current repo: https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/python/80.skills-simple-bot-to-bot
Run the skill locally.
The endpoint in the picture is with port 3980 but it sue to at the last attempts the main bot was served by the composer on current bot. The point is that I set the callback URL to be the URL on which the main bot is running.
Add skill to Unknown Intent Dialog, After the echo response:
I relieve an error at the skill side. After debugging of the skill I found that the problem is at the callback which returns 404 error back to the skill on sending activity.
uring handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/victorvasiliev/PycharmProjects/BotBuilder-Samples/samples/python/80.skills-simple-bot-to-bot/echo-skill-bot/adapter_with_error_handler.py", line 71, in _send_eoc_to_parent
await turn_context.send_activity(end_of_conversation)
File "/usr/local/lib/python3.7/site-packages/botbuilder/core/turn_context.py", line 170, in send_activity
result = await self.send_activities([activity_or_text])
File "/usr/local/lib/python3.7/site-packages/botbuilder/core/turn_context.py", line 217, in send_activities
return await self._emit(self._on_send_activities, output, logic())
File "/usr/local/lib/python3.7/site-packages/botbuilder/core/turn_context.py", line 295, in _emit
return await logic
File "/usr/local/lib/python3.7/site-packages/botbuilder/core/turn_context.py", line 212, in logic
responses = await self.adapter.send_activities(self, output)
File "/usr/local/lib/python3.7/site-packages/botbuilder/core/bot_framework_adapter.py", line 686, in send_activities
raise error
File "/usr/local/lib/python3.7/site-packages/botbuilder/core/bot_framework_adapter.py", line 672, in send_activities
activity.conversation.id, activity.reply_to_id, activity
File "/usr/local/lib/python3.7/site-packages/botframework/connector/aio/operations_async/_conversations_operations_async.py", line 533, in reply_to_activity
raise models.ErrorResponseException(self._deserialize, response)
botbuilder.schema._models_py3.ErrorResponseException: Operation returned an invalid status code 'Not Found'
Did anybody faced the same issue?
You can see in the documentation that your skill host endpoint needs to end with api/skills
and not just api
:
Select Skills from the Composer menu. In the Skills page, if your skill is remote, enter
<ngrok address>/api/skills
in the Skill Host Endpoint field. If your skill is local, you should enterlocalhost:port/api/skills
in the Skill Host Endpoint field.
The skill host endpoint is used as the service URL in activities sent to the skill, which means it will be the base URI for any Conversations API methods the skill calls. If your skill tries to send requests to a non-existent URL then you should expect to get 404's. The Composer bot will be routing requests to routes starting with api/skills
so that's what you should be putting in your service URL.