@loodev
Разработчик свободного полёта

Ошибка в BotMan. Почему может не работать кнопочный диалог?

Развернул я бота на базе BotMan, подрубил драйвера для телеграмм. Всё по-инструкции. И вроде тестовые сообщения проходят, если слать их через чат и даже обрабатываются, но вот если я задействую диалог, даже который идёт "из коробки" получаю ошибки:

Код ошибки
[2019-11-06 11:48:58] local.ERROR: include(): Opis\Closure\ClosureStream::stream_set_option is not implemented! {"exception":"[object] (ErrorException(code: 0): include(): Opis\\Closure\\ClosureStream::stream_set_option is not implemented! at /var/www/youknow/vendor/opis/closure/src/SerializableClosure.php:206)
[stacktrace]
#0 /var/www/youknow/vendor/opis/closure/src/SerializableClosure.php(206): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()
#1 /var/www/youknow/vendor/opis/closure/src/SerializableClosure.php(206): include()
#2 [internal function]: Opis\\Closure\\SerializableClosure->unserialize()
#3 /var/www/youknow/vendor/botman/botman/src/Traits/HandlesConversations.php(136): unserialize()
#4 /var/www/youknow/vendor/botman/botman/src/Traits/HandlesConversations.php(226): BotMan\\BotMan\\BotMan->unserializeClosure()
#5 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Support/Collection.php(407): BotMan\\BotMan\\BotMan->BotMan\\BotMan\\Traits\\{closure}()
#6 /var/www/youknow/vendor/botman/botman/src/Traits/HandlesConversations.php(235): Illuminate\\Support\\Collection->each()
#7 /var/www/youknow/vendor/botman/botman/src/BotMan.php(405): BotMan\\BotMan\\BotMan->loadActiveConversation()
#8 /var/www/youknow/app/Http/Controllers/BotManController.php(18): BotMan\\BotMan\\BotMan->listen()
#9 [internal function]: App\\Http\\Controllers\\BotManController->handle()
#10 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array()
#11 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction()
#12 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#13 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\\Routing\\Route->runController()
#14 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Router.php(679): Illuminate\\Routing\\Route->run()
#15 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#16 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#17 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#18 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#19 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(75): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#20 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle()
#21 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#22 /var/www/youknow/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#23 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle()
#24 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#25 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#26 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Session\\Middleware\\StartSession->handle()
#27 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#28 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#29 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle()
#30 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#31 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#32 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle()
#33 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#34 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#35 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Router.php(681): Illuminate\\Pipeline\\Pipeline->then()
#36 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Router.php(656): Illuminate\\Routing\\Router->runRouteWithinStack()
#37 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Router.php(622): Illuminate\\Routing\\Router->runRoute()
#38 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Router.php(611): Illuminate\\Routing\\Router->dispatchToRoute()
#39 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch()
#40 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#41 /var/www/youknow/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#42 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Fideloper\\Proxy\\TrustProxies->handle()
#43 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#44 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(31): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#45 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#46 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#47 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(31): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#48 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#49 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#50 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#51 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#52 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#53 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#54 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle()
#55 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#56 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}()
#57 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then()
#58 /var/www/youknow/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#59 /var/www/youknow/public/index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle()
#60 {main}
"}


В этот момент бот не принимает сообщения до какого-то периода, минут 10 наверное. Потом опять всё работает, кроме кнопок.

Повторюсь. Всё из коробки. Сертификат поставил.

php7.4
  • Вопрос задан
  • 230 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ticman
Столкнулся с аналогичной проблемой. Дело в версии пхп, в докерфайле опустил с 7.4 до 7.1 и завелось. Вполне вероятно, на 7.2/7.3 тоже заработает.
Не работало именно с диалогами(conversations), поскольку там используется кэш для хранения состояния, обьекты сериализуются перед кешированием. Сериализация/десериализация кложуров в php7.4+opis пакет работает неадекватно, не стал разбираться детальнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы