创建和发送通知
编辑本页创建和发送通知
安装
当前的web应用程序使用许多不同的渠道向用户发送消息(例如SMS、Slack消息、电子邮件、推送通知等)。Symfony中的Notifier组件是所有这些通道欧宝娱乐app下载地址之上的抽象。它提供了一种动态方式来管理消息的发送方式。安装通知器使用:
1
$作曲家需要symfony/通知欧宝娱乐app下载地址
渠道:聊天,短信,电子邮件,浏览器和推送
通知器组件可以向不同的通道发送通知。每个通道可以通过使用传输与不同的提供商集成(例如Slack或Twilio SMS)。
通知器组件支持以下通道:
- 短信通道通过短信向手机发送通知;
- 聊天频道向Slack和Telegram等聊天服务发送通知;
- 电子邮件渠道整合了欧宝娱乐app下载地址Symfony梅勒;
- 浏览器通道使用flash的消息.
- 推动渠道通过推送通知向手机和浏览器发送通知。
提示
使用秘密来安全地存储API的令牌。
短信通道
短信通道使用每人类发送短信到手机。该功能需要订阅第三方短信服务。欧宝娱乐app下载地址Symfony集成了一些流行的短信服务:
服务 | 包 | DSN |
---|---|---|
46个麋鹿 | 欧宝娱乐app下载地址symfony / forty-six-elks-notifier |
forty-six-elks: / / API_USERNAME: API_PASSWORD@default ?从= |
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吗?从= |
ContactEveryone | 欧宝娱乐app下载地址symfony / contact-everyone-notifier |
contact-everyone: / / TOKEN@default ?&diffusionname = DIFFUSION_NAME&category =类别 |
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 ?从= |
KazInfoTeh | 欧宝娱乐app下载地址symfony / kaz-info-teh-notifier |
kaz-info-teh: / /用户名: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 |
放弃支持Vonage (symfony/ Vonage -n欧宝娱乐app下载地址otifier)。 |
水中曲棍球 | 欧宝娱乐app下载地址symfony / octopush-notifier |
水中曲棍球:/ / USERLOGIN: APIKEY@default ?从=从类型=类型 |
OrangeSms | 欧宝娱乐app下载地址symfony / orange-sms-notifier |
orange-sms: / / CLIENT_ID: CLIENT_SECRET@default吗?从= FROM&sender_name = SENDER_NAME |
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&no_stop_clause = true |
Sendberry | 欧宝娱乐app下载地址symfony / sendberry-notifier |
sendberry: / /用户名:PASSWORD@default ?auth_key = AUTH_KEY&from = |
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 ?=从测试= 0 |
SmsBiuras | 欧宝娱乐app下载地址symfony / sms-biuras-notifier |
smsbiuras: / / UID: API_KEY@default ?= FROM&test_mode = 0 |
Smsc | 欧宝娱乐app下载地址symfony / smsc-notifier |
smsc: / /登录:PASSWORD@default ?从= |
SMSFactor | 欧宝娱乐app下载地址symfony / sms-factor-notifier |
sms-factor: / / TOKEN@default ?发送方=SENDER&push_type=PUSH_TYPE |
SpotHit | 欧宝娱乐app下载地址symfony / spot-hit-notifier |
spothit: / / TOKEN@default ?从= |
Telnyx | 欧宝娱乐app下载地址symfony / telnyx-notifier |
telnyx: / / API_KEY@default ?从=&messaging_profile_id=MESSAGING_PROFILE_ID |
TurboSms | 欧宝娱乐app下载地址symfony / turbo-sms-notifier |
turbosms: / / AUTH_TOKEN@default ?从= |
为什么Twilio | 欧宝娱乐app下载地址symfony / twilio-notifier |
为什么twilio: / / SID: TOKEN@default ?从= |
沃尼奇 | 欧宝娱乐app下载地址symfony / vonage-notifier |
vonage: / /关键:SECRET@default ?从= |
Yunpian | 欧宝娱乐app下载地址symfony / yunpian-notifier |
yunpian: / / APIKEY@default |
6.1
在Symfony 6.1中引入了46elks、OrangeSms、KazInfoTeh和Sendberry集成。欧宝娱乐app下载地址的no_stop_clause
选项Ovh欧宝体育应用最新版app下载Cloud
在Symfony 6.1中引入了DSN。欧宝娱乐app下载地址的测验
选项Smsapi
在Symfony 6.1中引入了DSN。欧宝娱乐app下载地址
6.2
在Symfony 6.2中引入了contacteeveryone和SMSFactor集成。欧宝娱乐app下载地址
若要启用文本器,请在您的.env
文件和配置texter_transports
:
1 2
# .envTWILIO_DSN =为什么twilio: / / SID: TOKEN@default ?从=
- YAML
- XML
- PHP
1 2 3 4 5
#配置/包/ notifier.yaml框架:通知:texter_transports:为什么twilio:' % env (TWILIO_DSN) %
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<!——config/packages/notifier.xml——> .xml<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:框架=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/symfony //www.oldmanjams.com/schema/dic/symfony/symfony-1.0.xsd”><框架:配置><框架:通知><框架:texter-transport的名字=“为什么twilio”>% env (TWILIO_DSN) %框架:texter-transport>框架:通知>框架:配置>容器>
1 2 3 4 5 6 7 8
/ /配置/包/ notifier.php使用欧宝娱乐app下载地址\配置\FrameworkConfig;返回静态函数(FrameworkConfig$框架){$框架->通知人()->texterTransport (“为什么twilio”env (“TWILIO_DSN”));};
聊天频道
聊天通道用于向用户发送聊天消息喋喋不休类。欧宝娱乐app下载地址Symfony提供了以下聊天服务的集成:
服务 | 包 | DSN |
---|---|---|
AmazonSns | 欧宝娱乐app下载地址symfony / amazon-sns-notifier |
sns: / / ACCESS_KEY: SECRET_KEY@default ?区域=区域 |
Chatwork | 欧宝娱乐app下载地址symfony / chatwork-notifier |
chatwork: / / API_TOKEN@default ?room_id = ID |
不和 | 欧宝娱乐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 |
欧宝娱乐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 |
Zendesk | 欧宝娱乐app下载地址symfony / zendesk-notifier |
zendesk: / /电子邮件:TOKEN@SUBDOMAIN |
Zulip | 欧宝娱乐app下载地址symfony / zulip-notifier |
zulip: / /电子邮件:TOKEN@HOST ?通道=通道 |
6.2
Zendesk和Chatwork集成是在Symfony 6.2中引入的。欧宝娱乐app下载地址
参数配置抖振chatter_transports
设置:
1 2
# .envSLACK_DSN =松弛:/ / TOKEN@default ?通道=通道
- YAML
- XML
- PHP
1 2 3 4 5
#配置/包/ notifier.yaml框架:通知:chatter_transports:松:' % env (SLACK_DSN) %
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<!——config/packages/notifier.xml——> .xml<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:框架=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/symfony //www.oldmanjams.com/schema/dic/symfony/symfony-1.0.xsd”><框架:配置><框架:通知><框架:chatter-transport的名字=“松弛”>% env (SLACK_DSN) %框架:chatter-transport>框架:通知>框架:配置>容器>
1 2 3 4 5 6 7 8
/ /配置/包/ notifier.php使用欧宝娱乐app下载地址\配置\FrameworkConfig;返回静态函数(FrameworkConfig$框架){$框架->通知人()->chatterTransport (“松弛”env (“SLACK_DSN”));};
电子邮件渠道
电子邮件通道使用欧宝娱乐app下载地址Symfony梅勒使用特殊发送通知NotificationEmail.需要安装的树枝桥与Inky和CSS内线树枝扩展:
1
$作曲家需要symfony/树枝-p欧宝娱乐app下载地址ack树枝/cssinliner-额外的树枝/墨水-额外
在这之后,配置邮件发送器.您还可以设置默认的“from”电子邮件地址,用于发送通知电子邮件:
- YAML
- XML
- PHP
1 2 3 4 5 6
#配置/包/ mailer.yaml框架:梅勒:dsn:' % env (MAILER_DSN) %信封:发送方:“notifications@example.com”
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
<!——config/packages/mailer.xml——> .xml<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:框架=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/symfony //www.oldmanjams.com/schema/dic/symfony/symfony-1.0.xsd”><框架:配置><框架:梅勒dsn=“% env (MAILER_DSN) %”><框架:信封发送方=“notifications@example.com”/>框架:梅勒>框架:配置>容器>
1 2 3 4 5 6 7 8 9 10
/ /配置/包/ mailer.php使用欧宝娱乐app下载地址\配置\FrameworkConfig;返回静态函数(FrameworkConfig$框架){$框架->梅勒()->dsn (env (“MAILER_DSN”))->信封()->发送者(“notifications@example.com”);};
推动渠道
推送通道用于通过使用向用户发送通知每人类。欧宝娱乐app下载地址Symfony提供了这些推送服务的集成:
服务 | 包 | DSN |
---|---|---|
Engagespot | 欧宝娱乐app下载地址symfony / engagespot-notifier |
engagespot: / / API_KEY@default ?campaign_name = campaign_name |
世博会 | 欧宝娱乐app下载地址symfony / expo-notifier |
世博会:/ / Token@default |
OneSignal | 欧宝娱乐app下载地址symfony / one-signal-notifier |
onesignal: / / APP_ID: API_KEY@default ?defaultRecipientId = DEFAULT_RECIPIENT_ID |
6.1
在Symfony 6.1中引入了Engagespot集成。欧宝娱乐app下载地址
若要启用文本器,请在您的.env
文件和配置texter_transports
:
1 2
# .envEXPO_DSN =世博会:/ / TOKEN@default
- YAML
- XML
- PHP
1 2 3 4 5
#配置/包/ notifier.yaml框架:通知:texter_transports:世博会:' % env (EXPO_DSN) %
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<!——config/packages/notifier.xml——> .xml<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:框架=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/symfony //www.oldmanjams.com/schema/dic/symfony/symfony-1.0.xsd”><框架:配置><框架:通知><框架:texter-transport的名字=“世博会”>% env (EXPO_DSN) %框架:texter-transport>框架:通知>框架:配置>容器>
1 2 3 4 5 6 7 8
/ /配置/包/ notifier.php使用欧宝娱乐app下载地址\配置\FrameworkConfig;返回静态函数(FrameworkConfig$框架){$框架->通知人()->texterTransport (“世博会”env (“EXPO_DSN”));};
配置为使用故障转移或循环传输
除了配置一个或多个单独的传输,还可以使用特殊||
而且& &
实现故障转移或循环传输的字符:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10
#配置/包/ notifier.yaml框架:通知:chatter_transports:#发送通知到Slack和使用Telegram# Slack出错主要:'%env(SLACK_DSN)% || %env(TELEGRAM_DSN)%'#发送通知到按轮询计算的下一个预定传输设置轮流捡取:'%env(SLACK_DSN)% && %env(TELEGRAM_DSN)%'
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
<!——config/packages/notifier.xml——> .xml<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:框架=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/symfony //www.oldmanjams.com/schema/dic/symfony/symfony-1.0.xsd”><框架:配置><框架:通知><!-发送通知到Slack,如果Slack出错使用Telegram -><框架:chatter-transport的名字=“松弛”>%env(SLACK_DSN)% || %env(TELEGRAM_DSN)%框架:chatter-transport><!——向轮询计算的下一个预定传输发送通知——><框架:chatter-transport的名字=“松弛”><![CDATA[ %env(SLACK_DSN)% && %env(TELEGRAM_DSN)% ]]>框架:chatter-transport>框架:通知>框架:配置>容器>
12 3 4 5 6 7 8 9 10 11 12 13
/ /配置/包/ notifier.php使用欧宝娱乐app下载地址\配置\FrameworkConfig;返回静态函数(FrameworkConfig$框架){$框架->通知人()//发送通知到Slack和使用Telegram如果// Slack错误->chatterTransport (“主要”env (“SLACK_DSN”).“||”.env (“TELEGRAM_DSN”))//发送通知到按轮询计算的下一个预定传输->chatterTransport (此“循环”env (“SLACK_DSN”).' && '.env (“TELEGRAM_DSN”));};
创建和发送通知
要发送通知,请自动连接NotifierInterface(服务标识通知人
).这个类有一个send ()
方法,该方法允许您发送通知到一个收件人:
12 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$通知人){/ /……//创建一个需要发送的通知//使用“email”通道$通知= (新通知(“新发票”, (“电子邮件”)))->内容(“你有一张15欧元的新发票。”);//通知的接收者$收件人=新收件人($用户->getEmail (),$用户->getPhonenumber ());//发送通知给收件人$通知人->发送($通知,$收件人);/ /……}}
的通知
通过使用两个参数创建:主题和通道。通道指定应该使用哪个通道(或传输)来发送通知。例如,(“电子邮件”、“短信”)
将向用户发送电子邮件和短信通知。
默认通知也有内容()
而且emoji ()
方法设置通知内容和图标。
欧宝娱乐app下载地址Symfony提供了以下接收者:
- NoRecipient
- 这是默认值,在不需要接收方信息时非常有用。例如,浏览器通道使用当前请求的会话flashbag;
- 收件人
- 这可以包含用户的电子邮件地址和电话号码。此接收者可用于所有通道(取决于是否实际设置了通道)。
配置通道策略
Symfony还允许使用通知重要性级别,而不是在创建时指定目标通道。欧宝娱乐app下载地址更新配置以指定应该为特定级别使用哪些通道(使用channel_policy
):
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14
#配置/包/ notifier.yaml框架:通知:#……channel_policy:#使用短信、Slack和电子邮件发送紧急通知紧急:(“短信”,“聊天/松弛”,“电子邮件”]#使用Slack处理非常重要的通知高:(“聊天/松弛”)使用浏览器发送中低级别通知介质:(“浏览器”)低:(“浏览器”)
12 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
<!——config/packages/notifier.xml——> .xml<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:框架=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd //www.oldmanjams.com/schema/dic/symfony //www.oldmanjams.com/schema/dic/symfony/symfony-1.0.xsd”><框架:配置><框架:通知><!——……--><框架:channel-policy><!使用短信、Slack和电子邮件进行紧急通知<框架:紧急>短信框架:紧急><框架:紧急>聊天/松弛框架:紧急><框架:紧急>电子邮件框架:紧急><!——使用Slack处理重要通知——><框架:高>聊天/松弛框架:高><!—使用浏览器进行中低级别通知—><框架:中等>浏览器框架:中等><框架:低>浏览器框架:低>框架:channel-policy>框架:通知>框架:配置>容器>
12 3 4 5 6 7 8 9 10 11 12 13 14 15
/ /配置/包/ notifier.php使用欧宝娱乐app下载地址\配置\FrameworkConfig;返回静态函数(FrameworkConfig$框架){/ /……$框架->通知人()//使用短信、Slack和电子邮件进行紧急通知->channelPolicy (“紧急”, (“短信”,“聊天/松弛”,“电子邮件”])//使用Slack处理重要通知->channelPolicy (“高”, (“聊天/松弛”])//使用浏览器进行中低级别通知->channelPolicy (“媒介”, (“浏览器”])->channelPolicy (“低”, (“浏览器”]);};
现在,当通知的重要性被设置为“high”时,它将使用Slack传输发送:
12 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 ()
方法只返回短信
如果发票价格很高,收货人有电话号码:
12 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 ()
方法:
12 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{//如果发送到Slack,则添加自定义主题和表情符号如果(“松弛”===$运输) {$这->主题(“你有发票”.strval ($这->价格)。“欧元”。);$这->emoji (“钱”);返回ChatMessage::fromNotification ($这);}//如果你返回null, Notifier将创建ChatMessage//基于这个通知,就像没有这个方法一样。返回零;}}
的SmsNotificationInterface,EmailNotificationInterface而且PushNotificationInterface也存在用于修改发送到这些通道的消息。
自定义浏览器通知(Flash消息)
6.1
Symfony 6.1中引入了对自定义重要性级别的支持。欧宝娱乐app下载地址
浏览器通道通知的默认行为是添加flash的消息与通知
作为它的关键。
但是,您可能更喜欢将通知的重要性级别映射到flash消息的类型,这样就可以调整它们的样式。
您可以通过重写默认值来实现这一点notifier.flash_message_importance_mapper
的实现FlashMessageImportanceMapperInterface在这里,您可以提供自己的“重要性”到“警报级别”映射。
欧宝娱乐app下载地址Symfony目前为Bootstrap CSS框架的典型警报级别提供了一个实现,您可以使用以下方法立即实现:
- YAML
- XML
- PHP
1 2 3 4
#配置/ services.yaml服务:notifier.flash_message_importance_mapper:类:欧宝娱乐app下载地址Symfony \ \通知\ FlashMessage \ BootstrapFlashMessageImportanceMapper组件
1 2 3 4 5 6 7 8 9 10
<??> . xml version="1.0" encoding="UTF-8"<容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><服务><服务id=“notifier.flash_message_importance_mapper”类=“欧宝娱乐app下载地址Symfony \组件\通知\ FlashMessage \ BootstrapFlashMessageImportanceMapper”/>服务>容器>
1 2 3 4 5 6 7 8 9 10
/ /配置/ services.php名称空间欧宝娱乐app下载地址\组件\DependencyInjection\加载程序\配置器;使用欧宝娱乐app下载地址\组件\通知人\FlashMessage\BootstrapFlashMessageImportanceMapper;返回函数(ContainerConfigurator$containerConfigurator){$containerConfigurator->服务()->集(“notifier.flash_message_importance_mapper”, BootstrapFlashMessageImportanceMapper::类);};
测试的通知
欧宝娱乐app下载地址Symfony提供了一个NotificationAssertionsTrait它为测试你的通知器实现提供了有用的方法。类的扩展可以从该类中获益KernelTestCase.
看到测试文档欧宝体育电话获取可用断言的列表。
6.2
的NotificationAssertionsTrait在Symfony 6.2中引入。欧宝娱乐app下载地址
禁用交付
在开发(或测试)时,您可能希望完全禁用通知的传递。可以通过强制Notifier使用NullTransport
中的所有已配置的文本和聊天传输dev
(和/或测验
)环境:
1 2 3 4 5 6 7
#配置/包/ dev / notifier.yaml框架:通知:texter_transports:为什么twilio:“零:/ /空”chatter_transports:松:“零:/ /空”