web-dev-qa-db-ja.com

BotFramework Composer、スキルでのコールバックで404エラーが発生する

再現する手順:

ステップ1:

Echo Botテンプレートを選択して、composer(MacにDMGからインストールされたv1.0.0)を使用してボットを作成します。

ステップ2:

現在のリポジトリからエコースキルサンプルを複製: https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/python/80.skills-simple-bot-to-bot

ステップ3:

ローカルでスキルを実行します。

ステップ4:

スキルに接続:

enter image description here

写真のエンドポイントはポート3980ですが、最後の試行でメインボットがcomposer現在のボットで提供されていました。ポイントは、コールバックURLをメインボットが実行されているURL。

ステップ5:

エコー応答の後で、不明なインテントダイアログにスキルを追加します: enter image description here

エラー:

スキル側のミスを和らげます。スキルをデバッグした後、問題はコールバックにあり、アクティビティを送信すると404エラーがスキルに返されます。

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'

誰かが同じ問題に直面しましたか?

3
Victor Vasiliev

ドキュメント で、スキルホストエンドポイントがapiではなくapi/skillsで終わる必要があることがわかります。

Composer]メニューからSkillsを選択します。Skillsページで、スキルがリモートの場合、-に<ngrok address>/api/skillsを入力しますスキルホストエンドポイントフィールドスキルがローカルの場合、[スキルホストエンドポイントフィールドにlocalhost:port/api/skillsを入力する必要があります。

スキルホストエンドポイントは、スキルに送信されるアクティビティのサービスURLとして使用されます。つまり、スキルが呼び出すすべての会話APIメソッドのベースURIになります。スキルが存在しないURLにリクエストを送信しようとすると、404を取得するはずです。 Composerボットは、api/skillsで始まるルートにリクエストをルーティングするため、サービスURLに入力する必要があります。

1
Kyle Delaney