创建和发送通知

编辑该页面

创建和发送通知

5.0

通知组件是在Symfony 5.0中引入的。欧宝娱乐app下载地址

安装

当前的web应用程序使用许多不同的渠道向用户发送消息(例如短信,松弛消息、邮件推送通知,等等)。Symfony的通知组件是一个抽象的所有这些渠道。欧宝娱乐app下载地址它提供了一个动态的方式来管理消息被发送。得到通知安装使用:

1
美元作曲家需要symfony /通知欧宝娱乐app下载地址

渠道:聊天、发短信、电子邮件、浏览器和推动

不同的渠道通知组件可以发送通知。每个通道可以集成不同的提供者(例如松弛或为什么Twilio SMS)通过使用传输。

通知组件支持以下渠道:

提示

使用秘密安全地存储你的API的令牌。

短信通道

谨慎

如果任何DSN值包含任何字符被认为是一个URI(如特殊+,@,美元,#,/,:,*,!),您必须对它们进行编码。看到RFC 3986保留字符或使用的完整列表urlencode函数进行编码。

短信通道使用每人类发送短信到手机。该功能需要订阅一个第三方服务,发送短信。欧宝娱乐app下载地址Symfony提供了集成几个流行的短信服务:

服务 DSN
AllMySms 欧宝娱乐app下载地址symfony / all-my-sms-notifier allmysms: / /登录:APIKEY@default ?从=
AmazonSns 欧宝娱乐app下载地址symfony / amazon-sns-notifier sns: / / ACCESS_KEY: SECRET_KEY@default ?区域=区域
Clickatell 欧宝娱乐app下载地址symfony / clickatell-notifier clickatell: / / ACCESS_TOKEN@default ?从=
Esendex 欧宝娱乐app下载地址symfony / esendex-notifier esendex: / / USER_NAME: PASSWORD@default ? accountreference = ACCOUNT_REFERENCE&from =
FakeSms 欧宝娱乐app下载地址symfony / fake-sms-notifier fakesms +电子邮件:/ / MAILER_SERVICE_ID ? =, =fakesms +记录器:/ /违约
FreeMobile 欧宝娱乐app下载地址symfony / free-mobile-notifier freemobile: / /登录:API_KEY@default ?电话=电话
GatewayApi 欧宝娱乐app下载地址symfony / gateway-api-notifier gatewayapi: / / TOKEN@default ?从=
Infobip 欧宝娱乐app下载地址symfony / infobip-notifier infobip: / / AUTH_TOKEN@HOST ?从=
Iqsms 欧宝娱乐app下载地址symfony / iqsms-notifier iqsms: / /登录:PASSWORD@default ?从=
LightSms 欧宝娱乐app下载地址symfony / light-sms-notifier lightsms: / /登录:TOKEN@default ? =电话
Mailjet 欧宝娱乐app下载地址symfony / mailjet-notifier mailjet: / / TOKEN@default ?从=
MessageBird 欧宝娱乐app下载地址symfony / message-bird-notifier messagebird: / / TOKEN@default ?从=
MessageMedia 欧宝娱乐app下载地址symfony / message-media-notifier messagemedia: / / API_KEY: API_SECRET@default ?从=
Mobyt 欧宝娱乐app下载地址symfony / mobyt-notifier mobyt: / / USER_KEY: ACCESS_TOKEN@default ?从=
Nexmo 欧宝娱乐app下载地址symfony / nexmo-notifier 废弃的沃尼奇(symfony / vonage-notifi欧宝娱乐app下载地址er)。
水中曲棍球 欧宝娱乐app下载地址symfony / octopush-notifier 水中曲棍球:/ / USERLOGIN: APIKEY@default ?从=从类型=类型
Ovh欧宝体育应用最新版app下载Cloud 欧宝娱乐app下载地址s欧宝体育应用最新版app下载ymfony / ovh-cloud-notifier ovh欧宝体育应用最新版app下载cloud: / / APPLICATION_KEY: APPLICATION_SECRET@default ? consumer_key = CONSUMER_KEY&service_name = SERVICE_NAME
Sendinblue 欧宝娱乐app下载地址symfony / sendinblue-notifier sendinblue: / / API_KEY@default ?发送方=电话
Sms77 欧宝娱乐app下载地址symfony / sms77-notifier sms77: / / API_KEY@default ?从=
双曲正弦 欧宝娱乐app下载地址symfony / sinch-notifier 双曲正弦:/ / ACCOUNT_ID: AUTH_TOKEN@default ?从=
Smsapi 欧宝娱乐app下载地址symfony / smsapi-notifier smsapi: / / TOKEN@default ?从=
SmsBiuras 欧宝娱乐app下载地址symfony / sms-biuras-notifier smsbiuras: / / UID: API_KEY@default ? = FROM&test_mode = 0
Smsc 欧宝娱乐app下载地址symfony / smsc-notifier smsc: / /登录:PASSWORD@default ?从=
SpotHit 欧宝娱乐app下载地址symfony / spot-hit-notifier spothit: / / TOKEN@default ?从=
Telnyx 欧宝娱乐app下载地址symfony / telnyx-notifier telnyx: / / API_KEY@default ? = FROM&messaging_profile_id = MESSAGING_PROFILE_ID
TurboSms 欧宝娱乐app下载地址symfony / turbo-sms-notifier turbosms: / / AUTH_TOKEN@default ?从=
为什么Twilio 欧宝娱乐app下载地址symfony / twilio-notifier 为什么twilio: / /席德:TOKEN@default ?从=
沃尼奇 欧宝娱乐app下载地址symfony / vonage-notifier vonage: / /关键:SECRET@default ?从=
Yunpian 欧宝娱乐app下载地址symfony / yunpian-notifier yunpian: / / APIKEY@default

5.1

OvhClou欧宝体育应用最新版app下载d,双曲正弦和FreeMobile集成在Symfony 5.1中引入的。欧宝娱乐app下载地址

5.2

Infobip, Smsapi Mobyt, Esendex Sendinblue集成在Symfony 5.2中引入的。欧宝娱乐app下载地址

5.3

Iqsms GatewayApi,水中曲棍球、AllMySms Clickatell, SpotHit, FakeSms(电子邮件),LightSms, SmsBiuras MessageBird集成在Symfony 5.3中引入的。欧宝娱乐app下载地址

5.4

5.4 Nexmo集成在Symfony弃用,使用Vonage集成。欧宝娱乐app下载地址

5.4

Smsc, MessageMedia Yunpian、AmazonSns Telnyx, TurboSms, Mailjet, FakeSms(记录器),Sms77和Vonage集成在Symfony 5.4中引入的。欧宝娱乐app下载地址

使一个人,在你添加正确的DSN.env文件和配置texter_transports:

1 2
# .envTWILIO_DSN =为什么twilio: / /席德:TOKEN@default ?从=
  • YAML
  • XML
  • PHP
1 2 3 4 5
#配置/包/ notifier.yaml框架:通知:texter_transports:为什么twilio:' % env (TWILIO_DSN) %

聊天频道

谨慎

如果任何DSN值包含任何字符被认为是一个URI(如特殊+,@,美元,#,/,:,*,!),您必须对它们进行编码。看到RFC 3986保留字符或使用的完整列表urlencode函数进行编码。

聊天频道用于发送聊天消息给用户使用喋喋不休类。欧宝娱乐app下载地址Symfony提供了集成这些聊天服务:

服务 DSN
AmazonSns 欧宝娱乐app下载地址symfony / amazon-sns-notifier sns: / / ACCESS_KEY: SECRET_KEY@default ?区域=区域
不和 欧宝娱乐app下载地址symfony / discord-notifier 不和:/ / TOKEN@default ? webhook_id = ID
FakeChat 欧宝娱乐app下载地址symfony / fake-chat-notifier fakechat +电子邮件:/ /默认? =,=fakechat +记录器:/ /违约
重火力点 欧宝娱乐app下载地址symfony / firebase-notifier 重火力点:/ /用户名:PASSWORD@default
git 欧宝娱乐app下载地址symfony / gitter-notifier git: / / TOKEN@default ? room_id = room_id
GoogleChat 欧宝娱乐app下载地址symfony / google-chat-notifier googlechat: / / ACCESS_KEY: ACCESS_TOKEN@default /空间? thread_key = thread_key
LinkedIn 欧宝娱乐app下载地址symfony / linked-in-notifier linkedin: / /令牌:USER_ID@default
Mattermost 欧宝娱乐app下载地址symfony / mattermost-notifier mattermost: / / ACCESS_TOKEN@HOST /路径?通道=通道
美居酒店 欧宝娱乐app下载地址symfony / mercure-notifier 美居酒店:/ / HUB_ID ?主题=主题
MicrosoftTeams 欧宝娱乐app下载地址symfony / microsoft-teams-notifier microsoftteams: / /默认路径
RocketChat 欧宝娱乐app下载地址symfony / rocket-chat-notifier rocketchat: / / TOKEN@ENDPOINT ?通道=通道
松弛 欧宝娱乐app下载地址symfony / slack-notifier 松:/ / TOKEN@default ?通道=通道
电报 欧宝娱乐app下载地址symfony / telegram-notifier 电报:/ / TOKEN@default ? = CHAT_ID频道
Zulip 欧宝娱乐app下载地址symfony / zulip-notifier zulip: / /电子邮件:TOKEN@HOST ?通道=通道

5.1

重火力点,Mattermost RocketChat集成在Symfony 5.1中引入的。欧宝娱乐app下载地址Symfony 5.1中的松弛DSN改变使用松弛的欧宝娱乐app下载地址人而不是遗产令牌。

5.2

LinkedIn, GoogleChat Zulip和不和集成在Symfony 5.2中引入的。欧宝娱乐app下载地址Symfony 5.2中的松弛DSN改变再次使用松欧宝娱乐app下载地址弛Web API 5.0一样。

5.3

git,水银,FakeChat(电子邮件)和微软团队集成在Symfony 5.3中引入的。欧宝娱乐app下载地址

5.4

AmazonSns和FakeChat (logger)集成在Symfony 5.4中引入的。欧宝娱乐app下载地址

聊天配置使用chatter_transports设置:

1 2
# .envSLACK_DSN =松弛:/ / TOKEN@default ?通道=通道
  • YAML
  • XML
  • PHP
1 2 3 4 5
#配置/包/ notifier.yaml框架:通知:chatter_transports:松:' % env (SLACK_DSN) %

电子邮件渠道

电子邮件使用频道欧宝娱乐app下载地址Symfony梅勒使用特殊的发送通知NotificationEmail。应安装树枝桥连同墨色和CSS内联树枝扩展:

1
美元作曲家需要symfony / tw欧宝娱乐app下载地址ig-pack树枝/ cssinliner-extra树枝/ inky-extra

在这之后,配置梅勒。您还可以设置默认”从“应该使用电子邮件地址,发送电子邮件通知:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/包/ mailer.yaml框架:梅勒:dsn:' % env (MAILER_DSN) %信封:发送方:“notifications@example.com”

推动渠道

谨慎

如果任何DSN值包含任何字符被认为是一个URI(如特殊+,@,美元,#,/,:,*,!),您必须对它们进行编码。看到RFC 3986保留字符或使用的完整列表urlencode函数进行编码。

推动通道用于发送通知给用户使用每人类。欧宝娱乐app下载地址Symfony提供了与这些推动服务集成:

服务 DSN
世博会 欧宝娱乐app下载地址symfony / expo-notifier 世博会:/ / Token@default
OneSignal 欧宝娱乐app下载地址symfony / one-signal-notifier onesignal: / / APP_ID: API_KEY@default ? defaultRecipientId = DEFAULT_RECIPIENT_ID”

5.4

世博会和OneSignal集成在Symfony 5.4中引入的。欧宝娱乐app下载地址

使一个人,在你添加正确的DSN.env文件和配置texter_transports:

1 2
# .envEXPO_DSN =世博会:/ / TOKEN@default
  • YAML
  • XML
  • PHP
1 2 3 4 5
#配置/包/ notifier.yaml框架:通知:texter_transports:世博会:' % env (EXPO_DSN) %

配置使用故障转移或循环传输

除了配置一个或多个单独的传输,还可以使用特殊| |& &字符来实现故障转移或循环运输:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
#配置/包/ notifier.yaml框架:通知:chatter_transports:#松弛和使用电报发送通知#松弛错误主要:' % env (SLACK_DSN) % | | % env (TELEGRAM_DSN) % '#发送通知到下一个预定的运输由循环计算设置轮流捡取:' % env (SLACK_DSN) % & & % env (TELEGRAM_DSN) % '

创建和发送通知

发送一个通知,自动装配NotifierInterface(服务标识通知人)。这个类有send ()方法允许您发送一个通知到一个收件人:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31
/ / src /控制器/ InvoiceController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\组件\通知人\通知\通知;使用欧宝娱乐app下载地址\组件\通知人\NotifierInterface;使用欧宝娱乐app下载地址\组件\通知人\收件人\收件人;InvoiceController扩展AbstractController{#(路线(/发票/创建)]公共函数创建(NotifierInterface美元通知人){/ /……/ /创建一个发送通知/ /使用“邮件”频道美元通知= (通知(“新发票”,(“电子邮件”)))- >内容(“你有一个新的发票15欧元。”);/ /接收方的通知美元收件人=收件人(美元用户- >getEmail (),美元用户- >getPhonenumber ());/ /发送通知收件人美元通知人- >发送(美元通知,美元收件人);/ /……}}

通知通过使用两个参数:创建主题和渠道。通道指定哪个频道(或运输)应该用于发送通知。例如,(“电子邮件”、“短信”)将发送电子邮件和短信通知给用户。

也有一个默认的通知内容()emoji ()方法设置通知内容和图标。

欧宝娱乐app下载地址Symfony提供了以下收件人:

NoRecipient
这是默认的,没有必要时是有用的信息接收器。例如,浏览器通道使用当前的请求会话flashbag;
收件人
这既可以包含用户的电子邮件地址和电话号码。这个收件人可以用于所有渠道(取决于他们是否实际上是集)。

5.2

AdminRecipient类被在Symfony 5.2中,您应该使用欧宝娱乐app下载地址收件人代替。

配置渠道政策

而不是指定目标创建频道,Symfony还允许您使用通知重要性水平。欧宝娱乐app下载地址更新的配置来指定应该使用哪些渠道(使用特定的水平channel_policy):

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#配置/包/ notifier.yaml框架:通知:#……channel_policy:#使用短信,松弛和电子邮件紧急通知紧急:(“短信”,“聊天/松弛”,“电子邮件”]#使用松弛非常重要的通知高:(“聊天/松弛”)#使用浏览器中、低通知介质:(“浏览器”)低:(“浏览器”)

现在,每当通知的重要性设置为“高”,它将使用松弛运输:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ /……InvoiceController扩展AbstractController{#(路线(/发票/创建)]公共函数发票(NotifierInterface美元通知人){/ /……美元通知= (通知(“新发票”))- >内容(“你有一个新的发票15欧元。”)- >重要性(通知::IMPORTANCE_HIGH);美元通知人- >发送(美元通知,收件人(“wouter@example.com”));/ /……}}

自定义通知

您可以扩展通知收件人基类来定制他们的行为。例如,您可以覆盖getChannels ()方法只返回短信如果发票价格是非常高的,收件人电话号码:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27
名称空间应用程序\通知人;使用欧宝娱乐app下载地址\组件\通知人\通知\通知;使用欧宝娱乐app下载地址\组件\通知人\收件人\RecipientInterface;使用欧宝娱乐app下载地址\组件\通知人\收件人\SmsRecipientInterface;InvoiceNotification扩展通知{私人美元价格;公共函数__construct(int美元价格){美元- >价格=美元价格;}公共函数getChannels(RecipientInterface美元收件人){如果(美元- >价格>10000年& &美元收件人运算符SmsRecipientInterface) {返回(“短信”];}返回(“电子邮件”];}}

自定义通知消息

每个通道都有自己的通知接口,可以实现自定义通知消息。例如,如果您想修改消息聊天服务的基础上,实现ChatNotificationInterface和它的asChatMessage ()方法:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31
/ / src /通知/ InvoiceNotification.php名称空间应用程序\通知人;使用欧宝娱乐app下载地址\组件\通知人\消息\ChatMessage;使用欧宝娱乐app下载地址\组件\通知人\通知\ChatNotificationInterface;使用欧宝娱乐app下载地址\组件\通知人\通知\通知;使用欧宝娱乐app下载地址\组件\通知人\收件人\RecipientInterface;InvoiceNotification扩展通知实现了ChatNotificationInterface{私人美元价格;公共函数__construct(int美元价格){美元- >价格=美元价格;}公共函数asChatMessage(RecipientInterface美元收件人、字符串美元运输= null):哦?ChatMessage{/ /添加一个自定义主题和emoji如果消息被发送到松弛如果(“松弛”= = =美元运输){美元- >主题(“你\ ' re发票”.strval (美元- >价格)。“欧元”。);美元- >emoji (“钱”);返回ChatMessage::fromNotification (美元);}/ /如果你返回null,将创建ChatMessage通知/ /根据这个通知也没有这种方法。返回;}}

SmsNotificationInterface,EmailNotificationInterfacePushNotificationInterface也存在修改发送的消息渠道。

禁用交付

在开发(或测试),你可能想要完全禁用的交付通知。你可以通过迫使通知使用NullTransport配置为所有人,只在喋喋不休传输dev(和/或测试)环境:

1 2 3 4 5 6 7
#配置/包/ dev / notifier.yaml框架:通知:texter_transports:为什么twilio:“零:/ /空”chatter_transports:松:“零:/ /空”
. .待办事项
  • 使用异步通知的消息总线
  • 描述通知独白处理程序
  • 描述notification_on_failed_messages集成
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。