A seção identifica todos os serviços suportados por esta biblioteca. Confira o wiki para obter mais informações sobre os módulos suportados aqui.
A tabela abaixo identifica os serviços que esta ferramenta suporta e alguns exemplos de URLs de serviço que você precisa usar para aproveitá-la. Clique em qualquer um dos serviços listados abaixo para obter mais detalhes sobre como você pode configurar o Apprise para acessá-los.
Serviço de Notificação | ID do serviço | Porta padrão | Sintaxe de exemplo |
---|---|---|---|
Informar API | informar:// ou informar:// | (TCP) 80 ou 443 | informar://hostname/Token |
AWSSES | ses:// | (TCP) 443 | ses://usuário@domínio/AccessKeyID/AccessSecretKey/RegionName ses://usuário@domínio/AccessKeyID/AccessSecretKey/RegionName/email1/email2/emailN |
Latido | latido:// | (TCP) 80 ou 443 | latido: // nome do host latir://hostname/device_key latir://hostname/device_key1/device_key2/device_keyN late: // nome do host late:://hostname/device_key late:://hostname/device_key1/device_key2/device_keyN |
Chantificar | cantar:// | (TCP) 443 | cantar://token |
Discórdia | discórdia:// | (TCP) 443 | discord://webhook_id/webhook_token discord://avatar@webhook_id/webhook_token |
Emby | emby:// ou embys:// | (TCP) 8096 | emby://usuário@nomedohost/ emby://usuário:senha@nome do host |
Enigma2 | enigma2:// ou enigma2s:// | (TCP) 80 ou 443 | enigma2: // nome do host |
FCM | fcm:// | (TCP) 443 | fcm://projeto@apikey/DEVICE_ID fcm://project@apikey/#TOPIC fcm://project@apikey/DEVICE_ID1/#topic1/#topic2/DEVICE_ID2/ |
Feishu | feishu: // | (TCP) 443 | feishu://token |
Rebanho | rebanho:// | (TCP) 443 | rebanho://token rebanho://botname@token rebanho://app_token/u:userid rebanho://app_token/g:channel_id rebanho://app_token/u:userid/g:channel_id |
Bate-papo do Google | gchat:// | (TCP) 443 | gchat://workspace/key/token |
Gotificar | gotify:// ou gotifys:// | (TCP) 80 ou 443 | gotify://hostname/token gotifys://hostname/token?priority=high |
Rosnar | rosnar:// | (UDP) 23053 | rosnar://nome do host rosnar://hostname:portno rosnar://senha@nome do host growl://senha@hostname:porta Nota : você também pode usar o parâmetro get version que pode permitir que a solicitação growl se comporte usando o protocolo v1.x mais antigo. Um exemplo seria: growl://hostname?version=1 |
Guildado | guildado: // | (TCP) 443 | guilded://webhook_id/webhook_token guilded://avatar@webhook_id/webhook_token |
Assistente Doméstico | hassio:// ou hassios:// | (TCP) 8123 ou 443 | hassio://hostname/accesstoken hassio://usuário@hostname/accesstoken hassio://usuário:senha@hostname:porta/accesstoken hassio://hostname/opcional/caminho/accesstoken |
IFTTT | iftt:// | (TCP) 443 | ifttt://webhooksID/Evento ifttt://webhooksID/Event1/Event2/EventN ifttt://webhooksID/Event1/?+Key=Value ifttt://webhooksID/Event1/?-Key=value1 |
Juntar | juntar:// | (TCP) 443 | junte-se: //apikey/device junte-se: //apikey/device1/device2/deviceN/ junte-se: //apikey/grupo junte-se: //apikey/grupoA/grupoB/grupoN junte-se: //apikey/DeviceA/groupA/groupN/DeviceN/ |
CODI | kodi:// ou kodis:// | (TCP) 8080 ou 443 | kodi://nome do host kodi://usuário@nome do host kodi://usuário:senha@hostname:porta |
Kumulos | kumulos:// | (TCP) 443 | kumulos://apikey/serverkey |
Hora Lamétrica | lamétrico:// | (TCP) 443 | lametric://apikey@device_ipaddr lametric://apikey@hostname:port lametric://client_id@client_secret |
Linha | linha:// | (TCP) 443 | linha://Token@Usuário linha://Token/Usuário1/Usuário2/UsuárioN |
LunaSea | luasea:// | (TCP) 80 ou 443 | lunasea://usuário:pass@+FireBaseDevice/ lunasea://usuário:pass@FireBaseUser/ lunasea://usuário:pass@hostname/+FireBaseDevice/ lunasea://usuário:pass@hostname/@FireBaseUser/ |
Arma postal | arma de correio:// | (TCP) 443 | mailgun://usuário@hostname/apikey mailgun://usuário@hostname/apikey/email mailgun://usuário@hostname/apikey/email1/email2/emailN mailgun://usuário@hostname/apikey/?name="From%20User" |
Mastodonte | mastodonte:// ou mastodontes:// | (TCP) 80 ou 443 | mastodonte://access_key@hostname mastodon://access_key@hostname/@user mastodon://access_key@hostname/@user1/@user2/@userN |
Matriz | matriz:// ou matrizes:// | (TCP) 80 ou 443 | matriz: // nome do host matriz: //usuário@nome do host matrizes://usuário:pass@hostname:port/#room_alias matrizes://usuário:pass@hostname:porta/!room_id matrizes://usuário:pass@hostname:port/#room_alias/!room_id/#room2 matrizes://token@hostname:port/?webhook=matrix matriz://usuário:token@hostname/?webhook=slack&format=markdown |
Mais importante | mmost:// ou mmosts:// | (TCP) 8065 | mmost://hostname/authkey mmost://hostname:80/authkey mmost://usuário@hostname:80/authkey mmost://hostname/authkey?channel=canal mmosts://hostname/authkey mmosts://usuário@hostname/authkey |
Microsoft Power Automate/Fluxos de trabalho (MSTeams) | fluxos de trabalho:// | (TCP) 443 | fluxos de trabalho://WorkflowID/Signature/ |
Equipes da Microsoft | msteams: // | (TCP) 443 | msteams://TokenA/TokenB/TokenC/ |
Chave senhorita | misskey:// ou misskeys:// | (TCP) 80 ou 443 | misskey://access_token@nome do host |
MQTT | mqtt:// ou mqtts:// | (TCP) 1883 ou 8883 | mqtt://hostname/tópico mqtt://usuário@nome do host/tópico mqtts://usuário:pass@hostname:9883/topic |
Próxima nuvem | ncloud:// ou nclouds:// | (TCP) 80 ou 443 | ncloud://adminuser:pass@host/Usuário nclouds://adminuser:pass@host/User1/User2/UserN |
PróximocloudTalk | nctalk:// ou nctalks:// | (TCP) 80 ou 443 | nctalk://usuário:pass@host/RoomId nctalks://usuário:pass@host/RoomId1/RoomId2/RoomIdN |
Notícia | notica:// | (TCP) 443 | notica://Token/ |
Notificar | notificar: // | (TCP) 443 | notificarr://apikey/#channel notificarr://apikey/#channel1/#channel2/#channeln |
Notificação | aviso:// | (TCP) 443 | notificação://ProjectID/MessageHook/ |
ntfy | ntfy:// | (TCP) 80 ou 443 | ntfy://tópico/ ntfys://tópico/ |
Escritório 365 | o365:// | (TCP) 443 | o365://TenantID:AccountEmail/ClientID/ClientSecret o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail1/TargetEmail2/TargetEmailN |
OneSignal | um sinal:// | (TCP) 443 | onesignal://AppID@APIKey/PlayerID onesignal://TemplateID:AppID@APIKey/UserID onesignal://AppID@APIKey/#IncludeSegment onesignal://AppID@APIKey/Email |
Opsgênio | opsgenie:// | (TCP) 443 | opsgenie://APIKey opsgenie://APIKey/UserID opsgenie://APIKey/#Team opsgenie://APIKey/*Agenda opsgenie://APIKey/^Escalação |
PagerDuty | pagerduty: // | (TCP) 443 | pagerduty://IntegrationKey@ApiKey pagerduty://IntegrationKey@ApiKey/Source/Component |
PagerTree | pagertree: // | (TCP) 443 | pagertree://integração_id |
Plataforma Parse | parsep:// ou parseps:// | (TCP) 80 ou 443 | parsep://AppID:MasterKey@Nome do host parseps://AppID:MasterKey@Nome do host |
PipocaNotificar | Pipoca:// | (TCP) 443 | pipoca://ApiKey/ToPhoneNo pipoca://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ pipoca://ApiKey/ToEmail pipoca://ApiKey/ToEmail1/ToEmail2/ToEmailN/ pipoca://ApiKey/ToPhoneNo1/ToEmail1/ToPhoneNoN/ToEmailN |
Espreitar | rondar:// | (TCP) 443 | espreitar://apikey espreitar://apikey/providerkey |
PushBullet | pbul:// | (TCP) 443 | pbul://accesstoken pbul://accesstoken/#canal pbul://accesstoken/A_DEVICE_ID pbul://accesstoken/[email protected] pbul://accesstoken/#channel/#channel2/[email protected]/DEVICE |
Jato de pressão | pjet:// ou pjets:// | (TCP) 80 ou 443 | pjet://nome do host/segredo pjet://hostname:porta/segredo pjets://secret@hostname/secret pjets://hostname:porta/segredo |
Empurrar (Techulus) | empurrar:// | (TCP) 443 | push://apikey/ |
Empurrado | empurrado:// | (TCP) 443 | empurrado://appkey/appsecret/ empurrado://appkey/appsecret/#ChannelAlias empurrado://appkey/appsecret/#ChannelAlias1/#ChannelAlias2/#ChannelAliasN empurrado://appkey/appsecret/@UserPushedID empurrado://appkey/appsecret/@UserPushedID1/@UserPushedID2/@UserPushedIDN |
Empurre-me | empurre-me: // | (TCP) 443 | empurre-me://Token/ |
Flexão | pobreza: // | (TCP) 443 | pover://usuário@token pover://usuário@token/DEVICE pover://usuário@token/DEVICE1/DEVICE2/DEVICEN Nota : você deve especificar seu user_id e token |
PushSafer | psafer:// ou psafers:// | (TCP) 80 ou 443 | psafer: // chave privada psafers://privatekey/DEVICE psafer://privatekey/DEVICE1/DEVICE2/DEVICEN |
Insistente | agressivo: // | (TCP) 443 | agressivo://apikey/DEVICE pushy://apikey/DEVICE1/DEVICE2/DEVICEN agressivo://apikey/TOPIC agressivo://apikey/TOPIC1/TOPIC2/TOPICN |
PushDeer | pushdeer:// ou pushdeers:// | (TCP) 80 ou 443 | pushdeer://pushKey pushdeer://hostname/pushKey pushdeer://hostname:porta/pushKey |
reddit:// | (TCP) 443 | reddit://usuário:senha@app_id/app_secret/subreddit reddit://usuário:senha@app_id/app_secret/sub1/sub2/subN | |
Revolta | revolta:// | (TCP) 443 | revolta://bottoken/ChannelID revolta://bottoken/ChannelID1/ChannelID2/ChannelIDN |
Foguete.Chat | foguete:// ou foguetes:// | (TCP) 80 ou 443 | rocket://usuário:senha@hostname/RoomID/Channel rockets://usuário:senha@hostname:443/#Channel1/#Channel1/RoomID rocket://usuário:senha@hostname/#Canal rocket://webhook@nome do host rockets://webhook@hostname/@User/#Channel |
RSyslog | rsyslog:// | (UDP) 514 | rsyslog://nome do host rsyslog://hostname/Facilidade |
Ryver | Ryver: // | (TCP) 443 | ryver://Organização/Token ryver://botname@Organização/Token |
SendGrid | enviar grade:// | (TCP) 443 | sendgrid://APIToken:FromEmail/ sendgrid://APIToken:FromEmail/ToEmail sendgrid://APIToken:FromEmail/ToEmail1/ToEmail2/ToEmailN/ |
ServerChan | schan:// | (TCP) 443 | schan://sendkey/ |
API de sinal | sinal:// ou sinais:// | (TCP) 80 ou 443 | sinal: // nome do host: porta / FromPhoneNo sinal://hostname:porta/FromPhoneNo/ToPhoneNo sinal://hostname:porta/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
SimplePush | empurrar:// | (TCP) 443 | spush://apikey spush://salt:senha@apikey spush://apikey?event=Apprise |
Folga | folga: // | (TCP) 443 | folga://TokenA/TokenB/TokenC/ folga://TokenA/TokenB/TokenC/Channel folga://botname@TokenA/TokenB/TokenC/Channel folga://usuário@TokenA/TokenB/TokenC/Channel1/Channel2/ChannelN |
SMTP2Go | smtp2go:// | (TCP) 443 | smtp2go://usuário@hostname/apikey smtp2go://usuário@hostname/apikey/email smtp2go://usuário@nomedohost/apikey/email1/email2/emailN smtp2go://usuário@hostname/apikey/?name="From%20User" |
SparkPost | post de faísca: // | (TCP) 443 | sparkpost://usuário@hostname/apikey sparkpost://usuário@hostname/apikey/email sparkpost://usuário@hostname/apikey/email1/email2/emailN sparkpost://usuário@hostname/apikey/?name="From%20User" |
Splunk | splunk:// ou victorops:/ | (TCP) 443 | splunk://route_key@apikey splunk://route_key@apikey/entity_id |
Streamlabs | strmlabs:// | (TCP) 443 | strmlabs://AccessToken/ strmlabs://AccessToken/?name=name&identifier=identifier&amount=0¤cy=USD |
Bate-papo Synology | sinologia:// ou sinologias:// | (TCP) 80 ou 443 | synology://hostname/token synology://hostname:porta/token |
Registro de sistema | syslog:// | n / D | syslog:// syslog://Instalação |
Telegrama | tgram: // | (TCP) 443 | tgram://bottoken/ChatID tgram://bottoken/ChatID1/ChatID2/ChatIDN |
Twitter: // | (TCP) 443 | twitter://CKey/CSecret/AKey/ASecret twitter://usuário@CKey/CSecret/AKey/ASecret twitter://CKey/CSecret/AKey/ASecret/User1/User2/User2 twitter://CKey/CSecret/AKey/ASecret?mode=tweet | |
Torção | torção:// | (TCP) 443 | torcer://senha:login twist://senha:login/#canal twist://senha:login/#team:canal twist://senha:login/#team:canal1/canal2/#team3:canal |
Equipes Webex (Cisco) | wxteams:// | (TCP) 443 | wxteams://Token |
Bot WeCom | nóscombot:// | (TCP) 443 | wecombot://BotKey |
whatsapp: // | (TCP) 443 | whatsapp://AccessToken@FromPhoneID/ToPhoneNo whatsapp://Modelo:AccessToken@FromPhoneID/ToPhoneNo | |
WxPusher | wxpusher:// | (TCP) 443 | wxpusher://AppToken@UserID1/UserID2/UserIDN wxpusher://AppToken@Topic1/Topic2/Topic3 wxpusher://AppToken@UserID1/Topic1/ |
XBMC | xbmc:// ou xbmcs:// | (TCP) 8080 ou 443 | xbmc://nome do host xbmc://usuário@nome do host xbmc://usuário:senha@nome do host:porta |
Bate-papo Zulip | zulip:// | (TCP) 443 | zulip://botname@Organização/Token zulip://botname@Organização/Token/Stream zulip://botname@Organização/Token/E-mail |
Serviço de Notificação | ID do serviço | Porta padrão | Sintaxe de exemplo |
---|---|---|---|
Áfricas falando | uma conversa: // | (TCP) 443 | atalk://AppUser@ApiKey/ToPhoneNo atalk://AppUser@ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Sistema automatizado de relatório de pacotes (ARPS) | abril: // | (TCP) 10152 | aprs://usuário:pass@indicativo aprs://usuário:pass@callsign1/callsign2/callsignN |
AWS SNS | sns:// | (TCP) 443 | sns://AccessKeyID/AccessSecretKey/RegionName/+PhoneNo sns://AccessKeyID/AccessSecretKey/RegionName/+PhoneNo1/+PhoneNo2/+PhoneNoN sns://AccessKeyID/AccessSecretKey/RegionName/Tópico sns://AccessKeyID/AccessSecretKey/RegionName/Topic1/Topic2/TopicN |
SMS em massa | massas: // | (TCP) 443 | bulksms://usuário:senha@ToPhoneNo bulksms://Usuário:Senha@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
BulkVS | volumevs:// | (TCP) 443 | bulkvs://usuário:senha@FromPhoneNo bulkvs://usuário:senha@FromPhoneNo/ToPhoneNo bulkvs://usuário:senha@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Explosão de SMS | rajadas: // | (TCP) 443 | burstsms://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo burstsms://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Clique em Enviar | clique em enviar: // | (TCP) 443 | clique enviar: //usuário:senha@TelefoneNão cliqueenviar://usuário:pass@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN |
DAPNET | dapnet:// | (TCP) 80 | dapnet://usuário:pass@indicativo dapnet://usuário:pass@callsign1/callsign2/callsignN |
Redes D7 | d7sms:// | (TCP) 443 | d7sms://token@PhoneNo d7sms://token@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN |
DingTalk | dingtalk:// | (TCP) 443 | dingtalk://token/ dingtalk://token/ToPhoneNo dingtalk://token/ToPhoneNo1/ToPhoneNo2/ToPhoneNo1/ |
Celular grátis | celular grátis:// | (TCP) 443 | freemobile://usuário@senha/ |
httpSMS | https:// | (TCP) 443 | httpsms://ApiKey@FromPhoneNo httpsms://ApiKey@FromPhoneNo/ToPhoneNo https://ApiKey@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Kavenegar | kavenegar: // | (TCP) 443 | kavenegar://ApiKey/ToPhoneNo kavenegar://FromPhoneNo@ApiKey/ToPhoneNo kavenegar://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN |
MensagemBird | msgbird:// | (TCP) 443 | msgbird://ApiKey/FromPhoneNo msgbird://ApiKey/FromPhoneNo/ToPhoneNo msgbird://ApiKey/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
MSG91 | msg91:// | (TCP) 443 | msg91://TemplateID@AuthKey/ToPhoneNo msg91://TemplateID@AuthKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Plivo | plivo:// | (TCP) 443 | plivo://AuthID@Token@FromPhoneNo plivo://AuthID@Token/FromPhoneNo/ToPhoneNo plivo://AuthID@Token/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Sete | Sete:// | (TCP) 443 | sete://ApiKey/FromPhoneNo sete://ApiKey/FromPhoneNo/ToPhoneNo sete://ApiKey/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Société Française du Radiotéléphone (SFR) | sfr:// | (TCP) 443 | sfr://usuário:senha>@spaceId/ToPhoneNo sfr://usuário:senha>@spaceId/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
API de sinal | sinal:// ou sinais:// | (TCP) 80 ou 443 | sinal: // nome do host: porta / FromPhoneNo sinal://hostname:porta/FromPhoneNo/ToPhoneNo sinal://hostname:porta/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Sinch | sinch:// | (TCP) 443 | sinch://ServicePlanId:ApiToken@FromPhoneNo sinch://ServicePlanId:ApiToken@FromPhoneNo/ToPhoneNo sinch://ServicePlanId:ApiToken@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ sinch://ServicePlanId:ApiToken@ShortCode/ToPhoneNo sinch://ServicePlanId:ApiToken@ShortCode/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
SMSEagle | smseagle:// ou smseagles:// | (TCP) 80 ou 443 | smseagles://hostname:porta/ToPhoneNo smseagles://hostname:porta/@ToContact smseagles://hostname:porta/#ToGroup smseagles://hostname:port/ToPhoneNo1/#ToGroup/@ToContact/ |
Gerenciador de SMS | smsmgr:// | (TCP) 443 | smsmgr://ApiKey@ToPhoneNo smsmgr://ApiKey@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Portal Trêsma | trêsma:// | (TCP) 443 | trêsma://GatewayID@secret/ToPhoneNo trêsma://GatewayID@secret/ToEmail trêsma://GatewayID@secret/ToThreemaID/ trêsma://GatewayID@secret/ToEmail/ToThreemaID/ToPhoneNo/... |
Twilio | twilio: // | (TCP) 443 | twilio://AccountSid:AuthToken@FromPhoneNo twilio://AccountSid:AuthToken@FromPhoneNo/ToPhoneNo twilio://AccountSid:AuthToken@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ twilio://AccountSid:AuthToken@FromPhoneNo/ToPhoneNo?apikey=Key twilio://AccountSid:AuthToken@ShortCode/ToPhoneNo twilio://AccountSid:AuthToken@ShortCode/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Voipms | voipms:// | (TCP) 443 | voipms://senha:e-mail/FromPhoneNo voipms://senha:e-mail/FromPhoneNo/ToPhoneNo voipms://senha:e-mail/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Vonage (anteriormente Nexmo) | nexo:// | (TCP) 443 | nexmo://ApiKey:ApiSecret@FromPhoneNo nexmo://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo nexmo://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Serviço de Notificação | ID do serviço | Porta padrão | Sintaxe de exemplo |
---|---|---|---|
Notificações DBus Linux | dbus:// qt:// simplista: // kde:// | n / D | dbus:// qt:// simplista: // kde:// |
Notificações do Linux Gnome | gnomo:// | n / D | gnomo:// |
Notificações do MacOS X | macosx:// | n / D | macosx:// |
Notificações do Windows | Windows:// | n / D | Windows:// |
ID do serviço | Porta padrão | Sintaxe de exemplo |
---|---|---|
mailto: // | (TCP) 25 | mailto://userid:[email protected] mailto://domain.com?user=userid&pass=senha mailto://domain.com:2525?user=userid&pass=senha mailto://[email protected]&pass=senha mailto://mySendingUsername:[email protected][email protected] mailto://userid:[email protected]?smtp=mail.example.com&[email protected]&name=no%20reply |
mailtos:// | (TCP) 587 | mailtos://userid:[email protected] mailtos://domain.com?user=userid&pass=senha mailtos://domain.com:465?user=userid&pass=senha mailtos://[email protected]&pass=senha mailtos://mySendingUsername:[email protected][email protected] mailtos://userid:[email protected]?smtp=mail.example.com&[email protected]&name=no%20reply |
Apprise tem alguns serviços de e-mail integrados (como yahoo, fastmail, hotmail, gmail, etc.) que simplificam bastante o serviço mailto: //. Veja mais detalhes aqui.
Método de postagem | ID do serviço | Porta padrão | Sintaxe de exemplo |
---|---|---|---|
Forma | formulário:// ou formulários:// | (TCP) 80 ou 443 | formulário://nome do host formulário: //usuário@nome do host formulário: //usuário:senha@nome do host:porta formulário: //nome do host/a/caminho/para/post/para |
JSON | json:// ou jsons:// | (TCP) 80 ou 443 | json://nome do host json://usuário@nome do host json://usuário:senha@nomedohost:porta json://hostname/a/caminho/para/post/para |
XML | xml:// ou xmls:// | (TCP) 80 ou 443 | xml://nome do host xml://usuário@nome do host xml://usuário:senha@nomedohost:porta xml://hostname/a/caminho/para/post/para |
A maneira mais fácil é instalar este pacote a partir do pypi:
pip install apprise
Apprise também é empacotado como um RPM e disponível através do EPEL com suporte para CentOS, Redhat, Rocky, Oracle Linux, etc.
# Follow instructions on https://docs.fedoraproject.org/en-US/epel
# to get your system connected up to EPEL and then:
# Redhat/CentOS 7.x users
yum install apprise
# Redhat/CentOS 8.x+ and/or Fedora Users
dnf install apprise
Você também pode conferir a versão gráfica do Apprise para centralizar sua configuração e notificações por meio de uma página gerenciável.
Uma pequena ferramenta de interface de linha de comando (CLI) também é fornecida com este pacote chamada apprise . Se você conhece os URLs do servidor que deseja notificar, basta fornecê-los todos na linha de comando e enviar suas notificações dessa forma:
# Send a notification to as many servers as you want
# as you can easily chain one after another (the -vv provides some
# additional verbosity to help let you know what is going on):
apprise -vv -t ' my title ' -b ' my notification body '
' mailto://myemail:[email protected] '
' pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b '
# If you don't specify a --body (-b) then stdin is used allowing
# you to use the tool as part of your every day administration:
cat /proc/cpuinfo | apprise -vv -t ' cpu info '
' mailto://myemail:[email protected] '
# The title field is totally optional
uptime | apprise -vv
' discord:///4174216298/JHMHI8qBe7bk2ZwO5U711o3dV_js '
Ninguém quer divulgar suas credenciais para que todos possam ver na linha de comando. Não há problema em saber que também oferece suporte a arquivos de configuração. Ele pode lidar com um formato YAML específico ou um formato TEXT muito simples. Você também pode obter esses arquivos de configuração por meio de uma consulta HTTP! Você pode ler mais sobre a estrutura esperada dos arquivos de configuração aqui.
# By default if no url or configuration is specified apprise will attempt to load
# configuration files (if present) from:
# ~/.apprise
# ~/.apprise.yaml
# ~/.config/apprise.conf
# ~/.config/apprise.yaml
# /etc/apprise.conf
# /etc/apprise.yaml
# Also a subdirectory handling allows you to leverage plugins
# ~/.apprise/apprise
# ~/.apprise/apprise.yaml
# ~/.config/apprise/apprise.conf
# ~/.config/apprise/apprise.yaml
# /etc/apprise/apprise.yaml
# /etc/apprise/apprise.conf
# Windows users can store their default configuration files here:
# %APPDATA%/Apprise/apprise.conf
# %APPDATA%/Apprise/apprise.yaml
# %LOCALAPPDATA%/Apprise/apprise.conf
# %LOCALAPPDATA%/Apprise/apprise.yaml
# %ALLUSERSPROFILE%Appriseapprise.conf
# %ALLUSERSPROFILE%Appriseapprise.yaml
# %PROGRAMFILES%Appriseapprise.conf
# %PROGRAMFILES%Appriseapprise.yaml
# %COMMONPROGRAMFILES%Appriseapprise.conf
# %COMMONPROGRAMFILES%Appriseapprise.yaml
# The configuration files specified above can also be identified with a `.yml`
# extension or even just entirely removing the `.conf` extension altogether.
# If you loaded one of those files, your command line gets really easy:
apprise -vv -t ' my title ' -b ' my notification body '
# If you want to deviate from the default paths or specify more than one,
# just specify them using the --config switch:
apprise -vv -t ' my title ' -b ' my notification body '
--config=/path/to/my/config.yml
# Got lots of configuration locations? No problem, you can specify them all:
# Apprise can even fetch the configuration from over a network!
apprise -vv -t ' my title ' -b ' my notification body '
--config=/path/to/my/config.yml
--config=https://localhost/my/apprise/config
Apprise também suporta anexos de arquivos! Especifique quantos anexos desejar em uma notificação.
# Send a funny image you found on the internet to a colleague:
apprise -vv --title ' Agile Joke '
--body ' Did you see this one yet? '
--attach https://i.redd.it/my2t4d2fx0u31.jpg
' mailto://myemail:[email protected] '
# Easily send an update from a critical server to your dev team
apprise -vv --title ' system crash '
--body ' I do not think Jim fixed the bug; see attached... '
--attach /var/log/myprogram.log
--attach /var/debug/core.2345
--tag devteam
Para criar seu próprio gancho schema://
personalizado para que você possa acionar seu próprio código personalizado, basta incluir o decorador @notify
para agrupar sua função.
from apprise . decorators import notify
#
# The below assumes you want to catch foobar:// calls:
#
@ notify ( on = "foobar" , name = "My Custom Foobar Plugin" )
def my_custom_notification_wrapper ( body , title , notify_type , * args , ** kwargs ):
"""My custom notification function that triggers on all foobar:// calls
"""
# Write all of your code here... as an example...
print ( "{}: {} - {}" . format ( notify_type . upper (), title , body ))
# Returning True/False is a way to relay your status back to Apprise.
# Returning nothing (None by default) is always interpreted as a Success
Depois de definir seu gancho personalizado, você só precisa informar ao Apprise onde ele está em tempo de execução.
# By default if no plugin path is specified apprise will attempt to load
# all plugin files (if present) from the following directory paths:
# ~/.apprise/plugins
# ~/.config/apprise/plugins
# /var/lib/apprise/plugins
# Windows users can store their default plugin files in these directories:
# %APPDATA%/Apprise/plugins
# %LOCALAPPDATA%/Apprise/plugins
# %ALLUSERSPROFILE%Appriseplugins
# %PROGRAMFILES%Appriseplugins
# %COMMONPROGRAMFILES%Appriseplugins
# If you placed your plugin file within one of the directories already defined
# above, then your call simply needs to look like:
apprise -vv --title ' custom override '
--body ' the body of my message '
foobar: \
# However you can over-ride the path like so
apprise -vv --title ' custom override '
--body ' the body of my message '
--plugin-path /path/to/my/plugin.py
foobar: \
Você pode ler mais sobre como criar suas próprias notificações e/ou ganchos personalizados aqui.
Aqueles que usam a interface de linha de comando (CLI) também podem aproveitar variáveis de ambiente para predefinir as configurações padrão:
Variável | Descrição |
---|---|
APPRISE_URLS | Especifique os URLs padrão para notificar SE nenhum for especificado explicitamente na linha de comando. Se --config ( -c ) for especificado, isso substituirá qualquer referência a esta variável. Use espaço em branco e/ou vírgula ( , ) para delimitar múltiplas entradas. |
APPRISE_CONFIG_PATH | Especifique explicitamente o caminho de pesquisa de configuração a ser usado (substituindo o padrão). O(s) caminho(s) definido(s) aqui deve(m) apontar para o nome de arquivo absoluto para abrir/referenciar. Use ponto e vírgula ( ; ), avanço de linha ( n ) e/ou retorno de carro ( r ) para delimitar várias entradas. |
APPRISE_PLUGIN_PATH | Especifique explicitamente o caminho de pesquisa do plugin personalizado a ser usado (substituindo o padrão). Use ponto e vírgula ( ; ), avanço de linha ( n ) e/ou retorno de carro ( r ) para delimitar várias entradas. |
APPRISE_STORAGE_PATH | Especifique explicitamente o caminho de armazenamento persistente a ser usado (substituindo o padrão). |
Para enviar uma notificação de dentro do seu aplicativo python, basta fazer o seguinte:
import apprise
# Create an Apprise instance
apobj = apprise . Apprise ()
# Add all of the notification services by their server url.
# A sample email notification:
apobj . add ( 'mailto://myuserid:[email protected]' )
# A sample pushbullet notification
apobj . add ( 'pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b' )
# Then notify these services any time you desire. The below would
# notify all of the services loaded into our Apprise object.
apobj . notify (
body = 'what a great notification service!' ,
title = 'my notification title' ,
)
Os desenvolvedores também precisam de acesso aos arquivos de configuração. A boa notícia é que seu uso envolve apenas a declaração de outro objeto (chamado AppriseConfig ) que o objeto Apprise pode ingerir. Você também pode misturar e combinar livremente entradas de configuração e notificação quantas vezes desejar! Você pode ler mais sobre a estrutura esperada dos arquivos de configuração aqui.
import apprise
# Create an Apprise instance
apobj = apprise . Apprise ()
# Create an Config instance
config = apprise . AppriseConfig ()
# Add a configuration source:
config . add ( '/path/to/my/config.yml' )
# Add another...
config . add ( 'https://myserver:8080/path/to/config' )
# Make sure to add our config into our apprise object
apobj . add ( config )
# You can mix and match; add an entry directly if you want too
# In this entry we associate the 'admin' tag with our notification
apobj . add ( 'mailto://myuser:[email protected]' , tag = 'admin' )
# Then notify these services any time you desire. The below would
# notify all of the services that have not been bound to any specific
# tag.
apobj . notify (
body = 'what a great notification service!' ,
title = 'my notification title' ,
)
# Tagging allows you to specifically target only specific notification
# services you've loaded:
apobj . notify (
body = 'send a notification to our admin group' ,
title = 'Attention Admins' ,
# notify any services tagged with the 'admin' tag
tag = 'admin' ,
)
# If you want to notify absolutely everything (regardless of whether
# it's been tagged or not), just use the reserved tag of 'all':
apobj . notify (
body = 'send a notification to our admin group' ,
title = 'Attention Admins' ,
# notify absolutely everything loaded, regardless on wether
# it has a tag associated with it or not:
tag = 'all' ,
)
Os anexos são muito fáceis de enviar usando a API Apprise:
import apprise
# Create an Apprise instance
apobj = apprise . Apprise ()
# Add at least one service you want to notify
apobj . add ( 'mailto://myuser:[email protected]' )
# Then send your attachment.
apobj . notify (
title = 'A great photo of our family' ,
body = 'The flash caused Jane to close her eyes! hah! :)' ,
attach = '/local/path/to/my/DSC_003.jpg' ,
)
# Send a web based attachment too! In the below example, we connect to a home
# security camera and send a live image to an email. By default remote web
# content is cached, but for a security camera we might want to call notify
# again later in our code, so we want our last image retrieved to expire(in
# this case after 3 seconds).
apobj . notify (
title = 'Latest security image' ,
attach = 'http://admin:password@hikvision-cam01/ISAPI/Streaming/channels/101/picture?cache=3'
)
Para enviar mais de um anexo, basta usar uma lista, conjunto ou tupla:
import apprise
# Create an Apprise instance
apobj = apprise . Apprise ()
# Add at least one service you want to notify
apobj . add ( 'mailto://myuser:[email protected]' )
# Now add all of the entries we're interested in:
attach = (
# ?name= allows us to rename the actual jpeg as found on the site
# to be another name when sent to our receipient(s)
'https://i.redd.it/my2t4d2fx0u31.jpg?name=FlyingToMars.jpg' ,
# Now add another:
'/path/to/funny/joke.gif' ,
)
# Send your multiple attachments with a single notify call:
apobj . notify (
title = 'Some good jokes.' ,
body = 'Hey guys, check out these!' ,
attach = attach ,
)
Por padrão, nenhum plug-in personalizado é carregado para aqueles que estão construindo a partir da API Apprise. Fica a critério dos desenvolvedores carregar módulos personalizados. Mas se você decidir fazer isso, é tão fácil quanto incluir a referência do caminho no objeto AppriseAsset()
antes da inicialização de sua instância Apprise()
.
Por exemplo:
from apprise import Apprise
from apprise import AppriseAsset
# Prepare your Asset object so that you can enable the custom plugins to
# be loaded for your instance of Apprise...
asset = AppriseAsset ( plugin_paths = "/path/to/scan" )
# OR You can also generate scan more then one file too:
asset = AppriseAsset (
plugin_paths = [
# Iterate over all python libraries found in the root of the
# specified path. This is NOT a recursive (directory) scan; only
# the first level is parsed. HOWEVER, if a directory containing
# an __init__.py is found, it will be included in the load.
"/dir/containing/many/python/libraries" ,
# An absolute path to a plugin.py to exclusively load
"/path/to/plugin.py" ,
# if you point to a directory that has an __init__.py file found in
# it, then only that file is loaded (it's similar to point to a
# absolute .py file. Hence, there is no (level 1) scanning at all
# within the directory specified.
"/path/to/dir/library"
]
)
# Now that we've got our asset, we just work with our Apprise object as we
# normally do
aobj = Apprise ( asset = asset )
# If our new custom `foobar://` library was loaded (presuming we prepared
# one like in the examples above). then you would be able to safely add it
# into Apprise at this point
aobj . add ( 'foobar://' )
# Send our notification out through our foobar://
aobj . notify ( "test" )
Você pode ler mais sobre como criar suas próprias notificações e/ou ganchos personalizados aqui.
O armazenamento persistente permite que o Apprise armazene em cache ações recorrentes, opcionalmente, no disco. Isso pode reduzir bastante a sobrecarga usada para enviar uma notificação.
Existem 3 estados operacionais de armazenamento persistente que o Apprise pode operar usando:
auto
: libera informações de cache coletadas no sistema de arquivos sob demanda. Esta opção é incrivelmente leve. Este é o comportamento padrão para todo uso da CLI.flush
: libera qualquer informação de cache para o sistema de arquivos durante cada transação.memory
: desative efetivamente o armazenamento persistente. Qualquer cache de dados exigido por cada plugin usado é feito na memória. O Apprise opera com eficácia como sempre funcionava antes do armazenamento persistente estar disponível. Essa configuração garante que nenhum conteúdo seja gravado no disco.auto
ou flush
. Isso é feito através do objeto AppriseAsset()
e é explicado mais adiante nesta documentação. Você pode fornecer o storage
de palavras-chave em sua chamada CLI para ver as opções de armazenamento persistente disponíveis para você.
# List all of the occupied space used by Apprise's Persistent Storage:
apprise storage list
# list is the default option, so the following does the same thing:
apprise storage
# You can prune all of your storage older then 30 days
# and not accessed for this period like so:
apprise storage prune
# You can do a hard reset (and wipe all persistent storage) with:
apprise storage clean
Você também pode filtrar seus resultados adicionando tags e/ou identificadores de URL. Ao obter uma listagem ( apprise storage list
), você poderá ver:
# example output of 'apprise storage list':
1. f7077a65 0.00B unused
- matrixs://abcdef:****@synapse.example12.com/%23general?image=no&mode=off&version=3&msgtype...
tags: team
2. 0e873a46 81.10B active
- tgram://W...U//?image=False&detect=yes&silent=no&preview=no&content=before&mdv=v1&format=m...
tags: personal
3. abcd123 12.00B stale
Os estados de cache (armazenamento persistente) são:
unused
: Este plugin não comprometeu nada no disco para fins de reutilização/cacheactive
: este plugin gravou conteúdo no disco. Ou, pelo menos, preparou um local de armazenamento persistente no qual pode gravar.stale
: o sistema detectou um local onde um URL pode ter sido gravado no passado, mas não há nada vinculado a ele usando os URLs fornecidos. Provavelmente está desperdiçando espaço ou não tem mais utilidade.Você pode usar essas informações para filtrar seus resultados especificando valores de ID de URL (UID) após seu comando. Por exemplo:
# The below commands continue with the example already identified above
# the following would match abcd123 (even though just ab was provided)
# The output would only list the 'stale' entry above
apprise storage list ab
# knowing our filter is safe, we could remove it
# the below command would not obstruct our other to URLs and would only
# remove our stale one:
apprise storage clean ab
# Entries can be filtered by tag as well:
apprise storage list --tag=team
# You can match on multiple URL ID's as well:
# The followin would actually match the URL ID's of 1. and .2 above
apprise storage list f 0
Ao usar a CLI, o armazenamento persistente é definido para o modo operacional auto
por padrão. Você pode alterar isso fornecendo --storage-mode=
( -SM
) durante suas chamadas. Se você quiser garantir que ele seja sempre definido com um valor de sua escolha.
Para obter mais informações sobre armazenamento persistente, visite aqui.
Para os desenvolvedores, o armazenamento persistente é definido no modo operacional de memory
por padrão.
Fica a critério dos desenvolvedores habilitá-lo (alterando-o para auto
ou flush
). Caso você opte por fazer isso: é tão fácil quanto incluir as informações no objeto AppriseAsset()
antes da inicialização de sua instância Apprise()
.
Por exemplo:
from apprise import Apprise
from apprise import AppriseAsset
from apprise import PersistentStoreMode
# Prepare a location the persistent storage can write it's cached content to.
# By setting this path, this immediately assumes you wish to operate the
# persistent storage in the operational 'auto' mode
asset = AppriseAsset ( storage_path = "/path/to/save/data" )
# If you want to be more explicit and set more options, then you may do the
# following
asset = AppriseAsset (
# Set our storage path directory (minimum requirement to enable it)
storage_path = "/path/to/save/data" ,
# Set the mode... the options are:
# 1. PersistentStoreMode.MEMORY
# - disable persistent storage from writing to disk
# 2. PersistentStoreMode.AUTO
# - write to disk on demand
# 3. PersistentStoreMode.FLUSH
# - write to disk always and often
storage_mode = PersistentStoreMode . FLUSH
# The URL IDs are by default 8 characters in length. You can increase and
# decrease it's value here. The value must be > 2. The default value is 8
# if not otherwise specified
storage_idlen = 8 ,
)
# Now that we've got our asset, we just work with our Apprise object as we
# normally do
aobj = Apprise ( asset = asset )
Para obter mais informações sobre armazenamento persistente, visite aqui.
Se você estiver interessado em ler mais sobre este e outros métodos de como personalizar suas próprias notificações, verifique os seguintes links:
Quer ajudar a tornar o Apprise melhor?