ntfy Delphi 相关消息接口文档

ntfy Delphi 相关消息接口文档_第1张图片

关联文档:

  1. ntfy 实现消息订阅和通知(无需注册、无需服务器,太好了)_海纳老吴的博客-CSDN博客
  2. 群晖 nas 自建 ntfy 通知服务(梦寐以求)_海纳老吴的博客-CSDN博客

目录

一、消息实体对象接口

1. 消息发布方消息接口

2. 消息订阅方接口


一、消息实体对象接口

1. 消息发布方消息接口
uses
  Notify.Notification.Contract;


//实际定义的接口
INotifyNotification = interface
    ['{BE2E83B7-C39E-4985-93F9-4468976B6AC5}']
    function Topic: String; overload;
    function Topic(const AValue: String): INotifyNotification; overload;
    function MessageContent: String; overload;
    function MessageContent(const AValue: String): INotifyNotification; overload;
    function Title: String; overload;
    function Title(const AValue: String): INotifyNotification; overload;
    function Tags: INotifyTags; overload;
    function Tags(const AValue: INotifyTags): INotifyNotification; overload;
    function Priority: TNotifyPriority; overload;
    function Priority(const AValue: TNotifyPriority): INotifyNotification; overload;
    function AttachURL(const AValue: String): INotifyNotification; overload;
    function FilePath: String; overload;
    function AttachFile(const AValue: String): INotifyNotification; overload;
    function FileName: String; overload;
    function Click: String overload;
    function Click(const AValue: String): INotifyNotification; overload;
    function Action: INotifyAction; overload;
    function Action(const AValue: INotifyAction): INotifyNotification; overload;
    function ClearActions: INotifyNotification; overload;
    function AsJSONString: String;
    function Email: String; overload;
    function Email(const AValue: String): INotifyNotification; overload;
    function Icon: String; overload;
    function Icon(const AValue: String): INotifyNotification; overload;
    function Delay: String; overload;
    function Delay(const AValue: String): INotifyNotification; overload;
  end;

接口说明:

序号 参数(函数) 说明
1 Topic string:字面意思是主题,实际就是消息发布方和订阅放约定的"暗号"。只有这个"暗号"对上了,订阅放才能收到发布方的消息。
2 MessageContent string:发布的消息内容字符串,最大长度4096字节
3 Title string:标题,消息体的标题,一般设置为简短的URL
4 Tags INotifyTags:

可以用表情符号和其他相关字符串标记信息:

表情符号: 如果标签与表情符号简码相匹配,就会被转换为表情符号并添加到标题或信息中。
其他标签: 如果标签不匹配,则会在通知下方列出。
此功能对于警告(⚠️、️ 或 )等内容非常有用,但也可以简单地标记其他信息(如脚本名称、主机名等)。请使用表情符号简码列表了解哪些标记可以转换为表情符号。

参见:Sending messages - ntfy

5 Priority TNotifyPriority:所有信息都有一个优先级,它定义了手机通知你的紧急程度。总共分5级,默认是3,数值大表示优先级高。
6 AttachURL INotifyNotification:

您可以使用外部 URL 来指定附件的托管位置,而不是向手机发送本地文件。这可以是 Dropbox 链接、社交媒体上的文件或任何其他公开可用的 URL。由于文件是外部托管的,因此上述的过期时间或大小限制在此不适用。

要附加外部文件,只需输入AValue参数即可,例如 https://example.com/flower.jpg 会生成文件名 flower.jpg)。要覆盖此文件名,可以发送 X-Filename 标头或查询参数(或其任何别名 Filename、File 或 f)。

7 AttachFile

要将电脑中的文件作为附件发送,可以将其作为 PUT 请求主体发送。如果信息大于最大信息大小(4,096 字节)或包含非 UTF-8 字符,ntfy 服务器会自动检测 MIME 类型和大小,并将信息作为附件文件发送。要以附件形式发送较小的纯文本信息或文件,必须通过 X-Filename 标头或查询参数(或其别名 Filename、File 或 f)传递文件名。

默认情况下,按照 ntfy.sh 的配置方式,附件的最大大小为 15 MB(每个访问者的附件总大小为 100 MB)。附件会在 3 小时后过期,这通常会给用户足够的时间下载,或让安卓应用自动下载。还请查看以下其他限制。

8 Click string:您可以定义点击通知时打开的 URL。如果您的通知与 Zabbix 警报或您希望提供深度链接的事务有关,这可能会很有用。点击通知将打开网页浏览器(或应用程序)并打开网站。

要定义通知的点击操作,请将 URL 作为 X-Click 标头(或其别名 Click)的值。如果传递的是网站 URL(http:// 或 https://),网络浏览器就会打开。如果传递的是可由其他应用程序处理的其他 URI,则负责的应用程序可能会打开。

例如

http:// 或 https:// 将打开浏览器(如果注册了 URL,则打开应用程序)
mailto:链接将打开您的邮件应用程序,如 mailto:[email protected]
geo:链接将打开谷歌地图,例如 geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+CA
ntfy:// 链接将打开 ntfy(参见 ntfy:// 链接),例如 ntfy://ntfy.sh/stats
twitter:// 链接将打开 Twitter,例如 twitter://user?screen_name=...
...
 
9 Action

您可以为通知添加操作按钮,让自己直接对通知做出反应。这一点非常有用,而且应用广泛。

您可以控制家用电器(打开/关闭车库门、改变恒温器的温度......),对常见的监控警报做出反应(磁盘已满时清除日志......),还可以做很多其他事情。一切尽在掌握。

目前支持以下操作:

查看: 点击操作按钮后打开网站或应用程序
广播: 广播:点击操作按钮时发送安卓广播意图(仅支持安卓系统)
http:点击操作按钮时发送 HTTP POST/GET/PUT 请求

10 Email 可以通过邮件发布消息
11 Icon 您可以在通知文本旁边添加一个图标。只需通过 X-Icon 标头或查询参数(或其别名 Icon)来指定图标所在的 URL。客户端将自动下载该图标(除非该图标已缓存在本地,且使用时间不超过 24 小时),并将其显示在通知中。图标会缓存在客户端本地,直到通知被删除。目前只支持 JPEG 和 PNG 图像。
12 Delay

您可以延迟发送信息,让 ntfy 在稍后日期发送。这可以用来给自己发送提醒信息,甚至在以后执行命令(如果订阅者对信息采取了行动)。

使用方法非常简单。您可以使用 X-Delay 标头(或其任何别名:Delay、X-At、At、X-In 或 In)设置发送时间,可以指定 Unix 时间戳(如 1639194738)、持续时间(如 30m、3h、2 天)或自然语言时间字符串(如上午 10 点、晚上 8:30、明天、下午 3 点、星期二、上午 7 点等)。

从今天起,您可以设置的最小延迟时间为 10 秒,最大延迟时间为 3 天。目前无法进行其他配置。

2. 消息订阅方接口
unit Notify.Event.Contract;

interface

uses
  System.SysUtils,
  Notify.Types,
  Notify.Action.Contract,
  Notify.Attachment.Contract,
  System.Generics.Collections;

type

  INotifyEventActions = TDictionary;

  INotifyEvent = interface
    ['{0342B585-BB88-4A63-9C41-8848B90B6042}']
    function Id: String; overload;
    function Id(const AValue: String): INotifyEvent; overload;
    function Time: Integer; overload;
    function Time(const AValue: Integer): INotifyEvent; overload;
    function Event: String; overload;
    function Event(const AValue: String): INotifyEvent; overload;
    function Topic: String; overload;
    function Topic(const AValue: String): INotifyEvent; overload;
    function Tags: TArray; overload;
    function Tags(const AValue: TArray): INotifyEvent; overload;
    function Click: String; overload;
    function Click(const AValue: String): INotifyEvent; overload;
    function Title: String; overload;
    function Title(const AValue: String): INotifyEvent; overload;
    function MessageContent: String; overload;
    function MessageContent(const AValue: String): INotifyEvent; overload;
    function Priority: TNotifyPriority; overload;
    function Priority(const AValue: TNotifyPriority): INotifyEvent; overload;
    function Action: INotifyAction; overload;
    function Action(const AValue: INotifyAction): INotifyEvent; overload;
    function Actions: INotifyEventActions;
    function Attachment: INotifyAttachment; overload;
    function Attachment(const AValue: INotifyAttachment): INotifyEvent; overload;
    function Icon: String; overload;
    function Icon(const AValue: String): INotifyEvent; overload;
  end;

  TNotifyEventProc = TProc;

implementation

end.

接口说明:

订阅方的主体参数和发布方是一致的,但是订阅方多了如下参数:

Field Required Type Example Description
id ✔️ string hwQ2YpKdmg Randomly chosen message identifier
time ✔️ number 1635528741 Message date time, as Unix time stamp
expires (✔)️ number 1673542291 Unix time stamp indicating when the message will be deleted, not set if Cache: no is sent
event ✔️ openkeepalivemessage, or poll_request message Message type, typically you'd be only interested in message
topic ✔️ string topic1,topic2 Comma-separated list of topics the message is associated with; only one for all message events, but may be a list in open events
message - string Some message Message body; always present in message events
title - string Some title Message title; if not set defaults to ntfy.sh/
tags - string array ["tag1","tag2"] List of tags that may or not map to emojis
priority - 1, 2, 3, 4, or 5 4 Message priority with 1=min, 3=default and 5=max
click - URL https://example.com Website opened when notification is clicked
actions - JSON array see actions buttons Action buttons that can be displayed in the notification
attachment - JSON object see below Details about an attachment (name, URL, size, ...)

Attachment (part of the message, see attachments for details):

Field Required Type Example Description
name ✔️ string attachment.jpg Name of the attachment, can be overridden with X-Filename, see attachments
url ✔️ URL https://example.com/file.jpg URL of the attachment
type -️ mime type image/jpeg Mime type of the attachment, only defined if attachment was uploaded to ntfy server
size -️ number 33848 Size of the attachment in bytes, only defined if attachment was uploaded to ntfy server
expires -️ number 1635528741 Attachment expiry date as Unix time stamp, only defined if attachment was uploaded to ntfy server

你可能感兴趣的:(Delphi,ntfy,Delphi,ntfy,ntfy消息接口)