使用通知通道自动发布到 Telegram

发布于 作者:

Auto Publishing to Telegram using Notification Channels image

Laravel 通知在您需要通过各种渠道发送通知时非常有用。根据文档,这些通知的最初用例是发送快速的信息消息,以通知用户应用程序中发生的事件。例如,如果您正在编写计费应用程序,则可以通过电子邮件和短信渠道向用户发送“发票已支付”通知。

但是,它们不应仅限于这些类型的通知。例如,在这个网站上,每次发布新文章时,我都希望它发布到所有社交渠道和社区,社区已经为各种服务创建了许多驱动程序。

几个月前,我创建了一个新的区域,即一个只读的Laravel 新闻 Telegram 群组,过去,我会手动将当天的新文章添加到其中。您可以想象,有一天我忘记了,然后是第二天,然后是第三天,等等。我知道我必须自动发送新文章,这就是Telegram 通知包的作用,让我们看看如何设置它并自动将通知发送到您的 Telegram 房间。

创建 Telegram 机器人

在您能够向房间发送消息之前,您必须创建一个机器人。首先,向@BotFather发送一条新消息,操作如下

You: /newbot
BotFather: Alright, a new bot. How are we going to call it? Please choose a name for your bot.
 
You: MyTestBot
BotFather: Good. Now let's choose a username for your bot. It must end in bot. Like this, for example: TetrisBot or tetris_bot.
 
You: MyNewBot
BotFather: Done! Congratulations on your new bot. ... Use this token: xxxxxx

现在,您将在稍后需要该令牌将其添加到您的 .env 文件中,因此请将其保留在手边。

将机器人添加到您的房间

打开您的 Telegram 房间并转到设置 -> 管理员,然后将您刚创建的机器人添加到频道。这将授予它向房间发布新消息的权限。

安装 Telegram 通知

安装过程与任何 Laravel 包的安装过程类似。首先需要该包

composer require laravel-notification-channels/telegram

将其添加到 app.php 中的提供程序中

'providers' => [
...
NotificationChannels\Telegram\TelegramServiceProvider::class,
],

添加配置数组

// config/services.php
...
'telegram-bot-api' => [
'token' => env('TELEGRAM_BOT_TOKEN', 'YOUR BOT TOKEN HERE')
],

最后,打开 .env 并添加您的令牌

TELEGRAM_BOT_TOKEN=1234:232jkl42l4j23kl

创建新的通知类

在我的用例中,我将在发布新文章时发送通知,因此我将通过 artisan 创建一个新的 PostPublished 通知类

php artisan make:notification PostPublished

现在打开该文件并调整 via 方法以告诉它使用 TelegramChannel

public function via($notifiable)
{
return [TelegramChannel::class];
}

接下来,创建一个 toTelegram 方法,其中将包含您要发送的详细信息

public function toTelegram($post)
{
return TelegramMessage::create()
->to('@laravelnews')
->content($post->title.' https://news.laravel.net.cn/'. $post->uri);
}

在本例中,它是发送到 @laravelnews 房间,内容包括文章标题和文章链接。

添加可通知特性

通知可以通过两种方式之一发送。通过 Notification facade 或通过向模型添加 Notifiable 特性。当您需要将通知发送给多个可通知实体(例如用户集合)时,建议使用 facade。

在本例中,它仅基于一项内容发送,因此我在 Post 模型中添加了该特性。

use Illuminate\Notifications\Notifiable;
class Post extends Model
{
use Notifiable;

发送您的第一个通知

现在,所有内容都已设置并准备就绪,剩下的就是发送第一个通知。从模型中获取单一项目,然后发出通知

$post = \App\Post::find(1);
$post->notify(new \App\Notifications\PostPublished());

如果一切正确,您将在 Telegram 频道中立即看到它。

使用WordPress 作为后端 设置此网站后,我的同步系统运行并找到并创建新文章时,它现在会自动发送到TelegramTwitter,我在之前的文章中介绍过。

如果您是 Telegram 用户,请加入@laravelnews 群组,我已经创建了一个简单的Laravel 贴纸包。它只有两个贴纸,但希望有一天我能添加更多贴纸。

Eric L. Barnes photo

Eric 是 Laravel 新闻的创建者,自 2012 年以来一直关注 Laravel。

Cube

Laravel 新闻通讯

加入 40,000 多名其他开发者,永不错过新的技巧、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发者的必备代码运行器。使用 AI、自动完成和对本地和生产环境的即时反馈进行调试。

Tinkerwell
No Compromises logo

不妥协

Joel 和 Aaron 是不妥协播客的两名经验丰富的开发者,现在可以为您的 Laravel 项目聘用他们。⬧ 固定价格为 7,500 美元/月。⬧ 没有冗长的销售流程。⬧ 没有合同。⬧ 100% 退款保证。

不妥协
Kirschbaum logo

Kirschbaum

提供创新和稳定性,以确保您的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行旧版 Laravel 版本?即时、自动化的 Laravel 升级和代码现代化,让您的应用程序保持新鲜。

Shift
Bacancy logo

Bacancy

聘用经验丰富的 Laravel 开发者,拥有 4-6 年的经验,每月只需 2,500 美元,即可为您的项目增光添彩。获得 160 小时的专业知识和 15 天的无风险试用。立即安排通话!

Bacancy
Lucky Media logo

Lucky Media

立即获得幸运 - Laravel 开发的理想选择,拥有十多年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel 电子商务

Laravel 的电子商务。一个开源包,为 Laravel 带来了现代无头电子商务功能的强大功能。

Lunar: Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 工作板

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS 启动工具包

SaaSykit 是一个 Laravel SaaS 启动工具包,它包含运行现代 SaaS 所需的所有功能。支付、漂亮的结账、管理面板、用户仪表板、身份验证、现成的组件、统计数据、博客、文档等等。

SaaSykit: Laravel SaaS 启动工具包
Rector logo

Rector

您无缝升级 Laravel、降低成本和加速创新的合作伙伴,助力企业取得成功

Rector
MongoDB logo

MongoDB

通过 MongoDB 和 Laravel 的强大集成增强您的 PHP 应用程序,使开发者能够轻松高效地构建应用程序。支持事务、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解 MongoDB 的灵活、现代数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的无依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

将 Swagger UI 添加到您的 Laravel 应用程序

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel Prompts 构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包向您的 Laravel 应用程序添加评论

阅读文章