php - 带有 PHP artisan 和 ngrok 的 Botman Studio 本地图像附件
问题描述
我使用 php artisan serve 将 Botman Studio 与 XAMPP 捆绑包中的 PHP 7.4.22 一起使用。
我想要使用Image Intervention进行图像处理,并使用web.php作为jpg响应来路由它。
这适用于浏览器:
Route::get('img/{img_url}.jpg',function($img_url){
$img = ImageManagerStatic::make(base64_decode($img_url));
return $img->response();
});
但是在 Botman(VK 和 Telegram)中不起作用(说而不是回复,因为它在对话中):
$photo_url = "http://*.ngrok.io/img/***.jpg";
$attachment = new Image( $photo_url );
$message = OutgoingMessage::create('')->withAttachment($attachment);
$this->say($message);
例如,如果我使用公共文件夹中的真实图像文件,则也不起作用:
$photo_url = "http://*.ngrok.io/REAL_IMAGE.jpg";
$attachment = new Image( $photo_url );
$message = OutgoingMessage::create('')->withAttachment($attachment);
$this->say($message);
唯一在 PowerShell 中以某种方式直接解决此响应的问题:
致命错误:第 59 行的 E:\YandexDisk\www\vapebot\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php 中的最大执行时间超过了 60 秒
我认为有些东西会阻止 VK 或 Telegram 对图像的请求,但我不知道是什么阻止了它(VerifyCsrfToken * in $except - 也无济于事)。
如果我在机器人执行附件时尝试打开与图片相同的链接,那么浏览器也会进入“无限加载”状态。
我试图用谷歌搜索关于这个问题的任何东西,但没有运气,因为代码本身没有什么奇怪的。
这方面的证据是,例如,如果我附上来自 imgur 的图片(或没有 botman studio 的干净文件夹,以及来自 ampps 下的另一个 ngrok 的图像文件),那么就没有问题,这很有效:
$photo_url = "https://i.imgur.com/b6MY9f8.jpeg";
$attachment = new Image( $photo_url );
$message = OutgoingMessage::create('')->withAttachment($attachment);
$this->say($message);
在 tinker 中,一切正常: 使用 $img->save() 进行响应预览 使用带有 *.jpg 的路由进行响应预览
我什至尝试安装新的 Laravel,然后需要 Botman(没有工作室)和 Image Intervention - 结果相同:(
我还发现了来自 VkCommunityCallbackDriver.php 的代码(可能是 Telegram 使用相同的代码)可能与此问题相关,并且尝试在公共目录中模拟它也不起作用:
$data = file_get_contents("https://***.ngrok.io/img/***.jpg");
// ^ failed to open stream: HTTP request failed! ^
file_put_contents(__DIR__."/image.jpg",$data);
echo '<img src="image.jpg" />';
解决方案
推荐阅读
- ios - SWIFT 4.1 无法使用类型为“(字符串?)”的参数列表调用类型“Double”的初始化程序
- python - 获取当前记录id
- c# - 如何将子元素移动到父元素的属性 (XML)
- r - 上传文件并获得闪亮的词云
- python - 使用 python 代码控制 I/O 模块
- c# - 按钮模板 - 在矩形上添加网格
- c# - 创建无参数属性c#
- rust - 使用 required_unless 和 conflict_with 的 structopt 的 proc-macro 恐慌
- bash - 如何跨 AWS CodeDeploy 步骤共享环境变量?
- batch-file - 批处理脚本:将 .txt 列表中的内容合并到一个文件