La section identifie tous les services pris en charge par cette bibliothèque. Consultez le wiki pour plus d'informations sur les modules pris en charge ici.
Le tableau ci-dessous identifie les services pris en charge par cet outil et quelques exemples d'URL de service que vous devez utiliser pour en profiter. Cliquez sur l'un des services répertoriés ci-dessous pour obtenir plus de détails sur la façon dont vous pouvez configurer Apprise pour y accéder.
Service de notifications | Numéro de service | Port par défaut | Exemple de syntaxe |
---|---|---|---|
API Apprise | apprendre:// ou apprendre:// | (TCP) 80 ou 443 | informer://nom d'hôte/jeton |
AWSSES | ses:// | (TCP) 443 | ses://user@domain/AccessKeyID/AccessSecretKey/RegionName ses://user@domain/AccessKeyID/AccessSecretKey/RegionName/email1/email2/emailN |
Aboyer | aboyer:// | (TCP) 80 ou 443 | aboyer://nom d'hôte aboiement://nom d'hôte/device_key aboiement://nom d'hôte/device_key1/device_key2/device_keyN aboie://nom d'hôte aboie://nom d'hôte/device_key aboiements://nom d'hôte/device_key1/device_key2/device_keyN |
Chantifier | chanter:// | (TCP) 443 | chanter://jeton |
Discorde | discorde:// | (TCP) 443 | discorde://webhook_id/webhook_token discord://avatar@webhook_id/webhook_token |
Emby | emby:// ou embys:// | (TCP) 8096 | emby://utilisateur@nom d'hôte/ emby://utilisateur:mot de passe@nom d'hôte |
Enigme2 | enigma2:// ou enigma2s:// | (TCP) 80 ou 443 | enigma2://nom d'hôte |
FCM | fcm:// | (TCP) 443 | fcm://project@apikey/DEVICE_ID fcm://project@apikey/#TOPIC fcm://project@apikey/DEVICE_ID1/#topic1/#topic2/DEVICE_ID2/ |
Feishu | Feishu:// | (TCP) 443 | feishu://jeton |
Troupeau | troupeau:// | (TCP) 443 | troupeau://jeton troupeau://botname@token flock://app_token/u:userid troupeau://app_token/g:channel_id troupeau://app_token/u:userid/g:channel_id |
Chat Google | gchat:// | (TCP) 443 | gchat://workspace/key/token |
Gotifier | gotify:// ou gotifys:// | (TCP) 80 ou 443 | gotify://nom d'hôte/jeton gotifys://nom d'hôte/token?priority=high |
Grognement | grognement:// | (UDP) 23053 | grognement://nom d'hôte grognement://nom d'hôte:portno grognement://mot de passe@nom d'hôte grognement://mot de passe@nom d'hôte:port Remarque : vous pouvez également utiliser la version du paramètre get qui peut permettre à la requête growl de se comporter en utilisant l'ancien protocole v1.x. Un exemple ressemblerait à : growl://hostname?version=1 |
Guildé | doré:// | (TCP) 443 | guildé://webhook_id/webhook_token guildé://avatar@webhook_id/webhook_token |
Assistante à domicile | hassio:// ou hassios:// | (TCP) 8123 ou 443 | hassio://nom d'hôte/accesstoken hassio://user@hostname/accesstoken hassio://user:password@hostname:port/accesstoken hassio://nom d'hôte/optional/path/accesstoken |
IFTTT | ifttt:// | (TCP) 443 | ifttt://webhooksID/Event ifttt://webhooksID/Event1/Event2/EventN ifttt://webhooksID/Event1/?+Key=Value ifttt://webhooksID/Event1/?-Key=value1 |
Rejoindre | rejoindre:// | (TCP) 443 | rejoindre://apikey/device rejoindre://apikey/device1/device2/deviceN/ rejoindre://apikey/group rejoindre://apikey/groupA/groupB/groupN rejoindre://apikey/DeviceA/groupA/groupN/DeviceN/ |
KODI | kodi:// ou kodis:// | (TCP) 8080 ou 443 | kodi://nom d'hôte kodi://utilisateur@nom d'hôte kodi://utilisateur:mot de passe@nom d'hôte:port |
Kumulos | kumulos:// | (TCP) 443 | kumulos://apikey/serverkey |
Temps LaMetric | lamétrique:// | (TCP) 443 | lametric://apikey@device_ipaddr lametric://apikey@nom d'hôte:port lametric://client_id@client_secret |
Doubler | doubler:// | (TCP) 443 | ligne://Jeton@Utilisateur ligne://Token/User1/User2/UserN |
LunaMer | mer de lune:// | (TCP) 80 ou 443 | lunasea://user:pass@+FireBaseDevice/ lunasea://user:pass@FireBaseUser/ lunasea://user:pass@hostname/+FireBaseDevice/ lunasea://user:pass@hostname/@FireBaseUser/ |
Pistolet postal | mailgun:// | (TCP) 443 | mailgun://user@hostname/apikey mailgun://user@hostname/apikey/email mailgun://user@hostname/apikey/email1/email2/emailN mailgun://user@hostname/apikey/?name="From%20User" |
Mastodonte | mastodonte:// ou mastodontes:// | (TCP) 80 ou 443 | mastodonte://access_key@hostname mastodonte://access_key@hostname/@user mastodonte://access_key@hostname/@user1/@user2/@userN |
Matrice | matrice:// ou matrices:// | (TCP) 80 ou 443 | matrice://nom d'hôte matrice://utilisateur@nom d'hôte matrices://user:pass@hostname:port/#room_alias matrices://user:pass@hostname:port/!room_id matrices://user:pass@hostname:port/#room_alias/!room_id/#room2 matrices://token@hostname:port/?webhook=matrix matrice://user:token@hostname/?webhook=slack&format=markdown |
Le plus important | mmost:// ou mmosts:// | (TCP) 8065 | mmost://nom d'hôte/clé d'authentification mmost://nom d'hôte:80/authkey mmost://user@hostname:80/authkey mmost://nom d'hôte/authkey?channel=channel mmosts://nom d'hôte/clé d'authentification mmosts://user@hostname/authkey |
Microsoft Power Automate/Flux de travail (MSTeams) | flux de travail:// | (TCP) 443 | flux de travail://WorkflowID/Signature/ |
Équipes Microsoft | msteam:// | (TCP) 443 | msteams://TokenA/TokenB/TokenC/ |
Missclé | misskey:// ou misskeys:// | (TCP) 80 ou 443 | misskey://access_token@hostname |
MQTT | mqtt:// ou mqtts:// | (TCP) 1883 ou 8883 | mqtt://nom d'hôte/sujet mqtt://utilisateur@nom d'hôte/sujet mqtts://user:pass@hostname:9883/topic |
Suivantcloud | ncloud:// ou nclouds:// | (TCP) 80 ou 443 | ncloud://adminuser:pass@host/Utilisateur nclouds://adminuser:pass@host/User1/User2/UserN |
SuivantcloudTalk | nctalk:// ou nctalks:// | (TCP) 80 ou 443 | nctalk://user:pass@host/RoomId nctalks://user:pass@host/RoomId1/RoomId2/RoomIdN |
Avis | avis:// | (TCP) 443 | notification://Token/ |
Notifier | notifier:// | (TCP) 443 | notifier://apikey/#channel notifier://apikey/#channel1/#channel2/#channeln |
Avis | notification:// | (TCP) 443 | notification://ProjectID/MessageHook/ |
ntfy | ntfy:// | (TCP) 80 ou 443 | ntfy://sujet/ ntfys://sujet/ |
Bureau 365 | o365:// | (TCP) 443 | o365://TenantID:AccountEmail/ClientID/ClientSecret o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail1/TargetEmail2/TargetEmailN |
Un signal | un signal:// | (TCP) 443 | onesignal://AppID@APIKey/PlayerID onesignal://TemplateID:AppID@APIKey/UserID onesignal://AppID@APIKey/#IncludeSegment onesignal://AppID@APIKey/Email |
Opsgénie | Opsgénie:// | (TCP) 443 | opsgenie://APIKey opsgenie://APIKey/UserID opsgenie://APIKey/#Team opsgenie://APIKey/*Planification opsgenie://APIKey/^Escalation |
Service de téléavertisseur | service de téléavertisseur:// | (TCP) 443 | pagerduty://IntegrationKey@ApiKey pagerduty://IntegrationKey@ApiKey/Source/Component |
Arbre de téléavertisseur | arbre de pager:// | (TCP) 443 | pagertree://integration_id |
Plateforme d'analyse | parsep:// ou parseps:// | (TCP) 80 ou 443 | parsep://AppID:MasterKey@Hostname parseps://AppID:MasterKey@Hostname |
PopcornNotifier | Popcorn:// | (TCP) 443 | pop-corn://ApiKey/ToPhoneNo pop-corn://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ pop-corn://ApiKey/ToEmail pop-corn://ApiKey/ToEmail1/ToEmail2/ToEmailN/ pop-corn://ApiKey/ToPhoneNo1/ToEmail1/ToPhoneNoN/ToEmailN |
Rôder | rôder:// | (TCP) 443 | rôder://apikey rôder://apikey/providerkey |
PousserBullet | pbul:// | (TCP) 443 | pbul://jeton d'accès pbul://accesstoken/#channel pbul://accesstoken/A_DEVICE_ID pbul://accesstoken/[email protected] pbul://accesstoken/#channel/#channel2/[email protected]/DEVICE |
Poussoir | pjet:// ou pjets:// | (TCP) 80 ou 443 | pjet://nom d'hôte/secret pjet://nom d'hôte:port/secret pjets://secret@hostname/secret pjets://nom d'hôte:port/secret |
Pousser (Techulus) | pousser:// | (TCP) 443 | pousser://apikey/ |
Poussé | poussé:// | (TCP) 443 | poussé://appkey/appsecret/ poussé://appkey/appsecret/#ChannelAlias poussé://appkey/appsecret/#ChannelAlias1/#ChannelAlias2/#ChannelAliasN poussé://appkey/appsecret/@UserPushedID poussé://appkey/appsecret/@UserPushedID1/@UserPushedID2/@UserPushedIDN |
Poussez-moi | pousse-moi:// | (TCP) 443 | pushme://Jeton/ |
Jeu d'enfant | pauvre:// | (TCP) 443 | pover://user@token pover://user@token/DEVICE pover://user@token/DEVICE1/DEVICE2/DEVICEN Remarque : vous devez spécifier à la fois votre user_id et votre token |
Pousser plus sûrement | psafer:// ou psafers:// | (TCP) 80 ou 443 | psafer://clé privée psafers://privatekey/DEVICE psafer://privatekey/DEVICE1/DEVICE2/DEVICEN |
Arrogant | arrogant:// | (TCP) 443 | insistant://apikey/DEVICE insistant://apikey/DEVICE1/DEVICE2/DEVICEN insistant://apikey/TOPIC insistant://apikey/TOPIC1/TOPIC2/TOPICN |
PousserCerf | pushdeer:// ou pushdeers:// | (TCP) 80 ou 443 | pushdeer://pushKey pushdeer://nom d'hôte/pushKey pushdeer://nom d'hôte:port/pushKey |
reddit:// | (TCP) 443 | reddit://user:password@app_id/app_secret/subreddit reddit://user:password@app_id/app_secret/sub1/sub2/subN | |
Révolte | révolte:// | (TCP) 443 | révolte://bottoken/ChannelID révolte://bottoken/ChannelID1/ChannelID2/ChannelIDN |
Rocket.Chat | fusée:// ou fusées:// | (TCP) 80 ou 443 | rocket://user:password@hostname/RoomID/Channel fusées://user:password@hostname:443/#Channel1/#Channel1/RoomID rocket://user:password@hostname/#Channel fusée://webhook@nom d'hôte fusées://webhook@hostname/@User/#Channel |
RSyslog | rsyslog:// | (UDP) 514 | rsyslog://nom d'hôte rsyslog://nom d'hôte/installation |
Ryver | Ryver:// | (TCP) 443 | ryver://Organisation/Jeton ryver://botname@Organization/Token |
EnvoyerGrille | envoyer la grille:// | (TCP) 443 | sendgrid://APIToken:FromEmail/ sendgrid://APIToken:FromEmail/ToEmail sendgrid://APIToken:FromEmail/ToEmail1/ToEmail2/ToEmailN/ |
ServerChan | schan:// | (TCP) 443 | schan://sendkey/ |
API de signaux | signal:// ou signaux:// | (TCP) 80 ou 443 | signal://nom d'hôte:port/FromPhoneNo signal://nom d'hôte:port/FromPhoneNo/ToPhoneNo signal://nom d'hôte:port/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
SimplePush | pousser:// | (TCP) 443 | spush://apikey spush://salt:password@apikey spush://apikey?event=Apprise |
Mou | mou:// | (TCP) 443 | slack://TokenA/TokenB/TokenC/ slack://TokenA/TokenB/TokenC/Channel slack://botname@TokenA/TokenB/TokenC/Channel slack://user@TokenA/TokenB/TokenC/Channel1/Channel2/ChannelN |
SMTP2Go | smtp2go:// | (TCP) 443 | smtp2go://user@hostname/apikey smtp2go://user@hostname/apikey/email smtp2go://user@hostname/apikey/email1/email2/emailN smtp2go://user@hostname/apikey/?name="From%20User" |
SparkPost | poste d'étincelle:// | (TCP) 443 | sparkpost://user@hostname/apikey sparkpost://user@hostname/apikey/email sparkpost://user@hostname/apikey/email1/email2/emailN sparkpost://user@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 |
Discussion Synologie | synology:// ou synology:// | (TCP) 80 ou 443 | synology://nom d'hôte/jeton synology://nom d'hôte:port/jeton |
Journal système | journal système:// | n / A | journal système:// syslog://Installation |
Télégramme | tgramme:// | (TCP) 443 | tgram://bottoken/ChatID tgram://bottoken/ChatID1/ChatID2/ChatIDN |
Gazouillement | gazouillement:// | (TCP) 443 | Twitter://CKey/CSecret/AKey/ASecret twitter://user@CKey/CSecret/AKey/ASecret Twitter://CKey/CSecret/AKey/ASecret/User1/User2/User2 twitter://CKey/CSecret/AKey/ASecret?mode=tweet |
Torsion | torsion:// | (TCP) 443 | twist://mot de passe:connexion twist://mot de passe:login/#channel twist://password:login/#team:channel twist://password:login/#team:channel1/channel2/#team3:channel |
Équipes Webex (Cisco) | wxteams:// | (TCP) 443 | wxteams://Jeton |
Bot WeCom | wecombot:// | (TCP) 443 | wecombot://BotKey |
WhatsApp:// | (TCP) 443 | WhatsApp://AccessToken@FromPhoneID/ToPhoneNo WhatsApp://Template: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://nom d'hôte xbmc://utilisateur@nom d'hôte xbmc://utilisateur:mot de passe@nom d'hôte:port |
Bavarder | Zulip:// | (TCP) 443 | zulip://botname@Organization/Token zulip://botname@Organization/Token/Stream zulip://botname@Organization/Token/Email |
Service de notifications | Numéro de service | Port par défaut | Exemple de syntaxe |
---|---|---|---|
Les Afriques parlent | je parle:// | (TCP) 443 | atalk://AppUser@ApiKey/ToPhoneNo atalk://AppUser@ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Système automatisé de rapport de paquets (ARPS) | après:// | (TCP) 10152 | après://utilisateur:pass@callsign après://user:pass@callsign1/callsign2/callsignN |
AWSSNS | sns:// | (TCP) 443 | sns://AccessKeyID/AccessSecretKey/RegionName/+PhoneNo sns://AccessKeyID/AccessSecretKey/RegionName/+PhoneNo1/+PhoneNo2/+PhoneNoN sns://AccessKeyID/AccessSecretKey/RegionName/Topic sns://AccessKeyID/AccessSecretKey/RegionName/Topic1/Topic2/TopicN |
SMS en masse | SMS en vrac:// | (TCP) 443 | Bulksms://utilisateur:mot de passe@ToPhoneNo Bulksms://Utilisateur:Mot de passe@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
VS en vrac | en vrac : :// | (TCP) 443 | Bulkvs://utilisateur:mot de passe@FromPhoneNo Bulkvs://utilisateur:mot de passe@FromPhoneNo/ToPhoneNo Bulkvs://utilisateur:mot de passe@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
SMS en rafale | rafales:// | (TCP) 443 | burstsms://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo burstsms://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Cliquez sur Envoyer | cliquez sur envoyer:// | (TCP) 443 | cliquez sur envoyer://utilisateur:pass@PhoneNo cliquez sur envoyer://user:pass@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN |
DAPNET | dapnet:// | (TCP) 80 | dapnet://utilisateur:pass@callsign dapnet://user:pass@callsign1/callsign2/callsignN |
Réseaux D7 | d7sms:// | (TCP) 443 | d7sms://token@PhoneNo d7sms://token@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN |
DingTalk | dingtalk:// | (TCP) 443 | dingtalk://jeton/ dingtalk://token/ToPhoneNo dingtalk://token/ToPhoneNo1/ToPhoneNo2/ToPhoneNo1/ |
Free-Mobile | mobile gratuit:// | (TCP) 443 | freemobile://user@password/ |
httpSMS | httpsms:// | (TCP) 443 | httpsms://ApiKey@FromPhoneNo httpsms://ApiKey@FromPhoneNo/ToPhoneNo httpsms://ApiKey@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Kavenegar | kavenegar:// | (TCP) 443 | kavenegar://ApiKey/ToPhoneNo kavenegar://FromPhoneNo@ApiKey/ToPhoneNo kavenegar://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN |
MessageOiseau | 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/ |
Sept | Sept:// | (TCP) 443 | sept://ApiKey/FromPhoneNo sept://ApiKey/FromPhoneNo/ToPhoneNo sept://ApiKey/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Société Française du Radiotéléphone (SFR) | sfr:// | (TCP) 443 | sfr://user:password>@spaceId/ToPhoneNo sfr://user:password>@spaceId/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
API de signaux | signal:// ou signaux:// | (TCP) 80 ou 443 | signal://nom d'hôte:port/FromPhoneNo signal://nom d'hôte:port/FromPhoneNo/ToPhoneNo signal://nom d'hôte:port/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Péché | péché:// | (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/ |
SMSAigle | smseagle:// ou smseagles:// | (TCP) 80 ou 443 | smseagles://nom d'hôte:port/ToPhoneNo smseagles://nom d'hôte:port/@ToContact smseagles://nom d'hôte:port/#ToGroup smseagles://nom d'hôte:port/ToPhoneNo1/#ToGroup/@ToContact/ |
Gestionnaire de SMS | smsmgr:// | (TCP) 443 | smsmgr://ApiKey@ToPhoneNo smsmgr://ApiKey@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Passerelle Threema | troisma:// | (TCP) 443 | threema://GatewayID@secret/ToPhoneNo threema://GatewayID@secret/ToEmail threema://GatewayID@secret/ToThreemaID/ threema://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/ |
Messages vocaux | messages vocaux:// | (TCP) 443 | voipms://mot de passe:email/FromPhoneNo voipms://mot de passe:email/FromPhoneNo/ToPhoneNo voipms://mot de passe:email/FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Vonage (anciennement Nexmo) | nexmo:// | (TCP) 443 | nexmo://ApiKey:ApiSecret@FromPhoneNo nexmo://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo nexmo://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/ |
Service de notifications | Numéro de service | Port par défaut | Exemple de syntaxe |
---|---|---|---|
Notifications DBus Linux | dbus:// qt:// désinvolte:// kde:// | n / A | dbus:// qt:// désinvolte:// kde:// |
Notifications Linux Gnome | gnome:// | n / A | gnome:// |
Notifications MacOS X | macosx:// | n / A | macosx:// |
Notifications Windows | fenêtres:// | n / A | fenêtres:// |
Numéro de service | Port par défaut | Exemple de syntaxe |
---|---|---|
mailto:// | (TCP) 25 | mailto://userid:[email protected] mailto://domain.com?user=userid&pass=password mailto://domain.com:2525?user=userid&pass=password mailto://[email protected]&pass=password 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=password mailtos://domain.com:465?user=userid&pass=password mailtos://[email protected]&pass=password mailtos://mySendingUsername:[email protected][email protected] mailtos://userid:[email protected]?smtp=mail.example.com&[email protected]&name=no%20reply |
Apprise intègre certains services de messagerie (tels que Yahoo, fastmail, hotmail, gmail, etc.) qui simplifient considérablement le service mailto://. Voir plus de détails ici.
Méthode de publication | Numéro de service | Port par défaut | Exemple de syntaxe |
---|---|---|---|
Formulaire | formulaire:// ou formulaires:// | (TCP) 80 ou 443 | formulaire://nom d'hôte formulaire://utilisateur@nom d'hôte formulaire://utilisateur:mot de passe@nom d'hôte:port formulaire://nom d'hôte/a/chemin/vers/post/vers |
JSON | json:// ou jsons:// | (TCP) 80 ou 443 | json://nom d'hôte json://utilisateur@nom d'hôte json://utilisateur:mot de passe@nom d'hôte:port json://nom d'hôte/a/chemin/vers/post/vers |
XML | xml:// ou xmls:// | (TCP) 80 ou 443 | xml://nom d'hôte xml://utilisateur@nom d'hôte xml://utilisateur:mot de passe@nom d'hôte:port xml://nom d'hôte/a/chemin/vers/post/vers |
Le moyen le plus simple est d'installer ce package depuis pypi :
pip install apprise
Apprise est également conditionné sous forme de RPM et disponible via EPEL prenant en charge 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
Vous pouvez également consulter la version graphique d'Apprise pour centraliser votre configuration et vos notifications via une page Web gérable.
Un petit outil d'interface de ligne de commande (CLI) est également fourni avec ce package appelé apprendre . Si vous connaissez les URL des serveurs que vous souhaitez notifier, vous pouvez simplement les fournir toutes sur la ligne de commande et envoyer vos notifications de cette façon :
# 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 '
Personne ne veut divulguer ses informations d’identification à la vue de tous sur la ligne de commande. Aucun problème, nous prenons également en charge les fichiers de configuration. Il peut gérer aussi bien un format YAML spécifique qu'un format TEXT très simple. Vous pouvez également extraire ces fichiers de configuration via une requête HTTP ! Vous pouvez en savoir plus sur la structure attendue des fichiers de configuration ici.
# 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 prend également en charge les pièces jointes ! Spécifiez autant de pièces jointes à une notification que vous le souhaitez.
# 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
Pour créer votre propre hook schema://
personnalisé afin de pouvoir déclencher votre propre code personnalisé, incluez simplement le décorateur @notify
pour envelopper votre fonction.
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
Une fois que vous avez défini votre hook personnalisé, il vous suffit d'indiquer à Apprise où il se trouve au moment de l'exécution.
# 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: \
Vous pouvez en savoir plus sur la création de vos propres notifications et/ou hooks personnalisés ici.
Ceux qui utilisent l'interface de ligne de commande (CLI) peuvent également exploiter les variables d'environnement pour prédéfinir les paramètres par défaut :
Variable | Description |
---|---|
APPRISE_URLS | Spécifiez les URL par défaut à notifier SI aucune n’est autrement spécifiée explicitement sur la ligne de commande. Si le --config ( -c ) est spécifié, cela remplacera toute référence à cette variable. Utilisez un espace blanc et/ou une virgule ( , ) pour délimiter plusieurs entrées. |
APPRISE_CONFIG_PATH | Spécifiez explicitement le chemin de recherche de configuration à utiliser (en remplaçant la valeur par défaut). Le(s) chemin(s) défini(s) ici doivent pointer vers le nom de fichier absolu à ouvrir/référencer. Utilisez un point-virgule ( ; ), un saut de ligne ( n ) et/ou un retour chariot ( r ) pour délimiter plusieurs entrées. |
APPRISE_PLUGIN_PATH | Spécifiez explicitement le chemin de recherche du plugin personnalisé à utiliser (en remplaçant la valeur par défaut). Utilisez un point-virgule ( ; ), un saut de ligne ( n ) et/ou un retour chariot ( r ) pour délimiter plusieurs entrées. |
APPRISE_STORAGE_PATH | Spécifiez explicitement le chemin de stockage persistant à utiliser (en remplaçant la valeur par défaut). |
Pour envoyer une notification depuis votre application Python, procédez simplement comme suit :
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' ,
)
Les développeurs doivent également accéder aux fichiers de configuration. La bonne nouvelle est que leur utilisation implique simplement de déclarer un autre objet (appelé AppriseConfig ) que l'objet Apprise peut ingérer. Vous pouvez également librement mélanger et assortir les entrées de configuration et de notification aussi souvent que vous le souhaitez ! Vous pouvez en savoir plus sur la structure attendue des fichiers de configuration ici.
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' ,
)
Les pièces jointes sont très simples à envoyer grâce à l'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'
)
Pour envoyer plusieurs pièces jointes, utilisez simplement une liste, un ensemble ou un tuple :
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 ,
)
Par défaut, aucun plugin personnalisé n'est chargé pour ceux qui créent à partir de l'API Apprise. Il est à la discrétion des développeurs de charger des modules personnalisés. Mais si vous choisissez de le faire, c'est aussi simple que d'inclure la référence de chemin dans l'objet AppriseAsset()
avant l'initialisation de votre instance Apprise()
.
Par exemple:
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" )
Vous pouvez en savoir plus sur la création de vos propres notifications et/ou hooks personnalisés ici.
Le stockage persistant permet à Apprise de mettre éventuellement en cache les actions récurrentes sur le disque. Cela peut réduire considérablement la surcharge utilisée pour envoyer une notification.
Il existe 3 états opérationnels de stockage persistant qu'Apprise peut utiliser :
auto
: vidage des informations de cache collectées vers le système de fichiers à la demande. Cette option est incroyablement légère. Il s'agit du comportement par défaut pour toute utilisation de la CLI.flush
: vide toutes les informations du cache dans le système de fichiers lors de chaque transaction.memory
: désactivez efficacement le stockage persistant. Toute mise en cache des données requise par chaque plugin utilisé est effectuée en mémoire. Apprise fonctionne efficacement comme il le faisait toujours avant que le stockage persistant ne soit disponible. Ce paramètre garantit qu’aucun contenu n’est écrit sur le disque.auto
ou flush
. Cela se fait via l'objet AppriseAsset()
et est expliqué plus loin dans cette documentation. Vous pouvez fournir le storage
de mots clés sur votre appel CLI pour voir les options de stockage persistant à votre disposition.
# 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
Vous pouvez également filtrer vos résultats en ajoutant des balises et/ou des identifiants d'URL. Lorsque vous obtenez une liste ( apprise storage list
), vous pouvez voir :
# 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
Les états du cache (stockage persistant) sont :
unused
: ce plugin n'a rien validé sur le disque à des fins de réutilisation/mise en cacheactive
: Ce plugin a écrit du contenu sur le disque. Ou à tout le moins, il a préparé un emplacement de stockage persistant dans lequel il peut écrire.stale
: le système a détecté un emplacement vers lequel une URL a pu être écrite dans le passé, mais il n'y a aucun lien vers cet emplacement à l'aide des URL fournies. Il est probable qu’il gaspille de l’espace ou qu’il ne soit plus d’aucune utilité.Vous pouvez utiliser ces informations pour filtrer vos résultats en spécifiant les valeurs d'ID d'URL (UID) après votre commande. Par exemple:
# 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
Lorsque vous utilisez la CLI, le stockage persistant est défini sur le mode de fonctionnement auto
par défaut, vous pouvez modifier cela en fournissant --storage-mode=
( -SM
) pendant vos appels. Si vous voulez vous assurer qu’il est toujours défini sur une valeur de votre choix.
Pour plus d’informations sur le stockage persistant, visitez ici.
Pour les développeurs, le stockage persistant est défini par défaut dans le mode opérationnel de memory
.
Il est à la discrétion des développeurs de l'activer (en le basculant sur auto
ou flush
). Si vous choisissez de le faire : c'est aussi simple que d'inclure les informations dans l'objet AppriseAsset()
avant l'initialisation de votre instance Apprise()
.
Par exemple:
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 )
Pour plus d’informations sur le stockage persistant, visitez ici.
Si vous souhaitez en savoir plus à ce sujet et sur d'autres méthodes permettant de personnaliser vos propres notifications, veuillez consulter les liens suivants :
Vous voulez contribuer à améliorer Apprise ?