zef-dev / convoworks-core

PHP framework for handling conversational services like Amazon Alexa skills, Google Assistant, Viber, FB messenger ...
https://convoworks.com
MIT License
25 stars 2 forks source link

Media request keeps triggering when there is no Media Block #14

Closed mmarcec007 closed 3 years ago

mmarcec007 commented 3 years ago

After taking a closer look on the log on our production environment convo-2021-01-05.log it seems that the problem occurs in mtg-database service. Log snippet:

[01:36:40:57746] uLqdP1b public.CRITICAL: [Convo\Core\Util\RequestResponseDumpMiddleware:process(95)] Convo\Core\ComponentNotFoundException: Block with role [media_player] not found in /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/ConvoServiceInstance.php:604
Stack trace:
#0 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/ConvoServiceInstance.php(324): Convo\Core\ConvoServiceInstance->getBlockByRole('media_player')
#1 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Adapters/Alexa/AlexaSkillRestHandler.php(113): Convo\Core\ConvoServiceInstance->run(Object(Convo\Core\Adapters\Alexa\AmazonCommandRequest), Object(Convo\Core\Adapters\Alexa\AmazonCommandResponse))
#2 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Adapters/Alexa/AlexaSkillRestHandler.php(87): Convo\Core\Adapters\Alexa\AlexaSkillRestHandler->_handleAlexaSkillPathServiceIdPost(Object(GuzzleHttp\Psr7\ServerRequest), 'a', 'mtg-database', Array)
#3 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Adapters/PublicRestApi.php(88): Convo\Core\Adapters\Alexa\AlexaSkillRestHandler->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#4 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RestApp.php(70): Convo\Core\Adapters\PublicRestApi->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#5 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RequestResponseDumpMiddleware.php(45): Convo\Core\Util\RestApp->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#6 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RestApp.php(65): Convo\Core\Util\RequestResponseDumpMiddleware->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Convo\Core\Util\RestApp))
#7 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/JsonHeaderMiddleware.php(14): Convo\Core\Util\RestApp->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#8 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RestApp.php(65): Convo\Core\Util\JsonHeaderMiddleware->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Convo\Core\Util\RestApp))
#9 /var/www/ConvoWorks/prod/library/vendor/middlewares/trailing-slash/src/TrailingSlash.php(57): Convo\Core\Util\RestApp->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#10 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RestApp.php(65): Middlewares\TrailingSlash->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Convo\Core\Util\RestApp))
#11 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Rest/ConvoExceptionHandler.php(32): Convo\Core\Util\RestApp->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#12 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RestApp.php(65): Convo\Core\Rest\ConvoExceptionHandler->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Convo\Core\Util\RestApp))
#13 /var/www/ConvoWorks/prod/library/Convo/Proto/LoadPackagesMiddleware.php(104): Convo\Core\Util\RestApp->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#14 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RestApp.php(65): Convo\Proto\LoadPackagesMiddleware->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Convo\Core\Util\RestApp))
#15 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/BodyParserMiddleware.php(33): Convo\Core\Util\RestApp->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#16 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RestApp.php(65): Convo\Core\Util\BodyParserMiddleware->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Convo\Core\Util\RestApp))
#17 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/LogRequestMiddleware.php(49): Convo\Core\Util\RestApp->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#18 /var/www/ConvoWorks/prod/library/vendor/zef-dev/convoworks-core/src/Convo/Core/Util/RestApp.php(65): Convo\Core\Util\LogRequestMiddleware->process(Object(GuzzleHttp\Psr7\ServerRequest), Object(Convo\Core\Util\RestApp))
#19 /var/www/ConvoWorks/prod/www/rest_public/index.php(77): Convo\Core\Util\RestApp->handle(Object(GuzzleHttp\Psr7\ServerRequest))
#20 {main}

After observation of the workflow in 'mtg-database' service it seems that the following snippet triggered the media reqeust in AmazonCommandRequest which is wrong:

{ "class": "\\Convo\\Pckg\\Core\\Processors\\SimpleProcessor", "namespace": "convo-core", "properties": { "ok": [ { "class": "\\Convo\\Pckg\\Core\\Elements\\GoToElement", "namespace": "convo-core", "properties": { "value": "Main_Menu", "next": false, "_component_id": "lfrlfq7p-vnlg-kenc-wxih-tv3ndtnfpnla" } } ], "request_filters": [ { "class": "\\Convo\\Pckg\\Core\\Filters\\IntentRequestFilter", "namespace": "convo-core", "properties": { "readers": [ { "class": "\\Convo\\Pckg\\Core\\Filters\\ConvoIntentReader", "namespace": "convo-core", "properties": { "intent": "convo-core.NavigateHomeIntent", "values": [], "rename": [], "_component_id": "r3smn8mn-4irp-ra2v-g2qy-xzoesnivf5l6" } }, { "class": "\\Convo\\Pckg\\Core\\Filters\\ConvoIntentReader", "namespace": "convo-core", "properties": { "intent": "BackToSearchIntent", "values": [], "rename": [], "_component_id": "69skkrzg-2lvf-ww22-eotj-0b1sazdwtuuu" } }, { "class": "\\Convo\\Pckg\\Core\\Filters\\ConvoIntentReader", "namespace": "convo-core", "properties": { "intent": "convo-core.PreviousIntent", "values": [], "rename": [], "_component_id": "xoesj9vh-g9lc-fi7f-5tei-dz1yfbsnvodr" } } ], "_component_id": "vtjlbiig-ze7m-jfmq-grff-tzhlcqck8hlv" } } ], "_component_id": "5txhwhkw-yula-z3yw-qqg4-73cktzudefll" } }

Final conclusion is that the method isMediaRequest in AmazonCommandRequest delivers wrong result when some of the following intents occur:

For this particular case it was AMAZON.PreviousIntent in 'mtg-database' service.