Notifiche每合唱
Notifiche每合唱
L 'applicazione留言板raccoglie我反馈sulle conferenze。马不我们是bravi敢反馈ai nostri utenti。
索诺Poiche我commenti moderati, probabilmente gli utenti非capiranno鲈鱼我洛commenti非vengono pubblicati immediatamente。Potrebbero传递re-inviarli pensando格瓦拉ci siano stati一些problemi等。敢洛联合国反馈dopo断言inviato联合国commento sarebbe可笑的怪人。
Inoltre, probabilmente dovremmo远洛sapere quando il commento e stato pubblicato。Chiediamo拉洛电子邮件、篇faremmo usarla meglio广告。
Ci园子molti莫迪每notificare gli utenti。L 'e-mail e il大哥中央一个崔si potrebbe pensare,马e传递相信inviare notifiche内尔'applicazione网络。Potremmo传递pensare di inviare messaggi SMS, postare联合国messaggio苏松弛o电报。Ci园子molte opzioni。
Il componente通知di Symfony并ob娱乐下载di notifica molte策略。
Invio di notifiche tramite浏览器
初来的航道,notifichiamo direttamente nel浏览器agli utenti切我commenti园子moderati dopo il洛invio:
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 32 33 34
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ -15 6 + 15 8 @@使用Syob娱乐下载mfony \ HttpFoundation \ \组件文件\ \ FileException异常;使用Syob娱乐下载mfony \ HttpFoundation \ \组件请求;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\ \ MessageBusInterface使者;+使用Syob娱乐下载mfony \组件\ \通知\通知通知;+使用Syob娱乐下载mfony \ \通知\ NotifierInterface组件;使用Syob娱乐下载mfony \组件\路由\注释\路线;类ConferenceController延伸AbstractController @@ -46年6 + 48岁,7美元@@类ConferenceController扩展AbstractController请求请求,会议会议上,美元CommentRepository CommentRepository美元,+ NotifierInterface通知美元,#【自动装配(% photo_dir %)]字符串photoDir美元,反应):{$评论=新的评论();@@ -74、9 + 77,15 @@类ConferenceController延伸AbstractController];$ this - >总线- >调度(新CommentMessage (- > getId()发表评论,美元上下文));+ $通知- >发送(新通知('谢谢你的反馈;你的评论将被审核后发布。”,(“浏览器”)));+返回$ this - > redirectToRoute(“会议”,(“鼻涕虫”= > $会议- > getSlug ()));}+如果($形式- > isSubmitted ()) {+ $通知- >发送(新通知(“你能检查你的提交吗?有一些问题。”,(“浏览器”)));+}+抵消美元= max(0, $请求- >查询- > getInt(“抵消”,0));$ paginator = $ commentRepository - > getCommentPaginator(会议,抵消美元);
Il notificatoreinviaunanotifica人工智能destinatariattraverso联合国canale。
Una notifica ha联合国oggetto联合国contenuto facoltativo联合国'importanza e。
阿苏Una notifica viene inviata uno稍canali德拉自安和苏阿importanza。通过短信E E相信inviare notifiche urgenti notifiche regolari,广告esempio,通过电子邮件。
每le notifiche nel浏览器,非abbiamo destinatari。
La notifica utilizza nel浏览器messaggi闪光tramite la sezionenotifiche。德拉conferenza Dobbiamo visualizzarli aggiornando il模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- - - /模板/会议/ show.html.twig+ + + b /模板/会议/ show.html.twig13 @@ @@ 3 6 + 3{%块标题%}会议留言板,{{会议}}{% endblock %}{%块体%}在app.flashes +{%为消息(“通知”)%}+ < div class = "警报alert-info alert-dismissible褪色秀”>+{{消息}}+ <按钮类型=“按钮”class =“btn-close data-bs-dismiss =“警报”aria-label = "关闭" > < span aria-hidden = " true " >报;< / span > < /按钮>+ < / div >+ {% endfor %}+< h2类= " mb-5 " > < / h2 >{{会议}}会议
Gli utenti saranno ora informati格瓦拉l 'invio di commenti e中板的:
奖金aggiuntivo, abbiamo una贝拉notifica所以nella杰克逊superiore在卡索德尔sito di errori nel形式:
提示
我messaggi Flash utilizzano sistema disessione HTTPsupporto di memorizzazione来。La conseguenza眼光e格瓦拉La缓存HTTP e disabilitata quanto il sistema di sessione deve essere avviato每controllare La presenza di messaggi。
崔Questo e il motivo每abbiamo aggiunto lo片段一些messaggi flash nel模板show.html.twig
e非quello di基地,每非perdere la缓存HTTP / la主页。
Notificare gli amministratori通过电子邮件
Invece di avvisare l 'amministratore格瓦拉联合国commento e stato appena pubblicato, attraversoMailerInterface
,usiamo componente通知内尔'handler一些messaggi:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45
推荐- - - - - - MessageHandler / src / / CommentMessageHandler.php+ + + MessageHandler b / src / / CommentMessageHandler.php@@ 4,15 + 4,15 @@名称空间应用\ MessageHandler;使用App \ ImageOptimizer;使用App \ \ CommentMessage消息;+使用App \ \ CommentReviewNotification通知;使用App \ Repository \ CommentRepository;使用App \ SpamChecker;使用原则\ ORM \ EntityManagerInterface;使用日志Psr \ \ LoggerInterface;桥用Symob娱乐下载fony \ \树枝\ Mime \ NotificationEmail;使用Syob娱乐下载mfony \ DependencyInjection \属性\ \组件自动装配;用Symfob娱乐下载ony \ \梅勒\ MailerInterface组件;使用Syob娱乐下载mfony \信使\ \组件属性\ AsMessageHandler;使用Syob娱乐下载mfony \组件\ \ MessageBusInterface使者;+使用Syob娱乐下载mfony \ \通知\ NotifierInterface组件;使用Syob娱乐下载mfony \工作流组件\ \ WorkflowInterface;# [AsMessageHandler] @@ -24, 8 + 24日7 @@类CommentMessageHandler私有CommentRepository CommentRepository美元,美元私人MessageBusInterface巴士,私人WorkflowInterface commentStateMachine美元,——美元私人MailerInterface梅勒,- #【自动装配(% admin_email %)]私人字符串adminEmail美元,+私人NotifierInterface通知美元,私人ImageOptimizer ImageOptimizer美元,#【自动装配(% photo_dir %)]私人字符串photoDir美元,私人? LoggerInterface $记录器= null, @@ -50年13 + 49岁7 @@类CommentMessageHandler $ this - > entityManager - >冲洗();$ this - >总线- >调度($消息);}elseif ($ this - > commentStateMachine - >(评论,美元“发布”)| | $ this - > commentStateMachine - >(评论美元,publish_ham)) {- $ this - >梅勒- >发送((新NotificationEmail ())- - - - - - - >主题(“新评论”)- - > htmlTemplate(邮件/ comment_notification.html.twig)- - > ($ this - > adminEmail)- - > ($ this - > adminEmail)- - - - - - - >上下文([“评论”= >评论美元])-);+ $ this - >通知- >发送(新CommentReviewNotification(评论美元),…$ this - >通知- > getAdminRecipients ());}elseif ($ this - > commentStateMachine - >(评论美元,“优化”)){如果($评论- > getPhotoFilename ()) {$ this - > imageOptimizer - >调整($ this - > photoDir‘/’。$评论- > getPhotoFilename ());
Il metodogetAdminRecipients ()
restituisce我destinatari“amministratori”configurato内尔impostazioni del通知;每aggiungere aggiorniamolo ora il我方indirizzo电子邮件:
1 2 3 4 5 6 7 8
- - - / config /包/ notifier.yaml+ + + b / config /包/ notifier.yaml@@ -13 4 + 13 4 @@框架:媒介:['邮件']低:['邮件']admin_recipients:——{电子邮件:admin@example.com}+ -{电子邮件:“% env (string:默认值:default_admin_email: ADMIN_EMAIL) %”}
奥拉,creiamo架势CommentReviewNotification
:
Il metodoasEmailMessage ()
,definito内尔'interfacciaEmailNotificationInterface
e opzionale,让马能di personalizzare l 'email。
Uno一些vantaggi内尔'utilizzo del通知al posto餐馆德尔·梅勒每inviare电子邮件、e la separazione交易notifica e il utilizzato / inviarla“塔”。来possiamo vedere,木棒骰子esplicitamente格瓦拉la notifica deve essere inviata通过电子邮件。
Il canale viene invece configurato nel文件配置/包/ notifier.yaml
funzione戴尔的importanza德拉notifica (predefinita低
):
Abbiamo parlato一些canali电子邮件
e浏览器
。Vediamone altri。
Chattare con gli amministratori
我们是幅,aspettiamo合奏positivo联合国反馈。O almeno costruttivo联合国反馈。Se qualcuno pubblica联合国commento监狱假释来“大”啊“怪人”,potremmo volerli accettare稍velocemente degli altri。
苏每斜面messaggi, vogliamo essere avvisati联合国sistema di messaggistica istantanea松弛o电报,在aggiunta真主安拉正posta elettronica。
Installare il supporto di松弛/ Symfonyob娱乐下载通知:
1
美元ob娱乐下载symfony作曲家点播slack-notifier
每iniziare costruiamo il DSN /松弛。Ci occorre il标记e l 'identificativo del canale松弛崔inviare我messaggi:松:/ / ACCESS_TOKEN@default ?通道=通道
。
Poiche il牌di accesso deve essere riservato, salviamo il DSN /松弛nel portachiavi:
1
美元ob娱乐下载symfony控制台的秘密:集SLACK_DSN
票价lo stesso / l 'ambiente di produzione:
1
美元ob娱乐下载symfony控制台的秘密:集SLACK_DSN - env =刺激
Attivare il supporto真主安拉聊天松弛:
1 2 3 4 5 6 7 8 9 10 11 12
- - - / config /包/ notifier.yaml+ + + b / config /包/ notifier.yaml7 + 1,7 @@ @@ 1日框架:通知:- # chatter_transports:- #松弛:' % env (SLACK_DSN) % '+ chatter_transports:+松:“% env (SLACK_DSN) %”#电报:“% env (TELEGRAM_DSN) %”# texter_transports: #为什么twilio: ' % env (TWILIO_DSN) % '
每inviare Aggiorniamo la架势di notifica我messaggi自▽contenuto▽服务del commento (usiamo联合国'espressione regolare):
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日
- - - / src /通知/ CommentReviewNotification.php+ + + b / src / / CommentReviewNotification.php通知@@ 7,6 + 7,7 @@使用Symob娱乐下载fony \组件\ \ EmailMessage通知\消息;组件使用ob娱乐下载Symfony \ \通知\ \ EmailNotificationInterface通知;使用Syob娱乐下载mfony \组件\ \通知\通知通知;使用Syob娱乐下载mfony \组件\通知\接受者\ EmailRecipientInterface;+使用Syob娱乐下载mfony \组件\通知\接受者\ RecipientInterface;类CommentReviewNotification扩展通知实现EmailNotificationInterface{@@ -26年4 + 27日15 @@类CommentReviewNotification扩展通知实现EmailNotificatio返回美元消息;}++公共职能getChannels (RecipientInterface接收美元):数组+ {+如果(preg_match (' {\ b(好棒|)\ b}我,$ this - >评论- > getText ())) {+返回(“电子邮件”,“聊天/松弛”);+}++ $ this - >重要性(通知::IMPORTANCE_LOW);++返回(“电子邮件”);+}}
Abbiamo传递cambiato l 'importanza一些commenti“regolari”quanto questo modifica leggermente il戴尔'email设计。
E fatta !Inviando联合国commento con scritto“awesome”nel服务,dovremmo ricevere联合国messaggio松弛。
每quanto riguarda la posta elettronica e相信implementare l 'interfacciaChatNotificationInterface
每cambiare il呈现predefinito一些messaggi松弛:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
- - - / src /通知/ CommentReviewNotification.php+ + + b / src / / CommentReviewNotification.php通知18 @@ @@ 3 13 + 3名称空间的应用程序\通知;使用App \实体\评论;+使用Syob娱乐下载mfony \桥组件\通知\ \松弛\ \ SlackDividerBlock块;+使用Syob娱乐下载mfony \桥组件\通知\ \松弛\ \ SlackSectionBlock块;+使用Syob娱乐下载mfony \桥组件\通知\ \松弛\ SlackOptions;+使用Syob娱乐下载mfony \组件\ \ ChatMessage通知\消息;使用Syob娱乐下载mfony \组件\ \ EmailMessage通知\消息;+使用Syob娱乐下载mfony \组件\通知\ \ ChatNotificationInterface通知;组件使用ob娱乐下载Symfony \ \通知\ \ EmailNotificationInterface通知;使用Syob娱乐下载mfony \组件\ \通知\通知通知;使用Syob娱乐下载mfony \组件\通知\接受者\ EmailRecipientInterface;使用Syob娱乐下载mfony \组件\通知\接受者\ RecipientInterface;海尔集团实现EmailNotificationInterface CommentReviewNotification扩展了通知+类CommentReviewNotification扩展通知实现EmailNotificationInterface, ChatNotificationInterface{公共职能__construct(私人评论评论,美元@@ -28年6 + 33岁28 @@类CommentReviewNotification扩展通知实现EmailNotificatio返回美元消息;}+公共职能asChatMessage (RecipientInterface接收美元,字符串$运输= null): ? ChatMessage+ {+如果(“松弛”! = =运输美元){+返回null;+}++ $消息= ChatMessage: fromNotification(这一点,接受美元,美元运输);+ $消息- >主题($ this - > getSubject ());新SlackOptions + $消息- >选项((())+ - > iconEmoji(“大作”)+ - > iconUrl (“https://guestbook.example.com”)+ - >用户名(“留言板”)+ - >块((新SlackSectionBlock()) - >文本($ this - > getSubject ()))+ - >块(新SlackDividerBlock ())新SlackSectionBlock + - >块((())+ - >文本(sprintf (' % s (% s)说:% s的,$ this - >评论- > getAuthor (), $ this - >评论- > getEmail (), $ this - >评论- > getText ()))+)+);++返回美元消息;+}+公共函数getChannels (RecipientInterface接收美元):数组{如果(preg_match (“{\ b(好棒|)\ b}我,$ this - >评论- > getText ())) {
马E meglio facciamo联合国航道avanti这样说。阿波特非sarebbe可笑的怪人accettare rifiutare联合国commento direttamente da松弛吗?
每accettare Modifichiamo la notifica l 'URL di revisione e aggiungere由于pulsanti nel messaggio松弛:
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
- - - / src /通知/ CommentReviewNotification.php+ + + b / src / / CommentReviewNotification.php通知@@ 3、6 + 3、7 @@名称空间的应用程序\通知;使用App \实体\评论;+使用Syob娱乐下载mfony \桥组件\通知\ \松弛\ \ SlackActionsBlock块;桥组件使ob娱乐下载用Symfony \ \通知\ \松弛\ \ SlackDividerBlock块;桥组件使ob娱乐下载用Symfony \ \通知\ \松弛\ \ SlackSectionBlock块;使用Syob娱乐下载mfony \桥组件\通知\ \松弛\ SlackOptions;@@ -18、6 + 19日7 @@类CommentReviewNotification扩展通知实现EmailNotificatio{公共职能__construct(私人评论评论,美元+私人字符串reviewUrl美元,){父:__construct(“新评论”);6 + 52}@@ -50年,10 @@类CommentReviewNotification扩展通知实现EmailNotificatio - >块((新SlackSectionBlock()) - >文本(sprintf (“% s (% s)说:% s的,$ this - >评论- > getAuthor (), $ this - >评论- > getEmail (), $ this - >评论- > getText ())))新SlackActionsBlock + - >块((())+ - >按钮(“接受”,$ this - > reviewUrl,“主要”)+ - >按钮(“拒绝”,$ this - > reviewUrl。”?拒绝= 1”、“危险”)+));返回美元消息;
奥拉斯tratta di seguire cambiamenti ritroso。初来航道aggiorniamo l 'handler一些messaggi affinche includa l 'URL di revisione:
1 2 3 4 5 6 7 8 9 10 11 12
推荐- - - - - - MessageHandler / src / / CommentMessageHandler.php+ + + MessageHandler b / src / / CommentMessageHandler.php@@ -49 7 + 49 8 @@类CommentMessageHandler $ this - > entityManager - >冲洗();$ this - >总线- >调度($消息);}elseif ($ this - > commentStateMachine - >(评论,美元“发布”)| | $ this - > commentStateMachine - >(评论美元,publish_ham)) {- $ this - >通知- >发送(新CommentReviewNotification(评论美元),…$ this - >通知- > getAdminRecipients ());+ $ = new CommentReviewNotification通知(评论,美元消息- > getReviewUrl ());+ $ this - >通知- >发送(通知、美元…$ this - >通知- > getAdminRecipients ());}elseif ($ this - > commentStateMachine - >(评论美元,“优化”)){如果($评论- > getPhotoFilename ()) {$ this - > imageOptimizer - >调整($ this - > photoDir‘/’。$评论- > getPhotoFilename ());
年青一代si vedere, l 'URL di recensione dovrebbe essere杰克逊del commento aggiungiamolo奥拉:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- - - / src /信息/ CommentMessage.php+ + + b / src /信息/ CommentMessage.php@@ 6、10 + 6、16 @@类CommentMessage{公共函数__construct(私人int id,美元+私人字符串reviewUrl美元,私人数组$上下文= []){}+公共职能getReviewUrl():字符串+ {+ $ this - > reviewUrl返回;+}+公共函数getId (): int{返回$ this - > id;
大概意思,aggiornare我控制器/ generare l 'URL di revisione e passarlo al costruttore del commento:
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 32 33 34 35 36 37 38 39
- - - / src /控制器/ AdminController.php+ + + b / src /控制器/ AdminController.php@@ -12 6 + 12 7 @@使用Syob娱乐下载mfony \组件\ HttpKernel \ HttpCache \ StoreInterface;使用Syob娱乐下载mfony \ \ HttpKernel \ KernelInterface组件;使用Syob娱乐下载mfony \组件\ \ MessageBusInterface使者;使用Syob娱乐下载mfony \组件\路由\注释\路线;+使用Syob娱乐下载mfony \组件\ \发电机\ UrlGeneratorInterface路由;使用Syob娱乐下载mfony \工作流组件\ \ WorkflowInterface;用树枝\环境;@@ -42 43 7 + 8 @@类AdminController延伸AbstractController $ this - > entityManager - >冲洗();如果(接受美元){总线- $ this - > - >调度(新CommentMessage($评论- > getId ()));+ $ reviewUrl = $ this - > generateUrl (“review_comment”, (“id”= > $评论- > getId ()], UrlGeneratorInterface:: ABSOLUTE_URL);+ $ this - >总线- >调度(新CommentMessage(评论- > getId (), reviewUrl美元));}返回新的反应($ this - >树枝>渲染(“admin / review.html。嫩枝”,(- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ -18 6 + 18 7 @@使用Syob娱乐下载mfony \组件\ \ MessageBusInterface使者;使用Syob娱乐下载mfony \组件\ \通知\通知通知;使用Syob娱乐下载mfony \ \通知\ NotifierInterface组件;使用Syob娱乐下载mfony \组件\路由\注释\路线;+使用Syob娱乐下载mfony \组件\ \发电机\ UrlGeneratorInterface路由;类ConferenceController延伸AbstractController{@@ -75、7 + 76、8 @@类ConferenceController延伸AbstractController“推荐人”= >请求- >标题- >获取美元(“推荐人”)、“永久链接”= > $请求- > getUri ()];总线- $ this - > - >调度(新CommentMessage (- > getId()发表评论,美元上下文));+ $ reviewUrl = $ this - > generateUrl (“review_comment”, (“id”= > $评论- > getId ()], UrlGeneratorInterface:: ABSOLUTE_URL);+ $ this - >总线- >调度(新CommentMessage(评论- > getId (), reviewUrl美元,美元上下文));$通知- >发送(新通知('谢谢你的反馈;你的评论将被审核后发布。”,(“浏览器”)));
Disaccoppiare il配置significa票价cambiamenti在更合适的婚姻对象,马仁德il配置更灵巧的da testare validare e riutilizzare。
Riproviamoci, messaggio dovrebbe essere ora corretto:
在全体的il progetto Chiamate asincrone
反对le impostazioni predefinite le notifiche园子inviate在maniera asincrona,阿勒电子邮件:
Se avessimo disabilitato我mesasggi asincroni, avremmo avuto联合国leggero问题。每ogni commento riceviamo联合国'e-mail e联合国messaggio松弛。Se il messaggio松弛e errato (id canale sbagliato、令牌sbagliato ....),信使riprovera混乱关系回prima scartare messaggio。马siccome l 'email viene inviata每prima riceveremo混乱关系邮件e nessun messaggio松弛。
非appena全体的e asincrono,我messaggi diventano indipendenti。我messaggi SMS园子gia configurati asincroni内尔卡索在崔volessimo essere avvisati电话号码。
Notificare gli utenti通过电子邮件
L 'ultimo punto e di quello notificare gli utenti quando il洛commento e approvato。切不一点儿di implementarlo da独唱吗?
而oltre