Email at push notifications
Ipinapadala ng Antimatter ang email para sa mga imbitasyon, pag-reset ng password, pagsusuri, at mga hindi natanggap na mensahe, at ang mga push notification sa mobile app gamit ang push proxy. Hindi sila gagana hangga't hindi mo sila i-configure.
Outgoing email (SMTP)
Ipinapadala ng Antimatter ang email gamit ang SMTP server na ibibigay mo: ang mail server ng iyong organisasyon, o isang transactional email service. Kung wala ito, hindi maaaring i-reset ng mga tao ang kanilang nakalimutan na password, hindi darating ang mga email na imbitasyon at pagsusuri, at walang makakatanggap ng email na notisikasyon ng mga hindi natanggap na mensahe.
I-set ito sa System Console › Environment › SMTP, o gamit ang mga variable:
| Setting | Key at variable | Default |
|---|---|---|
| SMTP Server | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| SMTP Server Port | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| Pahintulutan ng SMTP Authentication | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | off kung walang connection security, on kung mayroon |
| SMTP Server Username | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | walang laman |
| Password ng SMTP Server | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | walang laman |
| Seguridad ng Koneksyon | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | Wala (blangko); o TLS o STARTTLS |
| Laktawan ang Pag-verify ng Certificate ng Server | EmailSettings.SkipServerCertificateVerification | off. Iwanan itong off sa production. |
Gumamit ng STARTTLS sa port 587 o TLS sa port 465, ayon sa sinasabi ng iyong provider. Pagkatapos, pindutin ang Test ng Connection sa parehong pahina: magpapadala ng test email ang Antimatter sa sarili mong address.
Isang karaniwang setup gamit ang Docker Compose, sa compose.override.yaml katabi ng compose.yaml:
services:
antimatter:
environment:
AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
AM_EMAILSETTINGS_SMTPPORT: "587"
AM_EMAILSETTINGS_CONNECTIONSECURITY: STARTTLS
AM_EMAILSETTINGS_ENABLESMTPAUTH: "true"
AM_EMAILSETTINGS_SMTPUSERNAME: chat@example.com
AM_EMAILSETTINGS_SMTPPASSWORD: ${SMTP_PASSWORD}
AM_EMAILSETTINGS_FEEDBACKNAME: Antimatter
AM_EMAILSETTINGS_FEEDBACKEMAIL: chat@example.com
AM_EMAILSETTINGS_REPLYTOADDRESS: chat@example.com
Ilagay ang SMTP_PASSWORD sa .env. Ang compose file ng site ay naglalagay ng server sa default network, na may access sa Internet, kaya maaari nitong maabot ang isang SMTP server sa labas.
Mga setting ng sender at notification email
Sa System Console › Konfigurasyon ng Site › Mga Notisikasyon:
| Setting | Susi | Default |
|---|---|---|
| Paganahin ang Email Notifications | EmailSettings.SendEmailNotifications | on |
| Mga Notisikasyon Display Name | EmailSettings.FeedbackName | walang laman |
| Mga Notisikasyon Mula sa Address | EmailSettings.FeedbackEmail | test@example.com: baguhin ito |
| Mga Notisikasyon Reply-To Address | EmailSettings.ReplyToAddress | test@example.com: baguhin ito |
| Address ng Email ng Suporta | SupportSettings.SupportEmail | walang laman |
| Mga Notisikasyon Footer Mailing Address | EmailSettings.FeedbackOrganization | walang laman |
| Nilalaman ng Email Notification | EmailSettings.EmailNotificationContentsType | Ipadala ang buong nilalaman ng mensahe (full), o isang pangkalahatang paglalarawan na may pangalan ng sender lamang (generic) |
| Paggamitan ang Email Batching | EmailSettings.EnableEmailBatching | off. Kung on, maaari ng mga tao na pumili na makatanggap ng mga hindi natanggap na mensahe na nakagroup sa isang email bawat 15 minuto o bawat oras, sa halip na isang email bawat isa. |
| Gumamit ng Pangalan ng Channel sa Email Notifications | EmailSettings.UseChannelInEmailNotifications | Off |
| Paggamitan ang Preview Mode Banner | EmailSettings.EnablePreviewModeBanner | on: habang off ang mga email na notisikasyon, ipapahiwatig ng banner sa mga administrator na hindi naka-configure ang email |
Ang From address ay dapat isa sa mga address na pwedeng gamitin ng iyong SMTP server para magpadala ng email; i-configure ang SPF at DKIM para sa domain nito, o kaya ay malulundag ang mga email sa spam folder.
Ang mga setting para sa sign-in na may kaugnayan sa email (halimbawa, kung kailangan ng mga bagong account na i-verify ang kanilang address, o kung maaaring magpadala ng imbitasyon sa pamamagitan ng email) ay nasa Sign-in and accounts.
Mga push notification sa mobile app
Paano gumagana ang push
Hindi kausap ng Antimatter ang Apple o Google mismo. Para sa bawat notification, tinatawag nito ang isang push proxy, na nagbabantay ng mga credentials ng mobile app at nagpapasa ng notification sa Apple (APNs) para sa mga iPhone at sa Google (Firebase Cloud Messaging) para sa mga Android phone. Ipinapasa lamang ng Apple at Google ang notification kapag ipinadala ito gamit ang credentials ng app na para rito. Kaya ang push proxy ay gumagana sa isang build ng mobile app: yung kung saan hawak nito ang credentials.
- Hindi pinapatakbo ng Antimatter ang pampublikong push proxy. Ikaw ang nagpapatakbo ng push proxy ng Antimatter, gamit ang credentials ng build ng mobile app na ini-install ng mga user mo.
- Hindi ipinapadala ng Antimatter ang mga notification sa mga push service ng Mattermost, test o hosted: para lamang sila sa mga sariling mobile app ng Mattermost. Kung naka-set ang server sa isa sa kanilang address (halimbawa,
https://push-test.mattermost.com, na ginagamit ng mga lumang configuration ng Mattermost), wala itong ipinapadala at naglala ng warning sa pag-startup.
Ang bagong server ay walang push notification server, kaya wala itong ipinapadala na push notification hangga't hindi mo naka-set ang address ng iyong push proxy. Hanggang doon, gumagana ang mobile app pero walang natatanggap na notification.
Patakbuhin ang push proxy
Nasa push-proxy repository ang push proxy. Ipinalanag ng README nito kung paano makakuha ng dalawang credentials, na galing sa mga account na nagpapalabas ng iyong build ng mobile app:
- Android: isang service account file ng Firebase project na ginagamit ng iyong Android build.
- iOS: isang APNs authentication key (
AuthKey_<KEY ID>.p8) ng Apple developer account na nagpapalabas ng iyong iOS build, kasama ang key ID at team ID nito.
Ilagay ito sa tabi ng compose.yaml, kasama ang configuration file ng proxy:
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json, kasama ang iyong bundle identifier, key ID, at team ID:
{
"ListenAddress": ":8066",
"ThrottlePerSec": 300,
"ThrottleMemoryStoreSize": 50000,
"ThrottleVaryByHeader": "X-Forwarded-For",
"EnableMetrics": false,
"SendTimeoutSec": 30,
"RetryTimeoutSec": 8,
"ApplePushSettings": [
{
"Type": "apple_rn",
"ApplePushUseDevelopment": false,
"ApplePushTopic": "chat.antimatter.app",
"AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8",
"AppleAuthKeyID": "ABCDE12345",
"AppleTeamID": "FGHIJ67890"
}
],
"AndroidPushSettings": [
{
"Type": "android_rn",
"ServiceFileLocation": "./certs/firebase-service-account.json"
}
],
"EnableConsoleLog": true,
"EnableFileLog": false,
"LogFormat": "plain",
"LogLevel": "info"
}
Ang ApplePushTopic ay ang iOS bundle identifier ng iyong build. Ang ApplePushUseDevelopment ay true lamang para sa mga build na na-install mula sa Xcode. Ang mga tawag ay tumatawag sa mga iPhone gamit ang VoIP pushes, na gumagamit ng parehong key at hindi nangangailangan ng karagdagang bagay dito.
May handa na karagdagang configuration sa compose file ang site, compose.push.example.yaml. Pinapatakbo nito ang published image, ghcr.io/antimatterchat/push-proxy:latest.
curl -fsSLO https://antimatter.chat/compose.push.example.yaml
docker compose -f compose.yaml -f compose.push.example.yaml --profile push up -d
docker compose -f compose.yaml -f compose.push.example.yaml logs push-proxy
Noong simula, tinatawag ng log ng proxy ang bawat push target na itinatag nito, at naglalarawan ng error para sa anumang hindi ma-load ang credentials. Walang ipinapublikong port ang proxy: Antimatter lamang ang makakapag-access dito, sa pamamagitan ng compose network.
Kung walang Docker, i-install ang .deb o .rpm package ng push proxy sa halip: tingnan ang Mga package ng GIF service at push proxy.
Ituro ang Antimatter sa proxy
Sa System Console › Environment › Push Notification Server, itakda ang Paganahin ang Push Notification sa Magpadala ng mga push notification sa pamamagitan ng sarili mong push proxy, at ang Push Notification Server sa http://push-proxy:8066 (o ang HTTPS address ng proxy kung nasa ibang lugar ito). Hindi ma-save ang pahinang ito kung naka-set ang opsyong ito ngunit wala ang address. Para huminto sa pagpadala ng mga push notification, piliin ang Huwag magpadala ng push notification. O gamit ang mga variable sa antimatter service:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
Para sa pagsusuri: mag-sign in gamit ang mobile app, ilagay ito sa background, at mag-mention sa iyo gamit ang ibang account. Kung wala namang dumating, hanapin ang push sa log ng Antimatter at sa log ng proxy: sinasabi nila kung hindi kilala ang uri ng device, tinanggihan ang key, o kung ang device ay kabilang sa ibang app build.
Laman ng mga notisikasyon
System Console › Konfigurasyon ng Site › Mga Notisikasyon › Mga Nilalaman ng Push Notisikasyon (EmailSettings.PushNotificationContents):
| Opsyon | Halaga |
|---|---|
| Pangkalahatang paglalarawan na may pangalan ng nagpadala lamang | generic_no_channel |
| Pangkalahatang paglalarawan na may pangalan ng nagpadala at ng channel | generic |
| Buong nilalaman ng mensahe na ipinadala sa payload ng notisikasyon (default) | full |
| Buong nilalaman ng mensahe na hinihango mula sa server kapag natanggap | id_loaded |
Gamit ang id_loaded, ang notisikasyong dumadaan sa proxy, Apple, at Google ay may id lamang, at hihango ng app ang mensahe mula sa iyong server: hindi lalampas sa kanilang serbisyo ang text ng mensahe. Ito ang pinakamainam na pagpipilian kapag ang mga mensahe ay kumpidensyal.
Ang Large Channel Notification Threshold, sa pahina ng Push Notification Server, (TeamSettings.MaxNotificationsPerChannel, 1000 ang default) ang pinakamataas na bilang ng miyembro na maaaring mayroon ang isang channel para gumana ang @here, @all, at @channel. Sa mas malalaking channel, patay ang mga mention na iyon at ang mga typing indicator.